adding pods method of package managing
@@ -0,0 +1,103 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@class FIRAuth;
|
||||
@class FIRUser;
|
||||
@class FUIAuth;
|
||||
@class UIViewController;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @protocol FUIAccountSettingsOperationUIDelegate
|
||||
@brief A delegate that provides UI methods for @c FUIAccountSettingsOperation.
|
||||
*/
|
||||
@protocol FUIAccountSettingsOperationUIDelegate <NSObject>
|
||||
|
||||
/** @property auth
|
||||
@brief The @c FIRAuth instance of the application.
|
||||
*/
|
||||
@property(nonatomic, strong, readonly) FIRAuth *auth;
|
||||
|
||||
/** @property authUI
|
||||
@brief The @c FUIAuth instance of the application.
|
||||
*/
|
||||
@property(nonatomic, strong, readonly) FUIAuth *authUI;
|
||||
|
||||
/** @fn incrementActivity
|
||||
@brief Increment the current activity count. If there's positive number of activities, display
|
||||
and animate the activity indicator with a short period of delay.
|
||||
@remarks Calls to @c incrementActivity and @c decrementActivity should be balanced.
|
||||
*/
|
||||
- (void)incrementActivity;
|
||||
|
||||
/** @fn decrementActivity
|
||||
@brief Decrement the current activity count. If the count reaches 0, stop and hide the
|
||||
activity indicator.
|
||||
@remarks Calls to @c incrementActivity and @c decrementActivity should be balanced.
|
||||
*/
|
||||
- (void)decrementActivity;
|
||||
|
||||
/** @fn presentBaseController
|
||||
@brief Called when initial Account Settings controller needs to be presented.
|
||||
*/
|
||||
- (void)presentBaseController;
|
||||
|
||||
/** @fn presentViewController:
|
||||
@brief Presents (pops) @c UIViewController from navigation stack.
|
||||
*/
|
||||
- (void)presentViewController:(UIViewController *)controller;
|
||||
|
||||
/** @fn pushViewController:
|
||||
@brief Adds (pushes) @c UIViewController to navigation stack.
|
||||
*/
|
||||
- (void)pushViewController:(UIViewController *)controller;
|
||||
|
||||
/** @fn presentingController
|
||||
@brief Provides access to presenting controller.
|
||||
*/
|
||||
- (UIViewController *)presentingController;
|
||||
|
||||
@end
|
||||
|
||||
/** @class FUIAccountSettingsOperation
|
||||
@brief Handles logic for every specific user operation.
|
||||
*/
|
||||
@interface FUIAccountSettingsOperation : NSObject
|
||||
|
||||
/** @fn executeOperationWithDelegate:showDialog:
|
||||
@brief Creates new instance of @c FUIAccountSettingsOperation and executes logic
|
||||
associated with it.
|
||||
@param delegate UI delegate which handles all UI related logic.
|
||||
@param showDialog Determines if operation specific UI should be started with confirmation
|
||||
dialog.
|
||||
@return Instance of the executed operation.
|
||||
*/
|
||||
+ (instancetype)executeOperationWithDelegate:(id<FUIAccountSettingsOperationUIDelegate>)delegate
|
||||
showDialog:(BOOL)showDialog;
|
||||
|
||||
/** @fn executeOperationWithDelegate:
|
||||
@brief Creates new instance of @c FUIAccountSettingsOperation and executes logic
|
||||
associated with it. New flow is started with new view.
|
||||
@param delegate UI delegate which handles all UI related logic.
|
||||
@return Instance of the executed operation.
|
||||
*/
|
||||
+ (instancetype)executeOperationWithDelegate:(id<FUIAccountSettingsOperationUIDelegate>)delegate;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,274 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperation_Internal.h"
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperationDeleteAccount.h"
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperationForgotPassword.h"
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperationSignOut.h"
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperationUnlinkAccount.h"
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperationUpdateEmail.h"
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperationUpdateName.h"
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperationUpdatePassword.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthBaseViewController_Internal.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthErrorUtils.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuth_Internal.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@implementation FUIAccountSettingsOperation
|
||||
|
||||
+ (instancetype)executeOperationWithDelegate:(id<FUIAccountSettingsOperationUIDelegate>)delegate
|
||||
showDialog:(BOOL)showDialog {
|
||||
FUIAccountSettingsOperation *operation = [[self alloc] initWithDelegate:delegate];
|
||||
[operation execute:showDialog];
|
||||
return operation;
|
||||
}
|
||||
|
||||
+ (instancetype)executeOperationWithDelegate:(id<FUIAccountSettingsOperationUIDelegate>)delegate {
|
||||
FUIAccountSettingsOperation *operation = [[self alloc] initWithDelegate:delegate];
|
||||
[operation execute:NO];
|
||||
return operation;
|
||||
}
|
||||
|
||||
- (instancetype)initWithDelegate:(id<FUIAccountSettingsOperationUIDelegate>)operationDelegate {
|
||||
if (self = [super init]) {
|
||||
_delegate = operationDelegate;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)execute:(BOOL)showDialog {
|
||||
NSAssert(NO, @"Expected execute: to be overwritten by subclass");
|
||||
}
|
||||
|
||||
- (FUIAccountSettingsOperationType)operationType {
|
||||
NSAssert(NO, @"Expected execute: to be overwritten by subclass");
|
||||
return FUIAccountSettingsOperationTypeUnsupported;
|
||||
}
|
||||
|
||||
#pragma mark - protected methods
|
||||
|
||||
- (void)finishOperationWithError:(nullable NSError *)error {
|
||||
if (error) {
|
||||
switch (error.code) {
|
||||
case FIRAuthErrorCodeEmailAlreadyInUse:
|
||||
[self showAlertWithMessage:FUILocalizedString(kStr_EmailAlreadyInUseError)];
|
||||
break;
|
||||
case FIRAuthErrorCodeInvalidEmail:
|
||||
[self showAlertWithMessage:FUILocalizedString(kStr_InvalidEmailError)];
|
||||
break;
|
||||
case FIRAuthErrorCodeWeakPassword:
|
||||
[self showAlertWithMessage:FUILocalizedString(kStr_WeakPasswordError)];
|
||||
break;
|
||||
case FIRAuthErrorCodeTooManyRequests:
|
||||
[self showAlertWithMessage:FUILocalizedString(kStr_SignUpTooManyTimesError)];
|
||||
break;
|
||||
case FIRAuthErrorCodeWrongPassword:
|
||||
[self showAlertWithMessage:FUILocalizedString(kStr_WrongPasswordError)];
|
||||
break;
|
||||
case FIRAuthErrorCodeUserNotFound:
|
||||
[self showAlertWithMessage:FUILocalizedString(kStr_UserNotFoundError)];
|
||||
break;
|
||||
case FIRAuthErrorCodeUserDisabled:
|
||||
[self showAlertWithMessage:FUILocalizedString(kStr_AccountDisabledError)];
|
||||
break;
|
||||
case FUIAuthErrorCodeCantFindProvider: {
|
||||
NSString *message = [NSString stringWithFormat:FUILocalizedString(kStr_CantFindProvider),
|
||||
error.userInfo[FUIAuthErrorUserInfoProviderIDKey]];
|
||||
[self showAlertWithMessage:message];
|
||||
break;
|
||||
}
|
||||
case FIRAuthErrorCodeUserMismatch:
|
||||
[self showAlertWithMessage:FUILocalizedString(kStr_EmailsDontMatch)];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
[self.delegate.authUI invokeOperationCallback:[self operationType] error:error];
|
||||
}
|
||||
|
||||
- (void)showSelectProviderDialogWithAlertTitle:(nullable NSString *)title
|
||||
alertMessage:(nullable NSString *)message
|
||||
alertCloseButton:(nullable NSString *)closeActionTitle
|
||||
providerHandler:(nullable FUIAccountSettingsChooseProviderHandler)
|
||||
handler; {
|
||||
UIAlertController *alert =
|
||||
[UIAlertController alertControllerWithTitle:title
|
||||
message:message
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
for (id<FIRUserInfo> provider in self.delegate.auth.currentUser.providerData) {
|
||||
NSString *providerTitle =
|
||||
[NSString stringWithFormat:FUILocalizedString(kStr_SignInWithProvider),
|
||||
[FUIAuthBaseViewController providerLocalizedName:provider.providerID]];
|
||||
UIAlertAction* action = [UIAlertAction actionWithTitle:providerTitle
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction *_Nonnull action) {
|
||||
if (handler) {
|
||||
handler(provider);
|
||||
}
|
||||
}];
|
||||
[alert addAction:action];
|
||||
}
|
||||
UIAlertAction* closeButton = [UIAlertAction actionWithTitle:closeActionTitle
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:nil];
|
||||
[alert addAction:closeButton];
|
||||
[self.delegate presentViewController:alert];
|
||||
}
|
||||
|
||||
- (void)showAlertWithMessage:(NSString *)message {
|
||||
UIAlertController *alertController =
|
||||
[UIAlertController alertControllerWithTitle:nil
|
||||
message:message
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
UIAlertAction *okAction = [UIAlertAction actionWithTitle:FUILocalizedString(kStr_OK)
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:nil];
|
||||
[alertController addAction:okAction];
|
||||
[self.delegate presentViewController:alertController];
|
||||
}
|
||||
|
||||
- (void)reauthenticateWithProvider:(NSString *)providerID
|
||||
actionHandler:(nullable FUIAccountSettingsReauthenticateHandler)handler {
|
||||
|
||||
id<FUIAuthProvider> providerUI;
|
||||
for (id<FUIAuthProvider> authProvider in self.delegate.authUI.providers) {
|
||||
if ([providerID isEqualToString:authProvider.providerID]) {
|
||||
providerUI = authProvider;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!providerUI) {
|
||||
NSError *error = [FUIAuthErrorUtils errorWithCode:FUIAuthErrorCodeCantFindProvider
|
||||
userInfo:@{
|
||||
FUIAuthErrorUserInfoProviderIDKey : providerID
|
||||
}];
|
||||
[self finishOperationWithError:error];
|
||||
return;
|
||||
}
|
||||
|
||||
[self.delegate incrementActivity];
|
||||
// Sign out first to make sure sign in starts with a clean state.
|
||||
[providerUI signOut];
|
||||
[providerUI signInWithDefaultValue:self.delegate.auth.currentUser.email
|
||||
presentingViewController:[self.delegate presentingController]
|
||||
completion:^(FIRAuthCredential *_Nullable credential,
|
||||
NSError *_Nullable error,
|
||||
_Nullable FIRAuthResultCallback result,
|
||||
NSDictionary *_Nullable userInfo) {
|
||||
if (error) {
|
||||
[self.delegate decrementActivity];
|
||||
[self finishOperationWithError:error];
|
||||
if (result) {
|
||||
result(nil, error);
|
||||
}
|
||||
return;
|
||||
}
|
||||
[self.delegate.auth.currentUser
|
||||
reauthenticateWithCredential:credential
|
||||
completion:^(FIRAuthDataResult *_Nullable authResult,
|
||||
NSError *_Nullable reauthError) {
|
||||
[self.delegate decrementActivity];
|
||||
if (result) {
|
||||
result(self.delegate.auth.currentUser, reauthError);
|
||||
}
|
||||
if (error) {
|
||||
[self finishOperationWithError:error];
|
||||
} else {
|
||||
if (handler) {
|
||||
handler();
|
||||
[self finishOperationWithError:error];
|
||||
}
|
||||
}
|
||||
}];
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)reauthenticateWithPassword:(NSString *)password
|
||||
actionHandler:(nullable FUIAccountSettingsReauthenticateHandler)handler {
|
||||
if (password.length <= 0) {
|
||||
[self showAlertWithMessage:FUILocalizedString(kStr_InvalidPasswordError)];
|
||||
return;
|
||||
}
|
||||
|
||||
[self.delegate incrementActivity];
|
||||
|
||||
if (self.delegate.auth.currentUser.email == nil) {
|
||||
NSLog(@"FirebaseUI: Expected nonnull email during email/password reauthentication");
|
||||
return;
|
||||
}
|
||||
[self.delegate.auth signInWithEmail:self.delegate.auth.currentUser.email
|
||||
password:password
|
||||
completion:^(FIRAuthDataResult *authResult, NSError *error) {
|
||||
[self.delegate decrementActivity];
|
||||
|
||||
[self finishOperationWithError:error];
|
||||
if (!error && handler) {
|
||||
handler();
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)showVerifyDialogWithMessage:(NSString *)message
|
||||
providerHandler:(nullable FUIAccountSettingsReauthenticateHandler)handler {
|
||||
[self showSelectProviderDialogWithAlertTitle:FUILocalizedString(kStr_VerifyItsYou)
|
||||
alertMessage:message
|
||||
alertCloseButton:FUILocalizedString(kStr_Cancel)
|
||||
providerHandler:^(id<FIRUserInfo> provider) {
|
||||
if (![provider.providerID isEqualToString:FIREmailAuthProviderID]) {
|
||||
[self reauthenticateWithProvider:provider.providerID actionHandler:handler];
|
||||
} else {
|
||||
[self showVerifyPasswordViewWithMessage:message providerHandler:handler];
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)showVerifyPasswordViewWithMessage:(NSString *)message
|
||||
providerHandler:(nullable FUIAccountSettingsReauthenticateHandler)
|
||||
handler {
|
||||
__block FUIStaticContentTableViewCell *passwordCell =
|
||||
[FUIStaticContentTableViewCell cellWithTitle:FUILocalizedString(kStr_Password)
|
||||
value:nil
|
||||
placeholder:FUILocalizedString(kStr_PlaceholderEnterPassword)
|
||||
type:FUIStaticContentTableViewCellTypePassword
|
||||
action:nil];
|
||||
FUIStaticContentTableViewContent *contents =
|
||||
[FUIStaticContentTableViewContent contentWithSections:@[
|
||||
[FUIStaticContentTableViewSection sectionWithTitle:nil
|
||||
cells:@[passwordCell]],
|
||||
]];
|
||||
|
||||
UIViewController *controller =
|
||||
[[FUIStaticContentTableViewController alloc] initWithContents:contents
|
||||
nextTitle:FUILocalizedString(kStr_Next)
|
||||
nextAction:^{
|
||||
[self reauthenticateWithPassword:passwordCell.value actionHandler:handler];
|
||||
}
|
||||
headerText:message
|
||||
footerText:
|
||||
FUILocalizedString(kStr_ForgotPassword)
|
||||
footerAction:^{
|
||||
[FUIAccountSettingsOperationForgotPassword executeOperationWithDelegate:self.delegate];
|
||||
}];
|
||||
controller.title = FUILocalizedString(kStr_VerifyItsYou);
|
||||
[self.delegate pushViewController:controller];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,36 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperation.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @class FUIAccountSettingsOperationDeleteAccount
|
||||
@brief Handles logic of account deletion operation.
|
||||
*/
|
||||
@interface FUIAccountSettingsOperationDeleteAccount : FUIAccountSettingsOperation
|
||||
|
||||
/** @fn executeOperationWithDelegate:
|
||||
@brief Instead use @c executeOperationWithDelegate:showDialog:
|
||||
@param delegate UI delegate which handles all UI related logic.
|
||||
@return Instance of the executed operation.
|
||||
*/
|
||||
+ (instancetype)executeOperationWithDelegate:(id<FUIAccountSettingsOperationUIDelegate>)delegate
|
||||
NS_UNAVAILABLE;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,135 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperationDeleteAccount.h"
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperation_Internal.h"
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperationForgotPassword.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@implementation FUIAccountSettingsOperationDeleteAccount
|
||||
|
||||
- (FUIAccountSettingsOperationType)operationType {
|
||||
return FUIAccountSettingsOperationTypeDeleteAccount;
|
||||
}
|
||||
|
||||
- (void)execute:(BOOL)showDialog {
|
||||
if (showDialog) {
|
||||
[self showDeleteAccountDialog];
|
||||
} else {
|
||||
[self showDeleteAccountViewWithPassword];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)showDeleteAccountDialog {
|
||||
[self showSelectProviderDialogWithAlertTitle:
|
||||
FUILocalizedString(kStr_DeleteAccountConfirmationTitle)
|
||||
alertMessage:FUILocalizedString(kStr_DeleteAccountBody)
|
||||
alertCloseButton:FUILocalizedString(kStr_Cancel)
|
||||
providerHandler:^(id<FIRUserInfo> provider) {
|
||||
if (![provider.providerID isEqualToString:FIREmailAuthProviderID]) {
|
||||
[self reauthenticateWithProvider:provider.providerID actionHandler:^{
|
||||
[self showDeleteAccountView];
|
||||
}];
|
||||
} else {
|
||||
[self showDeleteAccountViewWithPassword];
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)showDeleteAccountViewWithPassword {
|
||||
__block FUIStaticContentTableViewCell *passwordCell =
|
||||
[FUIStaticContentTableViewCell cellWithTitle:FUILocalizedString(kStr_Password)
|
||||
value:nil
|
||||
placeholder:FUILocalizedString(kStr_PlaceholderEnterPassword)
|
||||
type:FUIStaticContentTableViewCellTypePassword
|
||||
action:nil];
|
||||
FUIStaticContentTableViewContent *contents =
|
||||
[FUIStaticContentTableViewContent contentWithSections:@[
|
||||
[FUIStaticContentTableViewSection sectionWithTitle:nil cells:@[passwordCell]],
|
||||
]];
|
||||
|
||||
NSString *message = FUILocalizedString(kStr_DeleteAccountConfirmationMessage);
|
||||
UIViewController *controller =
|
||||
[[FUIStaticContentTableViewController alloc]
|
||||
initWithContents:contents
|
||||
nextTitle:FUILocalizedString(kStr_Delete)
|
||||
nextAction:^{ [self deleteCurrentAccountWithPassword:passwordCell.value]; }
|
||||
headerText:message
|
||||
footerText:FUILocalizedString(kStr_ForgotPassword)
|
||||
footerAction:^{
|
||||
[FUIAccountSettingsOperationForgotPassword executeOperationWithDelegate:self.delegate];
|
||||
}];
|
||||
controller.title = FUILocalizedString(kStr_DeleteAccountControllerTitle);
|
||||
[self.delegate pushViewController:controller];
|
||||
}
|
||||
|
||||
- (void)showDeleteAccountView {
|
||||
NSString *message = FUILocalizedString(kStr_DeleteAccountConfirmationMessage);
|
||||
UIViewController *controller =
|
||||
[[FUIStaticContentTableViewController alloc] initWithContents:nil
|
||||
nextTitle:FUILocalizedString(kStr_Delete)
|
||||
nextAction:^{
|
||||
[self onDeleteAccountViewNextAction];
|
||||
}
|
||||
headerText:message];
|
||||
controller.title = FUILocalizedString(kStr_DeleteAccountControllerTitle);
|
||||
[self.delegate pushViewController:controller];
|
||||
|
||||
}
|
||||
|
||||
- (void)onDeleteAccountViewNextAction {
|
||||
UIAlertController *alertController =
|
||||
[UIAlertController alertControllerWithTitle:FUILocalizedString(kStr_DeleteAccountConfirmationTitle)
|
||||
message:FUILocalizedString(kStr_ActionCantBeUndone)
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
UIAlertAction *deleteAction =
|
||||
[UIAlertAction actionWithTitle:FUILocalizedString(kStr_DeleteAccountControllerTitle)
|
||||
style:UIAlertActionStyleDestructive
|
||||
handler:^(UIAlertAction *_Nonnull action) {
|
||||
[self deleteCurrentAccount];
|
||||
}];
|
||||
UIAlertAction *action =
|
||||
[UIAlertAction actionWithTitle:FUILocalizedString(kStr_Cancel)
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:nil];
|
||||
[alertController addAction:deleteAction];
|
||||
[alertController addAction:action];
|
||||
[self.delegate presentViewController:alertController];
|
||||
|
||||
}
|
||||
|
||||
- (void)deleteCurrentAccountWithPassword:(NSString *)password {
|
||||
[self reauthenticateWithPassword:password actionHandler:^{
|
||||
[self deleteCurrentAccount];
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)deleteCurrentAccount {
|
||||
[self.delegate incrementActivity];
|
||||
[self.delegate.auth.currentUser deleteWithCompletion:^(NSError *_Nullable error) {
|
||||
[self.delegate decrementActivity];
|
||||
[self finishOperationWithError:error];
|
||||
if (!error) {
|
||||
[self.delegate presentBaseController];
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,38 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperation.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @class FUIAccountSettingsOperationForgotPassword
|
||||
@brief Handles logic of 'forgot password' operation.
|
||||
*/
|
||||
@interface FUIAccountSettingsOperationForgotPassword : FUIAccountSettingsOperation
|
||||
|
||||
/** @fn executeOperationWithDelegate:showDialog:
|
||||
@brief Instead use @c executeOperationWithDelegate:
|
||||
@param delegate UI delegate which handles all UI related logic.
|
||||
@param showDialog Determines if operation specific UI should be started with confirmation
|
||||
dialog.
|
||||
@return Instance of the executed operation.
|
||||
*/
|
||||
+ (instancetype)executeOperationWithDelegate:(id<FUIAccountSettingsOperationUIDelegate>)delegate
|
||||
showDialog:(BOOL)showDialog NS_UNAVAILABLE;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,93 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperationForgotPassword.h"
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperation_Internal.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthBaseViewController_Internal.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@implementation FUIAccountSettingsOperationForgotPassword
|
||||
|
||||
- (FUIAccountSettingsOperationType)operationType {
|
||||
return FUIAccountSettingsOperationTypeForgotPassword;
|
||||
}
|
||||
|
||||
- (void)execute:(BOOL)showDialog {
|
||||
[self onForgotPassword];
|
||||
}
|
||||
|
||||
- (void)onForgotPassword {
|
||||
__block FUIStaticContentTableViewCell *inputCell =
|
||||
[FUIStaticContentTableViewCell cellWithTitle:FUILocalizedString(kStr_Email)
|
||||
value:self.delegate.auth.currentUser.email
|
||||
placeholder:FUILocalizedString(kStr_PlaceholderEnterEmail)
|
||||
type:FUIStaticContentTableViewCellTypeInput
|
||||
action:nil];
|
||||
FUIStaticContentTableViewContent *contents =
|
||||
[FUIStaticContentTableViewContent
|
||||
contentWithSections:@[
|
||||
[FUIStaticContentTableViewSection sectionWithTitle:nil
|
||||
cells:@[inputCell]],
|
||||
]];
|
||||
|
||||
UIViewController *controller =
|
||||
[[FUIStaticContentTableViewController alloc]
|
||||
initWithContents:contents
|
||||
nextTitle:FUILocalizedString(kStr_Send)
|
||||
nextAction:^{ [self onPasswordRecovery:inputCell.value]; }
|
||||
headerText:FUILocalizedString(kStr_PasswordRecoveryMessage)];
|
||||
controller.title = FUILocalizedString(kStr_PasswordRecoveryTitle);
|
||||
[self.delegate pushViewController:controller];
|
||||
}
|
||||
|
||||
- (void)onPasswordRecovery:(NSString *)email {
|
||||
if (![[FUIAuthBaseViewController class] isValidEmail:email]) {
|
||||
[self showAlertWithMessage:FUILocalizedString(kStr_InvalidEmailError)];
|
||||
return;
|
||||
}
|
||||
|
||||
[self.delegate incrementActivity];
|
||||
|
||||
[self.delegate.auth sendPasswordResetWithEmail:email
|
||||
completion:^(NSError *_Nullable error) {
|
||||
[self.delegate decrementActivity];
|
||||
|
||||
if (error) {
|
||||
[self finishOperationWithError:error];
|
||||
return;
|
||||
}
|
||||
|
||||
NSString *message = [NSString stringWithFormat:
|
||||
FUILocalizedString(kStr_PasswordRecoveryEmailSentMessage), email];
|
||||
UIAlertController *alertController =
|
||||
[UIAlertController alertControllerWithTitle:nil
|
||||
message:message
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
UIAlertAction *okAction = [UIAlertAction actionWithTitle:FUILocalizedString(kStr_OK)
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction *_Nonnull action) {
|
||||
[self finishOperationWithError:error];
|
||||
}];
|
||||
[alertController addAction:okAction];
|
||||
[self.delegate presentViewController:alertController];
|
||||
}];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,37 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperation.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @class FUIAccountSettingsOperationSignOut
|
||||
@brief Handles logic of signing-out operation.
|
||||
*/
|
||||
@interface FUIAccountSettingsOperationSignOut : FUIAccountSettingsOperation
|
||||
|
||||
/** @fn executeOperationWithDelegate:showDialog:
|
||||
@brief Instead use @c executeOperationWithDelegate:
|
||||
@param delegate UI delegate which handles all UI related logic.
|
||||
@param showDialog Determines if operation specific UI should be started with confirmation
|
||||
dialog.
|
||||
@return Instance of the executed operation.
|
||||
*/
|
||||
+ (instancetype)executeOperationWithDelegate:(id<FUIAccountSettingsOperationUIDelegate>)delegate
|
||||
showDialog:(BOOL)showDialog NS_UNAVAILABLE;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,45 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperationSignOut.h"
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperation_Internal.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@implementation FUIAccountSettingsOperationSignOut
|
||||
|
||||
- (FUIAccountSettingsOperationType)operationType {
|
||||
return FUIAccountSettingsOperationTypeSignOut;
|
||||
}
|
||||
|
||||
- (void)execute:(BOOL)showDialog {
|
||||
[self signOut];
|
||||
}
|
||||
|
||||
- (void)signOut{
|
||||
NSError *error;
|
||||
[self.delegate.authUI signOutWithError:&error];
|
||||
[self finishOperationWithError:error];
|
||||
if (!error) {
|
||||
[self.delegate presentBaseController];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,61 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperation.h"
|
||||
|
||||
@protocol FIRUserInfo;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @class FUIAccountSettingsOperationUnlinkAccount
|
||||
@brief Handles logic of unlinking from 3P provider operation.
|
||||
*/
|
||||
@interface FUIAccountSettingsOperationUnlinkAccount : FUIAccountSettingsOperation
|
||||
|
||||
/** @fn executeOperationWithDelegate:showDialog:
|
||||
@brief Instead use @c executeOperationWithDelegate:showDialog:provider:
|
||||
@param delegate UI delegate which handles all UI related logic.
|
||||
@param showDialog Determines if operation specific UI should be started with confirmation
|
||||
dialog.
|
||||
@return Instance of the executed operation.
|
||||
*/
|
||||
+ (instancetype)executeOperationWithDelegate:(id<FUIAccountSettingsOperationUIDelegate>)delegate
|
||||
showDialog:(BOOL)showDialog NS_UNAVAILABLE;
|
||||
|
||||
/** @fn executeOperationWithDelegate:
|
||||
@brief Instead use @c executeOperationWithDelegate:showDialog:provider:
|
||||
@param delegate UI delegate which handles all UI related logic.
|
||||
@return Instance of the executed operation.
|
||||
*/
|
||||
+ (instancetype)executeOperationWithDelegate:(id<FUIAccountSettingsOperationUIDelegate>)delegate
|
||||
NS_UNAVAILABLE;
|
||||
|
||||
/** @fn executeOperationWithDelegate:showDialog:provider:
|
||||
@brief Creates new instance of @c FUIAccountSettingsOperationUnlinkAccount and executes logic
|
||||
associated with it.
|
||||
@param delegate UI delegate which handles all UI related logic.
|
||||
@param showDialog Determines if operation specific UI should be started with confirmation
|
||||
dialog.
|
||||
@param provider Instance of 3P provider retrieved from currently logged in @c FIRUser.
|
||||
@return Instance of the executed operation.
|
||||
*/
|
||||
+ (instancetype)executeOperationWithDelegate:(id<FUIAccountSettingsOperationUIDelegate>)delegate
|
||||
showDialog:(BOOL)showDialog
|
||||
provider:(id<FIRUserInfo>)provider;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,106 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperationUnlinkAccount.h"
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperation_Internal.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthBaseViewController_Internal.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface FUIAccountSettingsOperationUnlinkAccount ()
|
||||
{
|
||||
id<FIRUserInfo> _provider;
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation FUIAccountSettingsOperationUnlinkAccount
|
||||
|
||||
+ (instancetype)executeOperationWithDelegate:(id<FUIAccountSettingsOperationUIDelegate>)delegate
|
||||
showDialog:(BOOL)showDialog
|
||||
provider:(id<FIRUserInfo>)provider {
|
||||
FUIAccountSettingsOperationUnlinkAccount *operation =
|
||||
[[self alloc] initWithDelegate:delegate provider:provider];
|
||||
[operation execute:showDialog];
|
||||
return operation;
|
||||
}
|
||||
|
||||
- (instancetype)initWithDelegate:(id<FUIAccountSettingsOperationUIDelegate>)delegate
|
||||
provider:(id<FIRUserInfo>) provider {
|
||||
if (self = [super initWithDelegate:delegate]) {
|
||||
_provider = provider;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (FUIAccountSettingsOperationType)operationType {
|
||||
return FUIAccountSettingsOperationTypeUnlinkAccount;
|
||||
}
|
||||
|
||||
- (void)execute:(BOOL)showDialog {
|
||||
__block FUIStaticContentTableViewCell *cell =
|
||||
[FUIStaticContentTableViewCell cellWithTitle:
|
||||
[FUIAuthBaseViewController providerLocalizedName:_provider.providerID]
|
||||
value:_provider.displayName
|
||||
type:FUIStaticContentTableViewCellTypeDefault
|
||||
action:nil];
|
||||
FUIStaticContentTableViewContent *contents =
|
||||
[FUIStaticContentTableViewContent contentWithSections:@[
|
||||
[FUIStaticContentTableViewSection sectionWithTitle:nil
|
||||
cells:@[cell]],
|
||||
]];
|
||||
|
||||
UIViewController *controller =
|
||||
[[FUIStaticContentTableViewController alloc] initWithContents:contents
|
||||
nextTitle:
|
||||
FUILocalizedString(kStr_UnlinkAction)
|
||||
nextAction:^{
|
||||
[self showUnlinkConfirmationDialog];
|
||||
}];
|
||||
controller.title = FUILocalizedString(kStr_UnlinkTitle);
|
||||
[self.delegate pushViewController:controller];
|
||||
}
|
||||
|
||||
- (void)showUnlinkConfirmationDialog {
|
||||
UIAlertController *alertController =
|
||||
[UIAlertController alertControllerWithTitle:FUILocalizedString(kStr_UnlinkConfirmationTitle)
|
||||
message:FUILocalizedString(kStr_UnlinkConfirmationMessage)
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
UIAlertAction *action =
|
||||
[UIAlertAction actionWithTitle:FUILocalizedString(kStr_UnlinkConfirmationActionTitle)
|
||||
style:UIAlertActionStyleDestructive
|
||||
handler:^(UIAlertAction *_Nonnull action) { [self unlinkAcount]; }];
|
||||
[alertController addAction:action];
|
||||
UIAlertAction *cancelAction =
|
||||
[UIAlertAction actionWithTitle:FUILocalizedString(kStr_Cancel)
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:nil];
|
||||
[alertController addAction:cancelAction];
|
||||
[self.delegate presentViewController:alertController];
|
||||
}
|
||||
|
||||
- (void)unlinkAcount {
|
||||
[self.delegate.auth.currentUser unlinkFromProvider:_provider.providerID
|
||||
completion:^(FIRUser *_Nullable user,
|
||||
NSError *_Nullable error) {
|
||||
[self finishOperationWithError:error];
|
||||
[self.delegate presentBaseController];
|
||||
}];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,38 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperation.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @class FUIAccountSettingsOperationUpdateEmail
|
||||
@brief Handles logic of updating email operation.
|
||||
*/
|
||||
@interface FUIAccountSettingsOperationUpdateEmail : FUIAccountSettingsOperation
|
||||
|
||||
/** @fn executeOperationWithDelegate:showDialog:
|
||||
@brief Instead use @c executeOperationWithDelegate:
|
||||
@param delegate UI delegate which handles all UI related logic.
|
||||
@param showDialog Determines if operation specific UI should be started with confirmation
|
||||
dialog.
|
||||
@return Instance of the executed operation.
|
||||
*/
|
||||
+ (instancetype)executeOperationWithDelegate:(id<FUIAccountSettingsOperationUIDelegate>)delegate
|
||||
showDialog:(BOOL)showDialog NS_UNAVAILABLE;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,92 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperationUpdateEmail.h"
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperation_Internal.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthBaseViewController_Internal.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@implementation FUIAccountSettingsOperationUpdateEmail
|
||||
|
||||
- (FUIAccountSettingsOperationType)operationType {
|
||||
return FUIAccountSettingsOperationTypeUpdateEmail;
|
||||
}
|
||||
|
||||
- (void)execute:(BOOL)showDialog {
|
||||
if (showDialog) {
|
||||
[self showUpdateEmailDialog];
|
||||
} else {
|
||||
[self showUpdateEmailView];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)showUpdateEmailDialog {
|
||||
NSString *message;
|
||||
message = FUILocalizedString(kStr_UpdateEmailAlertMessage);
|
||||
[self showVerifyDialogWithMessage:message providerHandler:^{ [self showUpdateEmail]; }];
|
||||
|
||||
}
|
||||
|
||||
- (void)showUpdateEmailView {
|
||||
[self showVerifyPasswordViewWithMessage:
|
||||
FUILocalizedString(kStr_UpdateEmailVerificationAlertMessage)
|
||||
providerHandler:^{ [self showUpdateEmail]; }];
|
||||
}
|
||||
|
||||
- (void)showUpdateEmail {
|
||||
__block FUIStaticContentTableViewCell *cell =
|
||||
[FUIStaticContentTableViewCell cellWithTitle:FUILocalizedString(kStr_Email)
|
||||
value:self.delegate.auth.currentUser.email
|
||||
placeholder:FUILocalizedString(kStr_PlaceholderEnterEmail)
|
||||
type:FUIStaticContentTableViewCellTypeInput
|
||||
action:nil];
|
||||
FUIStaticContentTableViewContent *contents =
|
||||
[FUIStaticContentTableViewContent contentWithSections:@[
|
||||
[FUIStaticContentTableViewSection sectionWithTitle:nil
|
||||
cells:@[cell]],
|
||||
]];
|
||||
|
||||
UIViewController *controller =
|
||||
[[FUIStaticContentTableViewController alloc] initWithContents:contents
|
||||
nextTitle:FUILocalizedString(kStr_Save)
|
||||
nextAction:^{
|
||||
[self updateEmailForCurrentUser:cell.value];
|
||||
}];
|
||||
controller.title = FUILocalizedString(kStr_EditEmailTitle);
|
||||
[self.delegate pushViewController:controller];
|
||||
|
||||
}
|
||||
|
||||
- (void)updateEmailForCurrentUser:(NSString *)email {
|
||||
if (![[FUIAuthBaseViewController class] isValidEmail:email]) {
|
||||
[self showAlertWithMessage:FUILocalizedString(kStr_InvalidEmailError)];
|
||||
} else {
|
||||
[self.delegate incrementActivity];
|
||||
[self.delegate.auth.currentUser updateEmail:email completion:^(NSError *_Nullable error) {
|
||||
[self.delegate decrementActivity];
|
||||
[self finishOperationWithError:error];
|
||||
if (!error) {
|
||||
[self.delegate presentBaseController];
|
||||
}
|
||||
}];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,36 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperation.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @class FUIAccountSettingsOperationUpdateName
|
||||
@brief Handles logic of updating name operation.
|
||||
*/
|
||||
@interface FUIAccountSettingsOperationUpdateName : FUIAccountSettingsOperation
|
||||
|
||||
/** @fn executeOperationWithDelegate:
|
||||
@brief Instead use @c executeOperationWithDelegate:showDialog:
|
||||
@param delegate UI delegate which handles all UI related logic.
|
||||
@return Instance of the executed operation.
|
||||
*/
|
||||
+ (instancetype)executeOperationWithDelegate:(id<FUIAccountSettingsOperationUIDelegate>)delegate
|
||||
NS_UNAVAILABLE;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,65 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperationUpdateName.h"
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperation_Internal.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@implementation FUIAccountSettingsOperationUpdateName
|
||||
|
||||
- (FUIAccountSettingsOperationType)operationType {
|
||||
return FUIAccountSettingsOperationTypeUpdateName;
|
||||
}
|
||||
|
||||
- (void)execute:(BOOL)showDialog {
|
||||
__block FUIStaticContentTableViewCell *cell =
|
||||
[FUIStaticContentTableViewCell cellWithTitle:FUILocalizedString(kStr_Name)
|
||||
value:self.delegate.auth.currentUser.displayName
|
||||
placeholder:FUILocalizedString(kStr_PlaceholderEnterName)
|
||||
type:FUIStaticContentTableViewCellTypeInput
|
||||
action:nil];
|
||||
FUIStaticContentTableViewContent *contents =
|
||||
[FUIStaticContentTableViewContent contentWithSections:@[
|
||||
[FUIStaticContentTableViewSection sectionWithTitle:nil
|
||||
cells:@[cell]],
|
||||
]];
|
||||
|
||||
UIViewController *controller =
|
||||
[[FUIStaticContentTableViewController alloc] initWithContents:contents
|
||||
nextTitle:FUILocalizedString(kStr_Save)
|
||||
nextAction:^{
|
||||
[self onUpdateName:cell.value];
|
||||
}];
|
||||
controller.title = FUILocalizedString(kStr_EditNameTitle);
|
||||
[self.delegate pushViewController:controller];
|
||||
}
|
||||
|
||||
- (void)onUpdateName:(NSString *)username {
|
||||
[self.delegate incrementActivity];
|
||||
FIRUserProfileChangeRequest *request = [self.delegate.auth.currentUser profileChangeRequest];
|
||||
request.displayName = username;
|
||||
[request commitChangesWithCompletion:^(NSError *_Nullable error) {
|
||||
[self.delegate decrementActivity];
|
||||
[self finishOperationWithError:error];
|
||||
[self.delegate presentBaseController];
|
||||
}];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,59 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperation.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @class FUIAccountSettingsOperationUpdatePassword
|
||||
@brief Handles logic of updating password operation.
|
||||
*/
|
||||
@interface FUIAccountSettingsOperationUpdatePassword : FUIAccountSettingsOperation
|
||||
|
||||
/** @fn executeOperationWithDelegate:showDialog:
|
||||
@brief Instead use @c executeOperationWithDelegate:showDialog:newPassword:
|
||||
@param delegate UI delegate which handles all UI related logic.
|
||||
@param showDialog Determines if operation specific UI should be started with confirmation
|
||||
dialog.
|
||||
@return Instance of the executed operation.
|
||||
*/
|
||||
+ (instancetype)executeOperationWithDelegate:(id<FUIAccountSettingsOperationUIDelegate>)delegate
|
||||
showDialog:(BOOL)showDialog NS_UNAVAILABLE;
|
||||
|
||||
/** @fn executeOperationWithDelegate:
|
||||
@brief Instead use @c executeOperationWithDelegate:showDialog:newPassword:
|
||||
@param delegate UI delegate which handles all UI related logic.
|
||||
@return Instance of the executed operation.
|
||||
*/
|
||||
+ (instancetype)executeOperationWithDelegate:(id<FUIAccountSettingsOperationUIDelegate>)delegate
|
||||
NS_UNAVAILABLE;
|
||||
|
||||
/** @fn executeOperationWithDelegate:showDialog:newPassword:
|
||||
@brief Creates new instance of @c FUIAccountSettingsOperationUnlinkAccount and executes logic
|
||||
associated with it.
|
||||
@param delegate UI delegate which handles all UI related logic.
|
||||
@param showDialog Determines if operation specific UI should be started with confirmation
|
||||
dialog.
|
||||
@param newPassword Defines if this is add password (pass YES) or update password operation.
|
||||
@return Instance of the executed operation.
|
||||
*/
|
||||
+ (instancetype)executeOperationWithDelegate:(id<FUIAccountSettingsOperationUIDelegate>)delegate
|
||||
showDialog:(BOOL)showDialog
|
||||
newPassword:(BOOL)newPassword;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,126 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperationUpdatePassword.h"
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperation_Internal.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface FUIAccountSettingsOperationUpdatePassword ()
|
||||
{
|
||||
BOOL _newPassword;
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation FUIAccountSettingsOperationUpdatePassword
|
||||
|
||||
+ (instancetype)executeOperationWithDelegate:(id<FUIAccountSettingsOperationUIDelegate>)delegate
|
||||
showDialog:(BOOL)showDialog
|
||||
newPassword:(BOOL)newPassword {
|
||||
FUIAccountSettingsOperationUpdatePassword *operation =
|
||||
[[self alloc] initWithDelegate:delegate newPassword:newPassword];
|
||||
[operation execute:showDialog];
|
||||
return operation;
|
||||
}
|
||||
|
||||
- (instancetype)initWithDelegate:(id<FUIAccountSettingsOperationUIDelegate>)delegate
|
||||
newPassword:(BOOL)newPassword {
|
||||
if (self = [super initWithDelegate:delegate]) {
|
||||
_newPassword = newPassword;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (FUIAccountSettingsOperationType)operationType {
|
||||
return FUIAccountSettingsOperationTypeUpdatePassword;
|
||||
}
|
||||
|
||||
- (void)execute:(BOOL)showDialog {
|
||||
if (showDialog) {
|
||||
[self showUpdatePasswordDialog:_newPassword];
|
||||
} else {
|
||||
[self showUpdatePasswordView];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)showUpdatePasswordDialog:(BOOL)newPassword {
|
||||
NSString *message;
|
||||
if (newPassword) {
|
||||
message = FUILocalizedString(kStr_AddPasswordAlertMessage);
|
||||
} else {
|
||||
message = FUILocalizedString(kStr_EditPasswordAlertMessage);
|
||||
}
|
||||
|
||||
[self showVerifyDialogWithMessage:message
|
||||
providerHandler:^{ [self showUpdatePassword:newPassword]; }];
|
||||
|
||||
}
|
||||
|
||||
- (void)showUpdatePasswordView {
|
||||
[self showVerifyPasswordViewWithMessage:
|
||||
FUILocalizedString(kStr_ReauthenticateEditPasswordAlertMessage)
|
||||
providerHandler:^{ [self showUpdatePassword:NO]; }];
|
||||
}
|
||||
|
||||
- (void)showUpdatePassword:(BOOL)newPassword {
|
||||
NSString *placeHolder = newPassword ? FUILocalizedString(kStr_PlaceholderChosePassword) :
|
||||
FUILocalizedString(kStr_PlaceholderNewPassword);
|
||||
__block FUIStaticContentTableViewCell *passwordCell =
|
||||
[FUIStaticContentTableViewCell cellWithTitle:FUILocalizedString(kStr_Password)
|
||||
value:nil
|
||||
placeholder:placeHolder
|
||||
type:FUIStaticContentTableViewCellTypePassword
|
||||
action:nil];
|
||||
FUIStaticContentTableViewContent *contents =
|
||||
[FUIStaticContentTableViewContent contentWithSections:@[
|
||||
[FUIStaticContentTableViewSection sectionWithTitle:nil
|
||||
cells:@[passwordCell]],
|
||||
]];
|
||||
|
||||
UIViewController *controller =
|
||||
[[FUIStaticContentTableViewController alloc] initWithContents:contents
|
||||
nextTitle:FUILocalizedString(kStr_Save)
|
||||
nextAction:^{
|
||||
[self updatePasswordForCurrentUser:passwordCell.value];
|
||||
}];
|
||||
if (newPassword) {
|
||||
controller.title = FUILocalizedString(kStr_AddPasswordTitle);
|
||||
} else {
|
||||
controller.title = FUILocalizedString(kStr_EditPasswordTitle);
|
||||
}
|
||||
[self.delegate pushViewController:controller];
|
||||
|
||||
}
|
||||
|
||||
- (void)updatePasswordForCurrentUser:(NSString *)password {
|
||||
if (!password.length) {
|
||||
[self showAlertWithMessage:FUILocalizedString(kStr_WeakPasswordError)];
|
||||
} else {
|
||||
[self.delegate incrementActivity];
|
||||
[self.delegate.auth.currentUser updatePassword:password completion:^(NSError *_Nullable error) {
|
||||
[self.delegate decrementActivity];
|
||||
[self finishOperationWithError:error];
|
||||
if (!error) {
|
||||
[self.delegate presentBaseController];
|
||||
}
|
||||
}];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,109 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperation.h"
|
||||
|
||||
#import <FirebaseAuth/FirebaseAuth.h>
|
||||
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAccountSettingsOperationType.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthStrings.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuth_Internal.h"
|
||||
#import "FirebaseAuthUI/Sources/FUIStaticContentTableViewController.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @typedef FUIAccountSettingsChooseProviderHandler
|
||||
@brief The type of block invoked when a select provider dialog button is tapped.
|
||||
*/
|
||||
typedef void(^FUIAccountSettingsChooseProviderHandler)(id<FIRUserInfo> provider);
|
||||
|
||||
/** @typedef FUIAccountSettingsReauthenticateHandler
|
||||
@brief The type of block invoked when reathentication operation is finished.
|
||||
*/
|
||||
typedef void(^FUIAccountSettingsReauthenticateHandler)(void);
|
||||
|
||||
/** Internal methods which are not exposed for public usage. */
|
||||
@interface FUIAccountSettingsOperation ()
|
||||
|
||||
/** @fn initWithDelegate:
|
||||
@brief Creates new instance of @c FUIAccountSettingsOperation.
|
||||
*/
|
||||
- (instancetype)initWithDelegate:(id<FUIAccountSettingsOperationUIDelegate>)delegate;
|
||||
|
||||
/** @fn finishOperationWithError:
|
||||
@brief Callback which is used for notification of operation result.
|
||||
*/
|
||||
- (void)finishOperationWithError:(nullable NSError *)error;
|
||||
|
||||
/** @fn reauthenticateWithProvider:actionHandler:
|
||||
@brief Reauthenticates currently logged-in user with specified 3P porviderID.
|
||||
@param providerID The ID of third party provider.
|
||||
@param handler Block which is called when user was re-authenticated.
|
||||
*/
|
||||
- (void)reauthenticateWithProvider:(NSString *)providerID
|
||||
actionHandler:(nullable FUIAccountSettingsReauthenticateHandler)handler;
|
||||
|
||||
/** @fn reauthenticateWithPassword:actionHandler:
|
||||
@brief Reauthenticates currently logged-in user with 'password' auth provider.
|
||||
@param password Value of the password used for re-authentication of currently loggen-in user.
|
||||
@param handler Block which is called when user was re-authenticated.
|
||||
*/
|
||||
- (void)reauthenticateWithPassword:(NSString *)password
|
||||
actionHandler:(nullable FUIAccountSettingsReauthenticateHandler)handler;
|
||||
|
||||
/** @fn showSelectProviderDialogWithAlertTitle:alertMessage:alertCloseButton:providerHandler:
|
||||
@brief Displays alert dialog with all available 3P providers.
|
||||
@param title The title of the dialog
|
||||
@param message The message displayed in the alert body.
|
||||
@param closeActionTitle The title of the close button.
|
||||
@param handler Block which is called when user selects any of 3P providers.
|
||||
*/
|
||||
- (void)showSelectProviderDialogWithAlertTitle:(nullable NSString *)title
|
||||
alertMessage:(nullable NSString *)message
|
||||
alertCloseButton:(nullable NSString *)closeActionTitle
|
||||
providerHandler:(nullable FUIAccountSettingsChooseProviderHandler)
|
||||
handler;
|
||||
|
||||
/** @fn showVerifyDialogWithMessage:providerHandler:
|
||||
@brief Displays alert dialog when user need to verify it's identity.
|
||||
@param message The message displayed in the alert body.
|
||||
@param handler Block which is called when user selects any of 3P providers.
|
||||
*/
|
||||
- (void)showVerifyDialogWithMessage:(NSString *)message
|
||||
providerHandler:(nullable FUIAccountSettingsReauthenticateHandler)handler;
|
||||
|
||||
/** @fn showVerifyPasswordViewWithMessage:providerHandler:
|
||||
@brief Displays view with password input field when user need to verify it's identity.
|
||||
@param message The message displayed in the alert body.
|
||||
@param handler Block which is called when user selects any of 3P providers.
|
||||
*/
|
||||
- (void)showVerifyPasswordViewWithMessage:(NSString *)message
|
||||
providerHandler:(nullable FUIAccountSettingsReauthenticateHandler)handler;
|
||||
|
||||
/** @fn showAlertWithMessage:message:
|
||||
@brief Displays alert view with with specified message and OK button.
|
||||
@param message The message displayed in the alert body.
|
||||
*/
|
||||
- (void)showAlertWithMessage:(NSString *)message;
|
||||
|
||||
/** @property delegate
|
||||
@brief The operation UI delegate which handles all UI callbacks.
|
||||
*/
|
||||
@property(nonatomic, weak, readonly) id<FUIAccountSettingsOperationUIDelegate> delegate;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,431 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAccountSettingsViewController.h"
|
||||
|
||||
#import <FirebaseAuth/FirebaseAuth.h>
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperation.h"
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperationDeleteAccount.h"
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperationForgotPassword.h"
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperationSignOut.h"
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperationUnlinkAccount.h"
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperationUpdateEmail.h"
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperationUpdateName.h"
|
||||
#import "FirebaseAuthUI/Sources/FUIAccountSettingsOperationUpdatePassword.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthBaseViewController_Internal.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthStrings.h"
|
||||
#import "FirebaseAuthUI/Sources/FUIStaticContentTableViewController.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @var FUIASAccountState
|
||||
@brief Defines all possible states of current loogged-in @c FIRUser.
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, FUIASAccountState) {
|
||||
FUIASAccountStateUnknown = 0,
|
||||
FUIASAccountStateEmailPassword,
|
||||
FUIASAccountStateLinkedAccountWithEmail,
|
||||
FUIASAccountStateLinkedAccountWithoutEmail,
|
||||
FUIASAccountStateLinkedAccountWithEmailPassword
|
||||
};
|
||||
|
||||
/** @var kUserAccountImage
|
||||
@brief Name of icon to show default user account.
|
||||
*/
|
||||
static NSString *const kUserAccountImage = @"ic_account_circle.png";
|
||||
|
||||
@interface FUIAccountSettingsViewController () <FUIAccountSettingsOperationUIDelegate>
|
||||
@end
|
||||
|
||||
@implementation FUIAccountSettingsViewController {
|
||||
__weak UITableView *_tableView;
|
||||
FUIStaticContentTableViewManager *_tableViewManager;
|
||||
FUIASAccountState _accountState;
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
_tableViewManager = [[FUIStaticContentTableViewManager alloc] init];
|
||||
_tableViewManager.tableView = _tableView;
|
||||
_tableView.dataSource = _tableViewManager;
|
||||
_tableView.delegate = _tableViewManager;
|
||||
[self updateUI];
|
||||
}
|
||||
|
||||
#pragma mark - Helpers
|
||||
|
||||
- (FUIASAccountState)accountState {
|
||||
NSArray<id<FIRUserInfo>> *providers = self.auth.currentUser.providerData;
|
||||
if (!providers || providers.count == 0) {
|
||||
return FUIASAccountStateUnknown;
|
||||
}
|
||||
|
||||
BOOL hasPasswordProvider = NO;
|
||||
BOOL hasEmailInLinkedProvider = NO;
|
||||
|
||||
for (id<FIRUserInfo> userInfo in providers) {
|
||||
if (userInfo.email.length > 0 &&
|
||||
![userInfo.providerID isEqualToString:FIREmailAuthProviderID]) {
|
||||
hasEmailInLinkedProvider = YES;
|
||||
}
|
||||
|
||||
if ([userInfo.providerID isEqualToString:FIREmailAuthProviderID]) {
|
||||
hasPasswordProvider = YES;
|
||||
}
|
||||
}
|
||||
|
||||
if (providers.count == 1 && hasPasswordProvider) {
|
||||
return FUIASAccountStateEmailPassword;
|
||||
} else if (!hasPasswordProvider && !hasEmailInLinkedProvider) {
|
||||
return FUIASAccountStateLinkedAccountWithoutEmail;
|
||||
} else if (!hasPasswordProvider && hasEmailInLinkedProvider) {
|
||||
return FUIASAccountStateLinkedAccountWithEmail;
|
||||
} else if (hasPasswordProvider && hasEmailInLinkedProvider) {
|
||||
return FUIASAccountStateLinkedAccountWithEmailPassword;
|
||||
} else if (hasPasswordProvider && !hasEmailInLinkedProvider) {
|
||||
return FUIASAccountStateLinkedAccountWithEmailPassword;
|
||||
}
|
||||
|
||||
return FUIASAccountStateUnknown;
|
||||
}
|
||||
|
||||
- (void)populateTableHeader {
|
||||
|
||||
if (!self.auth.currentUser) {
|
||||
_tableViewManager.tableView.tableHeaderView = nil;
|
||||
return;
|
||||
}
|
||||
|
||||
CGFloat profileHeight = 60;
|
||||
UIImageView *headerImage =
|
||||
[[UIImageView alloc] initWithImage:[UIImage imageNamed:kUserAccountImage]];
|
||||
headerImage.layer.cornerRadius = profileHeight / 2;
|
||||
headerImage.clipsToBounds = YES;
|
||||
UIView *wrapper = [[UIView alloc] init];
|
||||
[wrapper addSubview:headerImage];
|
||||
headerImage.translatesAutoresizingMaskIntoConstraints = NO;
|
||||
[headerImage addConstraint:
|
||||
[NSLayoutConstraint constraintWithItem:headerImage
|
||||
attribute:NSLayoutAttributeWidth
|
||||
relatedBy:NSLayoutRelationEqual
|
||||
toItem:nil
|
||||
attribute:NSLayoutAttributeNotAnAttribute
|
||||
multiplier:1
|
||||
constant:profileHeight]];
|
||||
[headerImage addConstraint:
|
||||
[NSLayoutConstraint constraintWithItem:headerImage
|
||||
attribute:NSLayoutAttributeHeight
|
||||
relatedBy:NSLayoutRelationEqual
|
||||
toItem:nil
|
||||
attribute:NSLayoutAttributeNotAnAttribute
|
||||
multiplier:1
|
||||
constant:profileHeight]];
|
||||
[wrapper addConstraint:
|
||||
[NSLayoutConstraint constraintWithItem:headerImage
|
||||
attribute:NSLayoutAttributeCenterX
|
||||
relatedBy:NSLayoutRelationEqual
|
||||
toItem:wrapper
|
||||
attribute:NSLayoutAttributeCenterX
|
||||
multiplier:1
|
||||
constant:0]];
|
||||
[wrapper addConstraint:
|
||||
[NSLayoutConstraint constraintWithItem:headerImage
|
||||
attribute:NSLayoutAttributeCenterY
|
||||
relatedBy:NSLayoutRelationEqual
|
||||
toItem:wrapper
|
||||
attribute:NSLayoutAttributeCenterY
|
||||
multiplier:1
|
||||
constant:0]];
|
||||
|
||||
_tableViewManager.tableView.tableHeaderView = wrapper;
|
||||
CGRect frame = _tableViewManager.tableView.tableHeaderView.frame;
|
||||
frame.size.height = 90;
|
||||
_tableViewManager.tableView.tableHeaderView.frame = frame;
|
||||
|
||||
NSURL *photoURL = self.auth.currentUser.photoURL;
|
||||
if (photoURL) {
|
||||
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
||||
NSData *imageData = [NSData dataWithContentsOfURL:photoURL];
|
||||
UIImage *image = [UIImage imageWithData:imageData];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
headerImage.image = image;
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
- (void)updateTable {
|
||||
switch (_accountState) {
|
||||
case FUIASAccountStateEmailPassword:
|
||||
[self updateTableStateEmailPassword];
|
||||
break;
|
||||
case FUIASAccountStateLinkedAccountWithEmail:
|
||||
[self updateTableStateLinkedAccountWithEmail];
|
||||
break;
|
||||
case FUIASAccountStateLinkedAccountWithoutEmail:
|
||||
[self updateTableStateLinkedAccountWithoutEmail];
|
||||
break;
|
||||
case FUIASAccountStateLinkedAccountWithEmailPassword:
|
||||
[self updateTableStateLinkedAccountWithEmailPassword];
|
||||
break;
|
||||
|
||||
default:
|
||||
_tableViewManager.contents = nil;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)updateTableStateEmailPassword {
|
||||
_tableViewManager.contents =
|
||||
[FUIStaticContentTableViewContent contentWithSections:@[
|
||||
[FUIStaticContentTableViewSection sectionWithTitle:
|
||||
FUILocalizedString(kStr_ASSectionTitleProfile)
|
||||
cells:@[
|
||||
[FUIStaticContentTableViewCell cellWithTitle:FUILocalizedString(kStr_ASCellName)
|
||||
value:self.auth.currentUser.displayName
|
||||
action:^{
|
||||
[FUIAccountSettingsOperationUpdateName executeOperationWithDelegate:self showDialog:NO];
|
||||
}],
|
||||
[FUIStaticContentTableViewCell cellWithTitle:FUILocalizedString(kStr_ASCellEmail)
|
||||
value:self.auth.currentUser.email
|
||||
action:^{
|
||||
[FUIAccountSettingsOperationUpdateEmail executeOperationWithDelegate:self];
|
||||
}]
|
||||
]],
|
||||
[FUIStaticContentTableViewSection sectionWithTitle:
|
||||
FUILocalizedString(kStr_ASSectionTitleSecurity)
|
||||
cells:@[
|
||||
[FUIStaticContentTableViewCell cellWithTitle:FUILocalizedString(kStr_ASCellChangePassword)
|
||||
action:^{
|
||||
[FUIAccountSettingsOperationUpdatePassword executeOperationWithDelegate:self
|
||||
showDialog:YES
|
||||
newPassword:NO];
|
||||
}]
|
||||
]],
|
||||
[self createActionsSection]
|
||||
]];
|
||||
}
|
||||
|
||||
- (void)updateTableStateLinkedAccountWithoutEmail {
|
||||
NSMutableArray *linkedAccounts =
|
||||
[[NSMutableArray alloc] initWithCapacity:self.auth.currentUser.providerData.count];
|
||||
for (id<FIRUserInfo> userInfo in self.auth.currentUser.providerData) {
|
||||
if ([userInfo.providerID isEqualToString:FIREmailAuthProviderID]) {
|
||||
continue;
|
||||
}
|
||||
FUIStaticContentTableViewCell *cell =
|
||||
[FUIStaticContentTableViewCell cellWithTitle:
|
||||
[FUIAuthBaseViewController providerLocalizedName:userInfo.providerID]
|
||||
value:userInfo.displayName];
|
||||
[linkedAccounts addObject:cell];
|
||||
}
|
||||
|
||||
_tableViewManager.contents =
|
||||
[FUIStaticContentTableViewContent contentWithSections:@[
|
||||
[FUIStaticContentTableViewSection sectionWithTitle:
|
||||
FUILocalizedString(kStr_ASSectionTitleProfile)
|
||||
cells:@[
|
||||
[FUIStaticContentTableViewCell cellWithTitle:FUILocalizedString(kStr_ASCellName)
|
||||
value:self.auth.currentUser.displayName
|
||||
action:^{
|
||||
[FUIAccountSettingsOperationUpdateName executeOperationWithDelegate:self showDialog:NO];
|
||||
}],
|
||||
[FUIStaticContentTableViewCell cellWithTitle:FUILocalizedString(kStr_ASCellEmail)
|
||||
value:self.auth.currentUser.email
|
||||
action:^{
|
||||
[FUIAccountSettingsOperationUpdateEmail executeOperationWithDelegate:self];
|
||||
}]
|
||||
]],
|
||||
[FUIStaticContentTableViewSection sectionWithTitle:
|
||||
FUILocalizedString(kStr_ASSectionTitleLinkedAccounts)
|
||||
cells:linkedAccounts],
|
||||
[self createActionsSection]
|
||||
]];
|
||||
}
|
||||
|
||||
- (void)updateTableStateLinkedAccountWithEmail {
|
||||
NSMutableArray *linkedAccounts =
|
||||
[[NSMutableArray alloc] initWithCapacity:self.auth.currentUser.providerData.count];
|
||||
for (id<FIRUserInfo> userInfo in self.auth.currentUser.providerData) {
|
||||
if ([userInfo.providerID isEqualToString:FIREmailAuthProviderID]) {
|
||||
continue;
|
||||
}
|
||||
FUIStaticContentTableViewCell *cell =
|
||||
[FUIStaticContentTableViewCell cellWithTitle:
|
||||
[FUIAuthBaseViewController providerLocalizedName:userInfo.providerID]
|
||||
value:userInfo.displayName];
|
||||
[linkedAccounts addObject:cell];
|
||||
}
|
||||
|
||||
_tableViewManager.contents =
|
||||
[FUIStaticContentTableViewContent contentWithSections:@[
|
||||
[FUIStaticContentTableViewSection sectionWithTitle:
|
||||
FUILocalizedString(kStr_ASSectionTitleProfile)
|
||||
cells:@[
|
||||
[FUIStaticContentTableViewCell cellWithTitle:FUILocalizedString(kStr_ASCellName)
|
||||
value:self.auth.currentUser.displayName
|
||||
action:^{
|
||||
[FUIAccountSettingsOperationUpdateName executeOperationWithDelegate:self showDialog:NO];
|
||||
}],
|
||||
[FUIStaticContentTableViewCell cellWithTitle:FUILocalizedString(kStr_ASCellEmail)
|
||||
value:self.auth.currentUser.email
|
||||
action:^{
|
||||
[FUIAccountSettingsOperationUpdateEmail executeOperationWithDelegate:self];
|
||||
}]
|
||||
]],
|
||||
[FUIStaticContentTableViewSection sectionWithTitle:
|
||||
FUILocalizedString(kStr_ASSectionTitleSecurity)
|
||||
cells:@[
|
||||
[FUIStaticContentTableViewCell cellWithTitle:FUILocalizedString(kStr_ASCellAddPassword)
|
||||
action:^{
|
||||
[FUIAccountSettingsOperationUpdatePassword executeOperationWithDelegate:self
|
||||
showDialog:YES
|
||||
newPassword:YES];
|
||||
}]
|
||||
]],
|
||||
[FUIStaticContentTableViewSection sectionWithTitle:
|
||||
FUILocalizedString(kStr_ASSectionTitleLinkedAccounts)
|
||||
cells:linkedAccounts],
|
||||
[self createActionsSection]
|
||||
]];
|
||||
}
|
||||
|
||||
- (void)updateTableStateLinkedAccountWithEmailPassword {
|
||||
NSMutableArray *linkedAccounts =
|
||||
[[NSMutableArray alloc] initWithCapacity:self.auth.currentUser.providerData.count];
|
||||
for (id<FIRUserInfo> userInfo in self.auth.currentUser.providerData) {
|
||||
if ([userInfo.providerID isEqualToString:FIREmailAuthProviderID]) {
|
||||
continue;
|
||||
}
|
||||
FUIStaticContentTableViewCell *cell =
|
||||
[FUIStaticContentTableViewCell cellWithTitle:
|
||||
[FUIAuthBaseViewController providerLocalizedName:userInfo.providerID]
|
||||
value:userInfo.displayName
|
||||
action:^{
|
||||
[FUIAccountSettingsOperationUnlinkAccount executeOperationWithDelegate:self
|
||||
showDialog:NO
|
||||
provider:userInfo];
|
||||
}];
|
||||
[linkedAccounts addObject:cell];
|
||||
}
|
||||
|
||||
_tableViewManager.contents =
|
||||
[FUIStaticContentTableViewContent contentWithSections:@[
|
||||
[FUIStaticContentTableViewSection sectionWithTitle:
|
||||
FUILocalizedString(kStr_ASSectionTitleProfile)
|
||||
cells:@[
|
||||
[FUIStaticContentTableViewCell cellWithTitle:FUILocalizedString(kStr_ASCellName)
|
||||
value:self.auth.currentUser.displayName
|
||||
action:^{
|
||||
[FUIAccountSettingsOperationUpdateName executeOperationWithDelegate:self showDialog:NO];
|
||||
}],
|
||||
[FUIStaticContentTableViewCell cellWithTitle:FUILocalizedString(kStr_ASCellEmail)
|
||||
value:self.auth.currentUser.email
|
||||
action:^{
|
||||
[FUIAccountSettingsOperationUpdateEmail executeOperationWithDelegate:self];
|
||||
}]
|
||||
]],
|
||||
[FUIStaticContentTableViewSection sectionWithTitle:
|
||||
FUILocalizedString(kStr_ASSectionTitleSecurity)
|
||||
cells:@[
|
||||
[FUIStaticContentTableViewCell cellWithTitle:FUILocalizedString(kStr_ASCellChangePassword)
|
||||
action:^{
|
||||
[FUIAccountSettingsOperationUpdatePassword executeOperationWithDelegate:self
|
||||
showDialog:YES
|
||||
newPassword:NO];
|
||||
}]
|
||||
]],
|
||||
[FUIStaticContentTableViewSection sectionWithTitle:
|
||||
FUILocalizedString(kStr_ASSectionTitleLinkedAccounts)
|
||||
cells:linkedAccounts],
|
||||
[self createActionsSection]
|
||||
]];
|
||||
}
|
||||
|
||||
- (FUIStaticContentTableViewSection *)createActionsSection {
|
||||
FUIStaticContentTableViewCell *signOutCell =
|
||||
[FUIStaticContentTableViewCell cellWithTitle:FUILocalizedString(kStr_ASCellSignOut)
|
||||
type:FUIStaticContentTableViewCellTypeButton
|
||||
action:^{
|
||||
[FUIAccountSettingsOperationSignOut executeOperationWithDelegate:self];
|
||||
}
|
||||
];
|
||||
NSMutableArray *cells = [NSMutableArray arrayWithObject:signOutCell];
|
||||
if (!_deleteAccountActionDisabled) {
|
||||
FUIStaticContentTableViewCell *deleteCell =
|
||||
[FUIStaticContentTableViewCell cellWithTitle:FUILocalizedString(kStr_ASCellDeleteAccount)
|
||||
type:FUIStaticContentTableViewCellTypeButton
|
||||
action:^{
|
||||
[FUIAccountSettingsOperationDeleteAccount executeOperationWithDelegate:self
|
||||
showDialog:YES];
|
||||
}
|
||||
];
|
||||
[cells addObject:deleteCell];
|
||||
}
|
||||
return [FUIStaticContentTableViewSection sectionWithTitle:nil cells:cells];
|
||||
}
|
||||
|
||||
- (void)updateUI {
|
||||
_accountState = [self accountState];
|
||||
[self populateTableHeader];
|
||||
[self updateTable];
|
||||
}
|
||||
|
||||
- (void)popToRoot {
|
||||
[self.navigationController popToViewController:self animated:YES];
|
||||
}
|
||||
|
||||
#pragma mark - FUIAccountSettingsOperationUIDelegate
|
||||
|
||||
- (void)presentViewController:(UIViewController *)controller {
|
||||
[self.navigationController presentViewController:controller animated:YES completion:nil];
|
||||
}
|
||||
|
||||
- (void)pushViewController:(UIViewController *)controller {
|
||||
[super pushViewController:controller];
|
||||
}
|
||||
|
||||
- (void)presentBaseController {
|
||||
[self popToRoot];
|
||||
[self updateUI];
|
||||
}
|
||||
|
||||
- (void)incrementActivity {
|
||||
UIViewController *controller = self.navigationController.topViewController;
|
||||
if (controller == self) {
|
||||
[super incrementActivity];
|
||||
} else if ([controller isKindOfClass:[FUIAuthBaseViewController class]]) {
|
||||
[(FUIAuthBaseViewController *)controller incrementActivity];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)decrementActivity {
|
||||
UIViewController *controller = self.navigationController.topViewController;
|
||||
if (controller == self) {
|
||||
[super decrementActivity];
|
||||
} else if ([controller isKindOfClass:[FUIAuthBaseViewController class]]) {
|
||||
[(FUIAuthBaseViewController *)controller decrementActivity];
|
||||
}
|
||||
}
|
||||
|
||||
- (UIViewController *)presentingController {
|
||||
return self;
|
||||
}
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,422 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuth_Internal.h"
|
||||
|
||||
#import <objc/runtime.h>
|
||||
|
||||
#import <FirebaseCore/FIRApp.h>
|
||||
#import <FirebaseCore/FIROptions.h>
|
||||
#import <FirebaseAuth/FIRAuth.h>
|
||||
#import <FirebaseAuth/FirebaseAuth.h>
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthBaseViewController_Internal.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthErrors.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthErrorUtils.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthPickerViewController.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthStrings.h"
|
||||
|
||||
/** @var kAppNameCodingKey
|
||||
@brief The key used to encode the app Name for NSCoding.
|
||||
*/
|
||||
static NSString *const kAppNameCodingKey = @"appName";
|
||||
|
||||
/** @var kAuthAssociationKey
|
||||
@brief The address of this variable is used as the key for associating FUIAuth instances with
|
||||
root FIRAuth objects.
|
||||
*/
|
||||
static const char kAuthAssociationKey;
|
||||
|
||||
/** @var kErrorUserInfoEmailKey
|
||||
@brief The key for the email address in the userInfo dictionary of a sign in error.
|
||||
*/
|
||||
static NSString *const kErrorUserInfoEmailKey = @"FIRAuthErrorUserInfoEmailKey";
|
||||
|
||||
/** @var kFirebaseAuthUIFrameworkMarker
|
||||
@brief The marker in the HTTP header that indicates the presence of Firebase Auth UI.
|
||||
*/
|
||||
static NSString *const kFirebaseAuthUIFrameworkMarker = @"FirebaseUI-iOS";
|
||||
|
||||
/** @category FIRAuth(InternalInterface)
|
||||
@brief Redeclares the internal interface not publicly exposed in FIRAuth.
|
||||
*/
|
||||
@interface FIRAuth (InternalInterface)
|
||||
|
||||
/** @property additionalFrameworkMarker
|
||||
@brief Additional framework marker that will be added as part of the header of every request.
|
||||
*/
|
||||
@property(nonatomic, copy, nullable) NSString *additionalFrameworkMarker;
|
||||
|
||||
@end
|
||||
|
||||
@interface FUIAuth ()
|
||||
|
||||
/** @fn initWithAuth:
|
||||
@brief auth The @c FIRAuth to associate the @c FUIAuth instance with.
|
||||
*/
|
||||
- (instancetype)initWithAuth:(FIRAuth *)auth NS_DESIGNATED_INITIALIZER;
|
||||
|
||||
@end
|
||||
|
||||
@implementation FUIAuth {
|
||||
id<FUIEmailAuthProvider> __weak _emailAuthProvider;
|
||||
}
|
||||
|
||||
+ (nullable FUIAuth *)defaultAuthUI {
|
||||
FIRAuth *defaultAuth = [FIRAuth auth];
|
||||
if (!defaultAuth) {
|
||||
return nil;
|
||||
}
|
||||
return [self authUIWithAuth:defaultAuth];
|
||||
}
|
||||
|
||||
+ (nullable FUIAuth *)authUIWithAuth:(FIRAuth *)auth {
|
||||
NSParameterAssert(auth != nil);
|
||||
@synchronized (self) {
|
||||
// Let the FIRAuth instance retain the FUIAuth instance.
|
||||
FUIAuth *authUI = objc_getAssociatedObject(auth, &kAuthAssociationKey);
|
||||
if (!authUI) {
|
||||
authUI = [[FUIAuth alloc] initWithAuth:auth];
|
||||
objc_setAssociatedObject(auth, &kAuthAssociationKey, authUI,
|
||||
OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
||||
if ([auth respondsToSelector:@selector(setAdditionalFrameworkMarker:)]) {
|
||||
auth.additionalFrameworkMarker = kFirebaseAuthUIFrameworkMarker;
|
||||
}
|
||||
// Update auth with the actual language used in the app.
|
||||
// If localization is not provided by developer, the first localization available,
|
||||
// ordered by the user's preferred order, is used.
|
||||
auth.languageCode = [NSBundle mainBundle].preferredLocalizations.firstObject;
|
||||
}
|
||||
return authUI;
|
||||
}
|
||||
}
|
||||
|
||||
- (instancetype)initWithAuth:(FIRAuth *)auth {
|
||||
self = [super init];
|
||||
if (self) {
|
||||
_auth = auth;
|
||||
_interactiveDismissEnabled = YES;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (BOOL)handleOpenURL:(NSURL *)URL
|
||||
sourceApplication:(NSString *)sourceApplication {
|
||||
// Complete IDP-based sign-in flow.
|
||||
for (id<FUIAuthProvider> provider in _providers) {
|
||||
if ([provider handleOpenURL:URL sourceApplication:sourceApplication]) {
|
||||
return YES;
|
||||
}
|
||||
}
|
||||
// The URL was not meant for us.
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (UINavigationController *)authViewController {
|
||||
static UINavigationController *authViewController;
|
||||
|
||||
UIViewController *controller;
|
||||
if ([self.delegate respondsToSelector:@selector(authPickerViewControllerForAuthUI:)]) {
|
||||
controller = [self.delegate authPickerViewControllerForAuthUI:self];
|
||||
} else {
|
||||
controller = [[FUIAuthPickerViewController alloc] initWithAuthUI:self];
|
||||
}
|
||||
authViewController = [[UINavigationController alloc] initWithRootViewController:controller];
|
||||
|
||||
return authViewController;
|
||||
}
|
||||
|
||||
- (BOOL)signOutWithError:(NSError *_Nullable *_Nullable)error {
|
||||
// sign out from Firebase
|
||||
BOOL success = [self.auth signOut:error];
|
||||
if (success) {
|
||||
// sign out from all providers (wipes provider tokens too)
|
||||
for (id<FUIAuthProvider> provider in _providers) {
|
||||
[provider signOut];
|
||||
}
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
- (void)signInWithProviderUI:(id<FUIAuthProvider>)providerUI
|
||||
presentingViewController:(FUIAuthBaseViewController *)presentingViewController
|
||||
defaultValue:(nullable NSString *)defaultValue {
|
||||
|
||||
// Sign out first to make sure sign in starts with a clean state.
|
||||
[providerUI signOut];
|
||||
[providerUI signInWithDefaultValue:defaultValue
|
||||
presentingViewController:presentingViewController
|
||||
completion:^(FIRAuthCredential *_Nullable credential,
|
||||
NSError *_Nullable error,
|
||||
_Nullable FIRAuthResultCallback result,
|
||||
NSDictionary *_Nullable userInfo) {
|
||||
BOOL isAuthPickerShown =
|
||||
[presentingViewController isKindOfClass:[FUIAuthPickerViewController class]];
|
||||
if (error) {
|
||||
if (!isAuthPickerShown || error.code != FUIAuthErrorCodeUserCancelledSignIn) {
|
||||
[self invokeResultCallbackWithAuthDataResult:nil URL:nil error:error];
|
||||
}
|
||||
if (result) {
|
||||
result(nil, error);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// Test if it's an anonymous login.
|
||||
if (self.auth.currentUser.isAnonymous && !credential) {
|
||||
if (result) {
|
||||
result(self.auth.currentUser, nil);
|
||||
}
|
||||
// Hide Auth Picker Controller which was presented modally.
|
||||
if (isAuthPickerShown && presentingViewController.presentingViewController) {
|
||||
[presentingViewController dismissViewControllerAnimated:YES completion:nil];
|
||||
}
|
||||
FIRAuthDataResult *authResult = userInfo[FUIAuthProviderSignInUserInfoKeyAuthDataResult];
|
||||
if (authResult != nil) {
|
||||
[self invokeResultCallbackWithAuthDataResult:authResult URL:nil error:error];
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// Check for the presence of an anonymous user and whether automatic upgrade is enabled.
|
||||
if (self.auth.currentUser.isAnonymous && self.shouldAutoUpgradeAnonymousUsers) {
|
||||
[self autoUpgradeAccountWithProviderUI:providerUI
|
||||
presentingViewController:presentingViewController
|
||||
credential:credential
|
||||
resultCallback:result];
|
||||
} else {
|
||||
[self.auth signInWithCredential:credential
|
||||
completion:^(FIRAuthDataResult *_Nullable authResult,
|
||||
NSError *_Nullable error) {
|
||||
if (error && error.code == FIRAuthErrorCodeAccountExistsWithDifferentCredential) {
|
||||
NSString *email = error.userInfo[kErrorUserInfoEmailKey];
|
||||
[self.emailAuthProvider handleAccountLinkingForEmail:email
|
||||
newCredential:credential
|
||||
presentingViewController:presentingViewController
|
||||
signInResult:result];
|
||||
|
||||
return;
|
||||
}
|
||||
if (error) {
|
||||
if (result) {
|
||||
result(nil, error);
|
||||
}
|
||||
[self invokeResultCallbackWithAuthDataResult:nil URL:nil error:error];
|
||||
return;
|
||||
}
|
||||
[self completeSignInWithResult:authResult
|
||||
error:nil
|
||||
presentingViewController:presentingViewController
|
||||
callback:result];
|
||||
}];
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)autoUpgradeAccountWithProviderUI:(id<FUIAuthProvider>)providerUI
|
||||
presentingViewController:(FUIAuthBaseViewController *)presentingViewController
|
||||
credential:(nullable FIRAuthCredential *)credential
|
||||
resultCallback:(nullable FIRAuthResultCallback)callback {
|
||||
[self.auth.currentUser
|
||||
linkWithCredential:credential
|
||||
completion:^(FIRAuthDataResult *_Nullable authResult,
|
||||
NSError * _Nullable error) {
|
||||
if (error) {
|
||||
// Check for "credential in use" conflict error and handle appropriately.
|
||||
if (error.code == FIRAuthErrorCodeCredentialAlreadyInUse) {
|
||||
FIRAuthCredential *newCredential = error.userInfo[FIRAuthErrorUserInfoUpdatedCredentialKey];
|
||||
NSDictionary *userInfo = @{ };
|
||||
if (newCredential) {
|
||||
userInfo = @{ FUIAuthCredentialKey : newCredential };
|
||||
}
|
||||
NSError *mergeError = [FUIAuthErrorUtils mergeConflictErrorWithUserInfo:userInfo
|
||||
underlyingError:error];
|
||||
[self completeSignInWithResult:authResult
|
||||
error:mergeError
|
||||
presentingViewController:presentingViewController
|
||||
callback:callback];
|
||||
} else if (error.code == FIRAuthErrorCodeEmailAlreadyInUse) {
|
||||
if ([providerUI respondsToSelector:@selector(email)]) {
|
||||
// Link federated providers
|
||||
[self.emailAuthProvider signInWithEmailHint:[providerUI email]
|
||||
presentingViewController:presentingViewController
|
||||
originalError:error
|
||||
completion:
|
||||
^(FIRAuthDataResult *_Nullable authResult,
|
||||
NSError *_Nullable emailError,
|
||||
FIRAuthCredential *_Nullable existingCredential) {
|
||||
if (emailError) {
|
||||
[self completeSignInWithResult:nil
|
||||
error:emailError
|
||||
presentingViewController:presentingViewController
|
||||
callback:callback];
|
||||
return;
|
||||
}
|
||||
|
||||
if (![authResult.user.email isEqualToString:[providerUI email]]
|
||||
&& credential != nil) {
|
||||
NSDictionary *userInfo = @{
|
||||
FUIAuthCredentialKey : credential,
|
||||
};
|
||||
NSError *mergeError = [FUIAuthErrorUtils mergeConflictErrorWithUserInfo:userInfo
|
||||
underlyingError:error];
|
||||
[self completeSignInWithResult:authResult
|
||||
error:mergeError
|
||||
presentingViewController:presentingViewController
|
||||
callback:callback];
|
||||
return;
|
||||
}
|
||||
|
||||
[authResult.user linkWithCredential:credential
|
||||
completion:^(FIRAuthDataResult *authResult,
|
||||
NSError *linkError) {
|
||||
if (linkError) {
|
||||
[self completeSignInWithResult:nil
|
||||
error:linkError
|
||||
presentingViewController:presentingViewController
|
||||
callback:callback];
|
||||
return;
|
||||
}
|
||||
FIRAuthCredential *newCredential = credential;
|
||||
NSDictionary *userInfo = @{
|
||||
FUIAuthCredentialKey : newCredential,
|
||||
};
|
||||
NSError *mergeError = [FUIAuthErrorUtils mergeConflictErrorWithUserInfo:userInfo
|
||||
underlyingError:error];
|
||||
[self completeSignInWithResult:authResult
|
||||
error:mergeError
|
||||
presentingViewController:presentingViewController
|
||||
callback:callback];
|
||||
}];
|
||||
}];
|
||||
}
|
||||
} else {
|
||||
[self completeSignInWithResult:nil
|
||||
error:error
|
||||
presentingViewController:presentingViewController
|
||||
callback:callback];
|
||||
}
|
||||
} else {
|
||||
[self completeSignInWithResult:authResult
|
||||
error:nil
|
||||
presentingViewController:presentingViewController
|
||||
callback:callback];
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)completeSignInWithResult:(nullable FIRAuthDataResult *)authResult
|
||||
error:(nullable NSError *)error
|
||||
presentingViewController:(FUIAuthBaseViewController *)presentingViewController
|
||||
callback:(nullable FIRAuthResultCallback)callback {
|
||||
BOOL isAuthPickerShown =
|
||||
[presentingViewController isKindOfClass:[FUIAuthPickerViewController class]];
|
||||
if (callback) {
|
||||
callback(authResult.user, error);
|
||||
}
|
||||
// Hide Auth Picker Controller which was presented modally.
|
||||
if (isAuthPickerShown && presentingViewController.presentingViewController) {
|
||||
[presentingViewController dismissViewControllerAnimated:YES completion:^{
|
||||
[self invokeResultCallbackWithAuthDataResult:authResult URL:nil error:error];
|
||||
}];
|
||||
} else {
|
||||
[self invokeResultCallbackWithAuthDataResult:authResult URL:nil error:error];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)useEmulatorWithHost:(NSString *)host port:(NSInteger)port {
|
||||
[self.auth useEmulatorWithHost:host port:port];
|
||||
self.emulatorEnabled = YES;
|
||||
}
|
||||
|
||||
#pragma mark - Internal Methods
|
||||
|
||||
- (void)invokeResultCallbackWithAuthDataResult:(nullable FIRAuthDataResult *)authDataResult
|
||||
URL:(nullable NSURL *)url
|
||||
error:(nullable NSError *)error {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
if ([self.delegate respondsToSelector:@selector(authUI:didSignInWithAuthDataResult:URL:error:)]) {
|
||||
[self.delegate authUI:self
|
||||
didSignInWithAuthDataResult:authDataResult
|
||||
URL:url
|
||||
error:error];
|
||||
}
|
||||
if ([self.delegate respondsToSelector:@selector(authUI:didSignInWithAuthDataResult:error:)]) {
|
||||
[self.delegate authUI:self didSignInWithAuthDataResult:authDataResult error:error];
|
||||
}
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
|
||||
if ([self.delegate respondsToSelector:@selector(authUI:didSignInWithUser:error:)]) {
|
||||
[self.delegate authUI:self didSignInWithUser:authDataResult.user error:error];
|
||||
}
|
||||
#pragma clang diagnostic pop
|
||||
});
|
||||
}
|
||||
|
||||
- (void)invokeOperationCallback:(FUIAccountSettingsOperationType)operation
|
||||
error:(NSError *_Nullable)error {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
if ([self.delegate respondsToSelector:@selector(authUI:didFinishOperation:error:)]) {
|
||||
[self.delegate authUI:self didFinishOperation:operation error:error];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
- (nullable id<FUIAuthProvider>)providerWithID:(NSString *)providerID {
|
||||
NSArray<id<FUIAuthProvider>> *providers = self.providers;
|
||||
for (id<FUIAuthProvider> provider in providers) {
|
||||
if ([provider.providerID isEqual:providerID]) {
|
||||
return provider;
|
||||
}
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (void)setEmailAuthProvider:(id<FUIEmailAuthProvider>)emailAuthProvider {
|
||||
_emailAuthProvider = emailAuthProvider;
|
||||
}
|
||||
|
||||
- (id<FUIEmailAuthProvider>)emailAuthProvider {
|
||||
return _emailAuthProvider;
|
||||
}
|
||||
|
||||
#pragma mark - NSSecureCoding
|
||||
|
||||
+ (BOOL)supportsSecureCoding {
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder {
|
||||
NSString *appName = [aDecoder decodeObjectOfClass:[NSString class] forKey:kAppNameCodingKey];
|
||||
if (!appName) {
|
||||
return nil;
|
||||
}
|
||||
FIRApp *app = [FIRApp appNamed:appName];
|
||||
if (!app) {
|
||||
return nil;
|
||||
}
|
||||
FIRAuth *auth = [FIRAuth authWithApp:app];
|
||||
if (!auth) {
|
||||
return nil;
|
||||
}
|
||||
return [self initWithAuth:auth];
|
||||
}
|
||||
|
||||
- (void)encodeWithCoder:(NSCoder *)aCoder {
|
||||
[aCoder encodeObject:_auth.app.name forKey:kAppNameCodingKey];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,450 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthBaseViewController_Internal.h"
|
||||
|
||||
#import <FirebaseAuth/FirebaseAuth.h>
|
||||
#import <objc/runtime.h>
|
||||
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthErrorUtils.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthStrings.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthUtils.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuth_Internal.h"
|
||||
|
||||
|
||||
/** @var kActivityIndiactorPadding
|
||||
@brief The padding between the activity indiactor and its overlay.
|
||||
*/
|
||||
static const CGFloat kActivityIndiactorPadding = 20.0f;
|
||||
|
||||
/** @var kActivityIndiactorOverlayCornerRadius
|
||||
@brief The corner radius of the overlay of the activity indicator.
|
||||
*/
|
||||
static const CGFloat kActivityIndiactorOverlayCornerRadius = 20.0f;
|
||||
|
||||
/** @var kActivityIndiactorOverlayOpacity
|
||||
@brief The opacity of the overlay of the activity indicator.
|
||||
*/
|
||||
static const CGFloat kActivityIndiactorOverlayOpacity = 0.8f;
|
||||
|
||||
/** @var kActivityIndiactorAnimationDelay
|
||||
@brief The time delay before the activity indicator is actually animated.
|
||||
*/
|
||||
static const NSTimeInterval kActivityIndiactorAnimationDelay = 0.5f;
|
||||
|
||||
/** @var kUITableViewCellHeight
|
||||
@brief Height of all table view cells used in subclasses of the controller.
|
||||
*/
|
||||
static const CGFloat kUITableViewCellHeight = 44.f;
|
||||
|
||||
/** @var kEmailRegex
|
||||
@brief Regular expression for matching email addresses.
|
||||
*/
|
||||
static NSString *const kEmailRegex = @".+@([a-zA-Z0-9\\-]+\\.)+[a-zA-Z0-9]{2,63}";
|
||||
|
||||
/** @var kAuthUICodingKey
|
||||
@brief The key used to encode @c FUIAuth instance for NSCoding.
|
||||
*/
|
||||
static NSString *const kAuthUICodingKey = @"authUI";
|
||||
|
||||
@implementation FUIAuthBaseViewController {
|
||||
/** @var _activityIndicator
|
||||
@brief A spinner that is displayed when there's an ongoing activity.
|
||||
*/
|
||||
UIActivityIndicatorView *_activityIndicator;
|
||||
|
||||
/** @var _activityCount
|
||||
@brief Count of current ongoing activities.
|
||||
*/
|
||||
NSInteger _activityCount;
|
||||
}
|
||||
|
||||
- (instancetype)initWithNibName:(NSString *)nibNameOrNil
|
||||
bundle:(NSBundle *)nibBundleOrNil
|
||||
authUI:(FUIAuth *)authUI {
|
||||
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
|
||||
if (self) {
|
||||
_auth = authUI.auth;
|
||||
_authUI = authUI;
|
||||
|
||||
_activityIndicator = [[self class] addActivityIndicator:self.view];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (instancetype)initWithAuthUI:(FUIAuth *)authUI {
|
||||
return [self initWithNibName:NSStringFromClass([self class])
|
||||
bundle:[FUIAuthUtils authUIBundle]
|
||||
authUI:authUI];
|
||||
}
|
||||
|
||||
- (void)viewDidLayoutSubviews {
|
||||
[super viewDidLayoutSubviews];
|
||||
|
||||
CGPoint activityIndicatorCenter = self.view.center;
|
||||
// Compensate for bounds adjustment if any.
|
||||
activityIndicatorCenter.y += self.view.bounds.origin.y;
|
||||
_activityIndicator.center = activityIndicatorCenter;
|
||||
}
|
||||
|
||||
#pragma mark - NSCoding
|
||||
|
||||
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder {
|
||||
FUIAuth *authUI = [aDecoder decodeObjectOfClass:[FUIAuth class] forKey:kAuthUICodingKey];
|
||||
if (!authUI) {
|
||||
return nil;
|
||||
}
|
||||
return [self initWithAuthUI:authUI];
|
||||
}
|
||||
|
||||
- (void)encodeWithCoder:(NSCoder *)aCoder {
|
||||
[aCoder encodeObject:_authUI forKey:kAuthUICodingKey];
|
||||
}
|
||||
|
||||
#pragma mark - Utilities
|
||||
|
||||
+ (BOOL)isValidEmail:(NSString *)email {
|
||||
static dispatch_once_t onceToken;
|
||||
static NSPredicate *emailPredicate;
|
||||
dispatch_once(&onceToken, ^{
|
||||
emailPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", kEmailRegex];
|
||||
});
|
||||
return [emailPredicate evaluateWithObject:email];
|
||||
}
|
||||
|
||||
+ (UIActivityIndicatorView *)addActivityIndicator:(UIView *)view {
|
||||
if (!view) {
|
||||
return nil;
|
||||
}
|
||||
UIActivityIndicatorView *activityIndicator =
|
||||
[[UIActivityIndicatorView alloc]
|
||||
initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
|
||||
UIView *tintView = [[UIView alloc] initWithFrame:CGRectInset(activityIndicator.frame,
|
||||
-kActivityIndiactorPadding,
|
||||
-kActivityIndiactorPadding)];
|
||||
tintView.backgroundColor =
|
||||
[UIColor colorWithWhite:0 alpha:kActivityIndiactorOverlayOpacity];
|
||||
tintView.layer.cornerRadius = kActivityIndiactorOverlayCornerRadius;
|
||||
[activityIndicator addSubview:tintView];
|
||||
|
||||
// Align tintView (transparent background).
|
||||
tintView.translatesAutoresizingMaskIntoConstraints = NO;
|
||||
[activityIndicator addConstraint:
|
||||
[NSLayoutConstraint constraintWithItem:tintView
|
||||
attribute:NSLayoutAttributeWidth
|
||||
relatedBy:NSLayoutRelationEqual
|
||||
toItem:nil
|
||||
attribute:NSLayoutAttributeNotAnAttribute
|
||||
multiplier:1
|
||||
constant:CGRectGetWidth(tintView.frame)]];
|
||||
[activityIndicator addConstraint:
|
||||
[NSLayoutConstraint constraintWithItem:tintView
|
||||
attribute:NSLayoutAttributeCenterX
|
||||
relatedBy:NSLayoutRelationEqual
|
||||
toItem:activityIndicator
|
||||
attribute:NSLayoutAttributeCenterX
|
||||
multiplier:1
|
||||
constant:0]];
|
||||
|
||||
[activityIndicator addConstraint:
|
||||
[NSLayoutConstraint constraintWithItem:tintView
|
||||
attribute:NSLayoutAttributeHeight
|
||||
relatedBy:NSLayoutRelationEqual
|
||||
toItem:nil
|
||||
attribute:NSLayoutAttributeNotAnAttribute
|
||||
multiplier:1
|
||||
constant:CGRectGetHeight(tintView.frame)]];
|
||||
[activityIndicator addConstraint:
|
||||
[NSLayoutConstraint constraintWithItem:tintView
|
||||
attribute:NSLayoutAttributeCenterY
|
||||
relatedBy:NSLayoutRelationEqual
|
||||
toItem:activityIndicator
|
||||
attribute:NSLayoutAttributeCenterY
|
||||
multiplier:1
|
||||
constant:0]];
|
||||
|
||||
[activityIndicator sendSubviewToBack:tintView];
|
||||
|
||||
[view addSubview:activityIndicator];
|
||||
// Align activity indicator.
|
||||
activityIndicator.translatesAutoresizingMaskIntoConstraints = NO;
|
||||
[view addConstraint:
|
||||
[NSLayoutConstraint constraintWithItem:activityIndicator
|
||||
attribute:NSLayoutAttributeWidth
|
||||
relatedBy:NSLayoutRelationEqual
|
||||
toItem:view
|
||||
attribute:NSLayoutAttributeWidth
|
||||
multiplier:1
|
||||
constant:0]];
|
||||
[view addConstraint:
|
||||
[NSLayoutConstraint constraintWithItem:activityIndicator
|
||||
attribute:NSLayoutAttributeCenterX
|
||||
relatedBy:NSLayoutRelationEqual
|
||||
toItem:view
|
||||
attribute:NSLayoutAttributeCenterX
|
||||
multiplier:1
|
||||
constant:0]];
|
||||
|
||||
[view addConstraint:
|
||||
[NSLayoutConstraint constraintWithItem:activityIndicator
|
||||
attribute:NSLayoutAttributeHeight
|
||||
relatedBy:NSLayoutRelationEqual
|
||||
toItem:view
|
||||
attribute:NSLayoutAttributeHeight
|
||||
multiplier:1
|
||||
constant:0]];
|
||||
[view addConstraint:
|
||||
[NSLayoutConstraint constraintWithItem:activityIndicator
|
||||
attribute:NSLayoutAttributeCenterY
|
||||
relatedBy:NSLayoutRelationEqual
|
||||
toItem:view
|
||||
attribute:NSLayoutAttributeCenterY
|
||||
multiplier:1
|
||||
constant:0]];
|
||||
return activityIndicator;
|
||||
}
|
||||
|
||||
- (void)showAlertWithMessage:(NSString *)message {
|
||||
[[self class] showAlertWithMessage:message presentingViewController:self];
|
||||
}
|
||||
|
||||
+ (void)showAlertWithMessage:(NSString *)message {
|
||||
[[self class] showAlertWithMessage:message presentingViewController:nil];
|
||||
}
|
||||
|
||||
+ (void)showAlertWithMessage:(NSString *)message
|
||||
presentingViewController:(nullable UIViewController *)presentingViewController {
|
||||
[[self class] showAlertWithTitle:message
|
||||
message:nil
|
||||
presentingViewController:presentingViewController];
|
||||
}
|
||||
|
||||
+ (void)showAlertWithTitle:(nullable NSString *)title
|
||||
message:(nullable NSString *)message
|
||||
presentingViewController:(nullable UIViewController *)presentingViewController {
|
||||
[[self class] showAlertWithTitle:title
|
||||
message:message
|
||||
actionTitle:nil
|
||||
actionHandler:nil
|
||||
dismissTitle:FUILocalizedString(kStr_OK)
|
||||
dismissHandler:nil
|
||||
presentingViewController:presentingViewController];
|
||||
}
|
||||
|
||||
+ (void)showAlertWithTitle:(nullable NSString *)title
|
||||
message:(nullable NSString *)message
|
||||
actionTitle:(nullable NSString *)actionTitle
|
||||
actionHandler:(nullable FUIAuthAlertActionHandler)actionHandler
|
||||
dismissTitle:(nullable NSString *)dismissTitle
|
||||
dismissHandler:(nullable FUIAuthAlertActionHandler)dismissHandler
|
||||
presentingViewController:(nullable UIViewController *)presentingViewController {
|
||||
UIAlertController *alertController =
|
||||
[UIAlertController alertControllerWithTitle:title
|
||||
message:message
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
if (actionTitle) {
|
||||
UIAlertAction *action =
|
||||
[UIAlertAction actionWithTitle:actionTitle
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction *_Nonnull action) {
|
||||
if (actionHandler) {
|
||||
actionHandler();
|
||||
}
|
||||
}];
|
||||
[alertController addAction:action];
|
||||
}
|
||||
|
||||
if (dismissTitle) {
|
||||
UIAlertAction *dismissAction =
|
||||
[UIAlertAction actionWithTitle:dismissTitle
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * _Nonnull action) {
|
||||
if (dismissHandler) {
|
||||
dismissHandler();
|
||||
}
|
||||
}];
|
||||
[alertController addAction:dismissAction];
|
||||
}
|
||||
|
||||
if (presentingViewController) {
|
||||
[presentingViewController presentViewController:alertController animated:YES completion:nil];
|
||||
} else {
|
||||
UIViewController *viewController = [[UIViewController alloc] init];
|
||||
viewController.view.backgroundColor = UIColor.clearColor;
|
||||
UIWindow *window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
|
||||
window.rootViewController = viewController;
|
||||
window.windowLevel = UIWindowLevelAlert + 1;
|
||||
[window makeKeyAndVisible];
|
||||
[viewController presentViewController:alertController animated:YES completion:nil];
|
||||
|
||||
if (@available(iOS 13.0, *)) {
|
||||
/*
|
||||
Earlier iOS versions established a strong reference to the window when makeKeyAndVisible was called.
|
||||
Now we add one from the alert controller, to prevent objects from getting garbage collected right away.
|
||||
*/
|
||||
static char key;
|
||||
objc_setAssociatedObject(alertController, &key, window, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+ (void)showSignInAlertWithEmail:(NSString *)email
|
||||
provider:(id<FUIAuthProvider>)provider
|
||||
presentingViewController:(UIViewController *)presentingViewController
|
||||
signinHandler:(FUIAuthAlertActionHandler)signinHandler
|
||||
cancelHandler:(FUIAuthAlertActionHandler)cancelHandler {
|
||||
[self showSignInAlertWithEmail:email
|
||||
providerShortName:provider.shortName
|
||||
providerSignInLabel:provider.signInLabel
|
||||
presentingViewController:presentingViewController
|
||||
signinHandler:signinHandler
|
||||
cancelHandler:cancelHandler];
|
||||
}
|
||||
|
||||
+ (void)showSignInAlertWithEmail:(NSString *)email
|
||||
providerShortName:(NSString *)providerShortName
|
||||
providerSignInLabel:(NSString *)providerSignInLabel
|
||||
presentingViewController:(UIViewController *)presentingViewController
|
||||
signinHandler:(FUIAuthAlertActionHandler)signinHandler
|
||||
cancelHandler:(FUIAuthAlertActionHandler)cancelHandler {
|
||||
NSString *message =
|
||||
[NSString stringWithFormat:FUILocalizedString(kStr_ProviderUsedPreviouslyMessage),
|
||||
email, providerShortName];
|
||||
UIAlertController *alertController =
|
||||
[UIAlertController alertControllerWithTitle:FUILocalizedString(kStr_ExistingAccountTitle)
|
||||
message:message
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
UIAlertAction *signInAction =
|
||||
[UIAlertAction actionWithTitle:providerSignInLabel
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction *_Nonnull action) {
|
||||
if (signinHandler) {
|
||||
signinHandler();
|
||||
}
|
||||
}];
|
||||
[alertController addAction:signInAction];
|
||||
UIAlertAction *cancelAction =
|
||||
[UIAlertAction actionWithTitle:FUILocalizedString(kStr_Cancel)
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * _Nonnull action) {
|
||||
if (cancelHandler) {
|
||||
cancelHandler();
|
||||
}
|
||||
}];
|
||||
[alertController addAction:cancelAction];
|
||||
[presentingViewController presentViewController:alertController animated:YES completion:nil];
|
||||
}
|
||||
|
||||
- (void)pushViewController:(UIViewController *)viewController {
|
||||
[[self class] pushViewController:viewController
|
||||
navigationController:self.navigationController];
|
||||
}
|
||||
|
||||
- (void)dismissNavigationControllerAnimated:(BOOL)animated completion:(void (^)(void))completion {
|
||||
if (self.navigationController.presentingViewController == nil){
|
||||
if (completion){
|
||||
completion();
|
||||
}
|
||||
} else {
|
||||
[self.navigationController dismissViewControllerAnimated:animated completion:completion];
|
||||
}
|
||||
}
|
||||
|
||||
+ (void)pushViewController:(UIViewController *)viewController
|
||||
navigationController:(UINavigationController *)navigationController {
|
||||
// Override the back button title with "Back".
|
||||
viewController.navigationItem.backBarButtonItem =
|
||||
[[UIBarButtonItem alloc] initWithTitle:FUILocalizedString(kStr_Back)
|
||||
style:UIBarButtonItemStylePlain
|
||||
target:nil
|
||||
action:nil];
|
||||
[navigationController pushViewController:viewController animated:YES];
|
||||
}
|
||||
|
||||
|
||||
+ (UIBarButtonItem *)barItemWithTitle:(NSString *)title
|
||||
target:(nullable id)target
|
||||
action:(SEL)action {
|
||||
UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithTitle:title
|
||||
style:UIBarButtonItemStylePlain
|
||||
target:target
|
||||
action:action];
|
||||
return buttonItem;
|
||||
}
|
||||
|
||||
- (void)onBack {
|
||||
if (self.navigationController.viewControllers.count > 1) {
|
||||
[self.navigationController popViewControllerAnimated:YES];
|
||||
} else {
|
||||
[self cancelAuthorization];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)incrementActivity {
|
||||
_activityCount++;
|
||||
|
||||
// Delay the display of acitivty indiactor for a short period of time.
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW,
|
||||
(int64_t)(kActivityIndiactorAnimationDelay * NSEC_PER_SEC)),
|
||||
dispatch_get_main_queue(), ^{
|
||||
[self->_activityIndicator.superview bringSubviewToFront:self->_activityIndicator];
|
||||
if (self->_activityCount > 0) {
|
||||
[self->_activityIndicator startAnimating];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
- (void)decrementActivity {
|
||||
_activityCount--;
|
||||
|
||||
if (_activityCount < 0) {
|
||||
NSLog(@"Unbalanced calls to incrementActivity and decrementActivity.");
|
||||
_activityCount = 0;
|
||||
}
|
||||
|
||||
if (_activityCount == 0) {
|
||||
[_activityIndicator.superview sendSubviewToBack:_activityIndicator];
|
||||
[_activityIndicator stopAnimating];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)cancelAuthorization {
|
||||
[self dismissNavigationControllerAnimated:YES completion:^{
|
||||
NSError *error = [FUIAuthErrorUtils userCancelledSignInError];
|
||||
[self.authUI invokeResultCallbackWithAuthDataResult:nil URL:nil error:error];
|
||||
}];
|
||||
}
|
||||
|
||||
+ (NSString *)providerLocalizedName:(NSString *)providerId {
|
||||
if ([providerId isEqualToString:FIREmailAuthProviderID]) {
|
||||
return FUILocalizedString(kStr_ProviderTitlePassword);
|
||||
} else if ([providerId isEqualToString:FIRGoogleAuthProviderID]) {
|
||||
return FUILocalizedString(kStr_ProviderTitleGoogle);
|
||||
} else if ([providerId isEqualToString:FIRFacebookAuthProviderID]) {
|
||||
return FUILocalizedString(kStr_ProviderTitleFacebook);
|
||||
} else if ([providerId isEqualToString:FIRTwitterAuthProviderID]) {
|
||||
return FUILocalizedString(kStr_ProviderTitleTwitter);
|
||||
}
|
||||
return @"";
|
||||
}
|
||||
|
||||
- (void)enableDynamicCellHeightForTableView:(UITableView *)tableView {
|
||||
tableView.rowHeight = UITableViewAutomaticDimension;
|
||||
tableView.estimatedRowHeight = kUITableViewCellHeight;
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthErrorUtils.h"
|
||||
|
||||
@implementation FUIAuthErrorUtils
|
||||
|
||||
+ (NSError *)errorWithCode:(FUIAuthErrorCode)code userInfo:(NSDictionary *)userInfo {
|
||||
return [NSError errorWithDomain:FUIAuthErrorDomain code:code userInfo:userInfo];
|
||||
}
|
||||
|
||||
+ (NSError *)userCancelledSignInError {
|
||||
return [self errorWithCode:FUIAuthErrorCodeUserCancelledSignIn userInfo:nil];
|
||||
}
|
||||
|
||||
+ (NSError *)mergeConflictErrorWithUserInfo:(NSDictionary *)userInfo
|
||||
underlyingError:(NSError *)underlyingError {
|
||||
NSMutableDictionary *errorInfo = [userInfo mutableCopy];
|
||||
if (underlyingError != nil) {
|
||||
errorInfo[NSUnderlyingErrorKey] = underlyingError;
|
||||
}
|
||||
errorInfo[NSLocalizedDescriptionKey] = @"Unable to merge accounts. Check the userInfo dictionary"
|
||||
@" for the auth credential of the logged-in account.";
|
||||
return [self errorWithCode:FUIAuthErrorCodeMergeConflict userInfo:[errorInfo copy]];
|
||||
}
|
||||
|
||||
+ (NSError *)providerErrorWithUnderlyingError:(NSError *)underlyingError
|
||||
providerID:(NSString *)providerID {
|
||||
return [self errorWithCode:FUIAuthErrorCodeProviderError
|
||||
userInfo:@{
|
||||
NSUnderlyingErrorKey : underlyingError,
|
||||
FUIAuthErrorUserInfoProviderIDKey : providerID
|
||||
}];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,23 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthErrors.h"
|
||||
|
||||
NSString *const FUIAuthErrorDomain = @"FUIAuthErrorDomain";
|
||||
|
||||
NSString *const FUIAuthErrorUserInfoProviderIDKey = @"FUIAuthErrorUserInfoProviderIDKey";
|
||||
|
||||
NSString *const FUIAuthCredentialKey = @"FUIAuthCredentialKey";
|
||||
@@ -0,0 +1,208 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthPickerViewController.h"
|
||||
|
||||
#import <AuthenticationServices/AuthenticationServices.h>
|
||||
#import <FirebaseAuth/FirebaseAuth.h>
|
||||
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthBaseViewController_Internal.h"
|
||||
#import "FirebaseAuthUI/Sources/FUIAuthSignInButton.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthStrings.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthUtils.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuth_Internal.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIPrivacyAndTermsOfServiceView.h"
|
||||
|
||||
/** @var kSignInButtonWidth
|
||||
@brief The width of the sign in buttons.
|
||||
*/
|
||||
static const CGFloat kSignInButtonWidth = 220.0f;
|
||||
|
||||
/** @var kSignInButtonHeight
|
||||
@brief The height of the sign in buttons.
|
||||
*/
|
||||
static const CGFloat kSignInButtonHeight = 40.0f;
|
||||
|
||||
/** @var kSignInButtonVerticalMargin
|
||||
@brief The vertical margin between sign in buttons.
|
||||
*/
|
||||
static const CGFloat kSignInButtonVerticalMargin = 24.0f;
|
||||
|
||||
/** @var kButtonContainerBottomMargin
|
||||
@brief The magin between sign in buttons and the bottom of the content view.
|
||||
*/
|
||||
static const CGFloat kButtonContainerBottomMargin = 48.0f;
|
||||
|
||||
/** @var kButtonContainerTopMargin
|
||||
@brief The margin between sign in buttons and the top of the content view.
|
||||
*/
|
||||
static const CGFloat kButtonContainerTopMargin = 16.0f;
|
||||
|
||||
/** @var kTOSViewBottomMargin
|
||||
@brief The margin between privacy policy and TOS view and the bottom of the content view.
|
||||
*/
|
||||
static const CGFloat kTOSViewBottomMargin = 24.0f;
|
||||
|
||||
/** @var kTOSViewHorizontalMargin
|
||||
@brief The margin between privacy policy and TOS view and the left or right of the content view.
|
||||
*/
|
||||
static const CGFloat kTOSViewHorizontalMargin = 16.0f;
|
||||
|
||||
@implementation FUIAuthPickerViewController {
|
||||
UIView *_buttonContainerView;
|
||||
|
||||
IBOutlet FUIPrivacyAndTermsOfServiceView *_privacyPolicyAndTOSView;
|
||||
|
||||
IBOutlet UIView *_contentView;
|
||||
|
||||
IBOutlet UIScrollView *_scrollView;
|
||||
}
|
||||
|
||||
- (instancetype)initWithAuthUI:(FUIAuth *)authUI {
|
||||
return [self initWithNibName:@"FUIAuthPickerViewController"
|
||||
bundle:[FUIAuthUtils authUIBundle]
|
||||
authUI:authUI];
|
||||
}
|
||||
|
||||
- (instancetype)initWithNibName:(NSString *)nibNameOrNil
|
||||
bundle:(NSBundle *)nibBundleOrNil
|
||||
authUI:(FUIAuth *)authUI {
|
||||
|
||||
self = [super initWithNibName:nibNameOrNil
|
||||
bundle:nibBundleOrNil
|
||||
authUI:authUI];
|
||||
if (self) {
|
||||
self.title = FUILocalizedString(kStr_AuthPickerTitle);
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
|
||||
// Makes sure that embedded scroll view properly handles translucent navigation bar
|
||||
if (!self.navigationController.navigationBar.isTranslucent) {
|
||||
self.extendedLayoutIncludesOpaqueBars = true;
|
||||
}
|
||||
|
||||
if (!self.authUI.shouldHideCancelButton) {
|
||||
UIBarButtonItem *cancelBarButton =
|
||||
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
|
||||
target:self
|
||||
action:@selector(cancelAuthorization)];
|
||||
self.navigationItem.leftBarButtonItem = cancelBarButton;
|
||||
}
|
||||
if (@available(iOS 13, *)) {
|
||||
if (!self.authUI.interactiveDismissEnabled) {
|
||||
self.modalInPresentation = YES;
|
||||
}
|
||||
}
|
||||
|
||||
self.navigationItem.backBarButtonItem =
|
||||
[[UIBarButtonItem alloc] initWithTitle:FUILocalizedString(kStr_Back)
|
||||
style:UIBarButtonItemStylePlain
|
||||
target:nil
|
||||
action:nil];
|
||||
|
||||
NSInteger numberOfButtons = self.authUI.providers.count;
|
||||
|
||||
CGFloat buttonContainerViewHeight =
|
||||
kSignInButtonHeight * numberOfButtons + kSignInButtonVerticalMargin * (numberOfButtons);
|
||||
CGRect buttonContainerViewFrame = CGRectMake(0, 0, kSignInButtonWidth, buttonContainerViewHeight);
|
||||
_buttonContainerView = [[UIView alloc] initWithFrame:buttonContainerViewFrame];
|
||||
if (_scrollView) {
|
||||
[_contentView addSubview:_buttonContainerView];
|
||||
} else {
|
||||
// For backward compatibility. The old auth picker view does not have a scroll view and its
|
||||
// customized class put the button container view directly into self.view.
|
||||
[self.view addSubview:_buttonContainerView];
|
||||
}
|
||||
|
||||
CGRect buttonFrame = CGRectMake(0, 0, kSignInButtonWidth, kSignInButtonHeight);
|
||||
for (id<FUIAuthProvider> providerUI in self.authUI.providers) {
|
||||
UIButton *providerButton =
|
||||
[[FUIAuthSignInButton alloc] initWithFrame:buttonFrame providerUI:providerUI];
|
||||
[providerButton addTarget:self
|
||||
action:@selector(didTapSignInButton:)
|
||||
forControlEvents:UIControlEventTouchUpInside];
|
||||
[_buttonContainerView addSubview:providerButton];
|
||||
|
||||
// Make the frame for the new button.
|
||||
buttonFrame.origin.y += (kSignInButtonHeight + kSignInButtonVerticalMargin);
|
||||
}
|
||||
|
||||
_privacyPolicyAndTOSView.authUI = self.authUI;
|
||||
[_privacyPolicyAndTOSView useFullMessage];
|
||||
[_contentView bringSubviewToFront:_privacyPolicyAndTOSView];
|
||||
}
|
||||
|
||||
- (void)viewDidLayoutSubviews {
|
||||
[super viewDidLayoutSubviews];
|
||||
|
||||
// For backward compatibility. The old auth picker view does not have a scroll view and its
|
||||
// customized class put the button container view directly into self.view. The following is the
|
||||
// old layout behavior.
|
||||
if (!_scrollView) {
|
||||
CGFloat distanceFromCenterToBottom =
|
||||
CGRectGetHeight(_buttonContainerView.frame) / 2.0f + kButtonContainerBottomMargin + kTOSViewBottomMargin;
|
||||
CGFloat centerY = CGRectGetHeight(self.view.bounds) - distanceFromCenterToBottom;
|
||||
// Compensate for bounds adjustment if any.
|
||||
centerY += self.view.bounds.origin.y;
|
||||
_buttonContainerView.center = CGPointMake(self.view.center.x, centerY);
|
||||
return;
|
||||
}
|
||||
|
||||
CGFloat buttonContainerHeight = CGRectGetHeight(_buttonContainerView.frame);
|
||||
CGFloat buttonContainerWidth = CGRectGetWidth(_buttonContainerView.frame);
|
||||
CGFloat contentViewHeight = kButtonContainerTopMargin + buttonContainerHeight
|
||||
+ kButtonContainerBottomMargin + kTOSViewBottomMargin;
|
||||
CGFloat contentViewWidth = CGRectGetWidth(self.view.bounds);
|
||||
_scrollView.frame = self.view.frame;
|
||||
CGFloat scrollViewHeight;
|
||||
if (@available(iOS 11.0, *)) {
|
||||
scrollViewHeight = CGRectGetHeight(_scrollView.frame) - _scrollView.safeAreaInsets.top;
|
||||
} else {
|
||||
scrollViewHeight = CGRectGetHeight(_scrollView.frame)
|
||||
- CGRectGetHeight(self.navigationController.navigationBar.frame)
|
||||
- CGRectGetHeight([UIApplication sharedApplication].statusBarFrame);
|
||||
}
|
||||
CGFloat contentViewY = scrollViewHeight - contentViewHeight;
|
||||
if (contentViewY < 0) {
|
||||
contentViewY = 0;
|
||||
}
|
||||
_contentView.frame = CGRectMake(0, contentViewY, contentViewWidth, contentViewHeight);
|
||||
_scrollView.contentSize = CGSizeMake(contentViewWidth, contentViewY + contentViewHeight);
|
||||
CGFloat buttonContainerLeftMargin = (contentViewWidth - buttonContainerWidth) / 2.0f;
|
||||
_buttonContainerView.frame =CGRectMake(buttonContainerLeftMargin,
|
||||
kButtonContainerTopMargin,
|
||||
buttonContainerWidth,
|
||||
buttonContainerHeight);
|
||||
CGFloat privacyViewHeight = CGRectGetHeight(_privacyPolicyAndTOSView.frame);
|
||||
_privacyPolicyAndTOSView.frame = CGRectMake(kTOSViewHorizontalMargin, contentViewHeight
|
||||
- privacyViewHeight - kTOSViewBottomMargin,
|
||||
contentViewWidth - kTOSViewHorizontalMargin*2,
|
||||
privacyViewHeight);
|
||||
}
|
||||
|
||||
#pragma mark - Actions
|
||||
|
||||
- (void)didTapSignInButton:(FUIAuthSignInButton *)button {
|
||||
[self.authUI signInWithProviderUI:button.providerUI
|
||||
presentingViewController:self
|
||||
defaultValue:nil];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,68 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthProvider.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @class FUIAuthSignInButton
|
||||
@brief Button representing an identity provider on the auth picker screen that starts
|
||||
authentication with the provider when touched.
|
||||
*/
|
||||
@interface FUIAuthSignInButton : UIButton
|
||||
|
||||
/** @property provider
|
||||
@brief The provider UI instance associated with this button. Can be nil.
|
||||
*/
|
||||
@property(nonatomic, strong, readonly, nullable) id<FUIAuthProvider> providerUI;
|
||||
|
||||
/** @fn initWithFrame:
|
||||
@brief Please use initWithFrame:image:text:backgroundColor:textColor:.
|
||||
*/
|
||||
- (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
|
||||
|
||||
/** @fn initWithCoder:
|
||||
@brief Please use initWithFrame:image:text:backgroundColor:textColor:.
|
||||
*/
|
||||
- (id)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
|
||||
|
||||
/** @fn initWithFrame:image:text:backgroundColor:textColor:
|
||||
@brief Designated initializer.
|
||||
@param frame The initial frame for the button.
|
||||
@param image Logo image for the button.
|
||||
@param text Button text.
|
||||
@param backgroundColor Background color of the button in the normal state.
|
||||
@param textColor Color of the button text.
|
||||
*/
|
||||
- (id)initWithFrame:(CGRect)frame
|
||||
image:(UIImage *)image
|
||||
text:(NSString *)text
|
||||
backgroundColor:(UIColor *)backgroundColor
|
||||
textColor:(UIColor *)textColor
|
||||
buttonAlignment:(FUIButtonAlignment)buttonAlignment NS_DESIGNATED_INITIALIZER;
|
||||
|
||||
/** @fn initWithFrame:providerUI:
|
||||
@brief Convenience initalizer.
|
||||
@param frame The initial frame for the button.
|
||||
@param providerUI The provider UI instance associated with this button.
|
||||
*/
|
||||
- (id)initWithFrame:(CGRect)frame providerUI:(id<FUIAuthProvider>)providerUI;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,116 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIAuthSignInButton.h"
|
||||
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthProvider.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthUtils.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @var kCornerRadius
|
||||
@brief Corner radius of the button.
|
||||
*/
|
||||
static const int kCornerRadius = 2.0f;
|
||||
|
||||
/** @var kDropShadowAlpha
|
||||
@brief Opacity of the drop shadow of the button.
|
||||
*/
|
||||
static const CGFloat kDropShadowAlpha = 0.24f;
|
||||
|
||||
/** @var kDropShadowRadius
|
||||
@brief Radius of the drop shadow of the button.
|
||||
*/
|
||||
static const CGFloat kDropShadowRadius = 2.0f;
|
||||
|
||||
/** @var kDropShadowYOffset
|
||||
@brief Vertical offset of the drop shadow of the button.
|
||||
*/
|
||||
static const CGFloat kDropShadowYOffset = 2.0f;
|
||||
|
||||
/** @var kFontSize
|
||||
@brief Button text font size.
|
||||
*/
|
||||
static const CGFloat kFontSize = 12.0f;
|
||||
|
||||
@implementation FUIAuthSignInButton
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame
|
||||
image:(UIImage *)image
|
||||
text:(NSString *)text
|
||||
backgroundColor:(UIColor *)backgroundColor
|
||||
textColor:(UIColor *)textColor
|
||||
buttonAlignment:(FUIButtonAlignment)buttonAlignment {
|
||||
self = [super initWithFrame:frame];
|
||||
if (!self) {
|
||||
return nil;
|
||||
}
|
||||
|
||||
self.backgroundColor = backgroundColor;
|
||||
[self setTitle:text forState:UIControlStateNormal];
|
||||
[self setTitleColor:textColor forState:UIControlStateNormal];
|
||||
self.titleLabel.font = [UIFont boldSystemFontOfSize:kFontSize];
|
||||
self.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
|
||||
[self setImage:image forState:UIControlStateNormal];
|
||||
|
||||
CGFloat paddingTitle = 8.0f;
|
||||
CGFloat contentWidth = self.imageView.frame.size.width + paddingTitle + self.titleLabel.frame.size.width;
|
||||
CGFloat paddingImage = 8.0f;
|
||||
if (buttonAlignment == FUIButtonAlignmentCenter) {
|
||||
paddingImage = (frame.size.width - contentWidth) / 2 - 4.0f;
|
||||
}
|
||||
BOOL isLTRLayout = [[UIApplication sharedApplication] userInterfaceLayoutDirection] ==
|
||||
UIUserInterfaceLayoutDirectionLeftToRight;
|
||||
if (isLTRLayout) {
|
||||
[self setTitleEdgeInsets:UIEdgeInsetsMake(0, paddingTitle, 0, paddingImage + paddingTitle)];
|
||||
[self setContentEdgeInsets:UIEdgeInsetsMake(0, paddingImage, 0, -paddingImage - paddingTitle)];
|
||||
[self setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
|
||||
} else {
|
||||
[self setTitleEdgeInsets:UIEdgeInsetsMake(0, paddingImage + paddingTitle, 0, paddingTitle)];
|
||||
[self setContentEdgeInsets:UIEdgeInsetsMake(0, -paddingImage - paddingTitle, 0, paddingImage)];
|
||||
[self setContentHorizontalAlignment:UIControlContentHorizontalAlignmentRight];
|
||||
}
|
||||
|
||||
|
||||
|
||||
self.layer.cornerRadius = kCornerRadius;
|
||||
|
||||
// Add a drop shadow.
|
||||
self.layer.masksToBounds = NO;
|
||||
self.layer.shadowColor = [UIColor blackColor].CGColor;
|
||||
self.layer.shadowOpacity = kDropShadowAlpha;
|
||||
self.layer.shadowRadius = kDropShadowRadius;
|
||||
self.layer.shadowOffset = CGSizeMake(0, kDropShadowYOffset);
|
||||
|
||||
self.adjustsImageWhenHighlighted = NO;
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame providerUI:(id<FUIAuthProvider>)providerUI {
|
||||
_providerUI = providerUI;
|
||||
return [self initWithFrame:frame
|
||||
image:providerUI.icon
|
||||
text:providerUI.signInLabel
|
||||
backgroundColor:providerUI.buttonBackgroundColor
|
||||
textColor:providerUI.buttonTextColor
|
||||
buttonAlignment:providerUI.buttonAlignment];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@@ -0,0 +1,159 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import <FirebaseCore/FirebaseCore.h>
|
||||
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthStrings.h"
|
||||
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuth.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthUtils.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
// AuthUI string keys.
|
||||
NSString *const kStr_ASCellAddPassword = @"AS_AddPassword";
|
||||
NSString *const kStr_ASCellChangePassword = @"AS_ChangePassword";
|
||||
NSString *const kStr_ASCellDeleteAccount = @"AS_DeleteAccount";
|
||||
NSString *const kStr_ASCellEmail = @"AS_Email";
|
||||
NSString *const kStr_ASCellName = @"AS_Name";
|
||||
NSString *const kStr_ASCellSignOut = @"AS_SignOut";
|
||||
NSString *const kStr_ASSectionTitleLinkedAccounts = @"AS_SectionLinkedAccounts";
|
||||
NSString *const kStr_ASSectionTitleProfile = @"AS_SectionProfile";
|
||||
NSString *const kStr_ASSectionTitleSecurity = @"AS_SectionSecurity";
|
||||
NSString *const kStr_AccountDisabledError = @"AccountDisabledError";
|
||||
NSString *const kStr_AuthPickerTitle = @"AuthPickerTitle";
|
||||
NSString *const kStr_Back = @"Back";
|
||||
NSString *const kStr_Cancel = @"Cancel";
|
||||
NSString *const kStr_CannotAuthenticateError = @"CannotAuthenticateError";
|
||||
NSString *const kStr_ChoosePassword = @"ChoosePassword";
|
||||
NSString *const kStr_Close = @"Close";
|
||||
NSString *const kStr_ConfirmEmail = @"ConfirmEmail";
|
||||
NSString *const kStr_Email = @"Email";
|
||||
NSString *const kStr_EmailAlreadyInUseError = @"EmailAlreadyInUseError";
|
||||
NSString *const kStr_EmailSentConfirmationMessage = @"EmailSentConfirmationMessage";
|
||||
NSString *const kStr_EnterYourEmail = @"EnterYourEmail";
|
||||
NSString *const kStr_EnterYourPassword = @"EnterYourPassword";
|
||||
NSString *const kStr_Error = @"Error";
|
||||
NSString *const kStr_ExistingAccountTitle = @"ExistingAccountTitle";
|
||||
NSString *const kStr_FirstAndLastName = @"FirstAndLastName";
|
||||
NSString *const kStr_ForgotPassword = @"ForgotPassword";
|
||||
NSString *const kStr_InvalidEmailError = @"InvalidEmailError";
|
||||
NSString *const kStr_InvalidPasswordError = @"InvalidPasswordError";
|
||||
NSString *const kStr_Name = @"Name";
|
||||
NSString *const kStr_Next = @"Next";
|
||||
NSString *const kStr_OK = @"OK";
|
||||
NSString *const kStr_Password = @"Password";
|
||||
NSString *const kStr_PasswordRecoveryEmailSentMessage = @"PasswordRecoveryEmailSentMessage";
|
||||
NSString *const kStr_PasswordRecoveryEmailSentTitle = @"PasswordRecoveryEmailSentTitle";
|
||||
NSString *const kStr_PasswordRecoveryMessage = @"PasswordRecoveryMessage";
|
||||
NSString *const kStr_PasswordRecoveryTitle = @"PasswordRecoveryTitle";
|
||||
NSString *const kStr_PasswordVerificationMessage = @"PasswordVerificationMessage";
|
||||
NSString *const kStr_ProviderUsedPreviouslyMessage = @"ProviderUsedPreviouslyMessage";
|
||||
NSString *const kStr_Save = @"Save";
|
||||
NSString *const kStr_Send = @"Send";
|
||||
NSString *const kStr_Resend = @"Resend";
|
||||
NSString *const kStr_SignedIn = @"SignedIn";
|
||||
NSString *const kStr_SignInTitle = @"SignInTitle";
|
||||
NSString *const kStr_SignInTooManyTimesError = @"SignInTooManyTimesError";
|
||||
NSString *const kStr_SignInWithEmail = @"SignInWithEmail";
|
||||
NSString *const kStr_SignInEmailSent = @"SignInEmailSent";
|
||||
NSString *const kStr_SignUpTitle = @"SignUpTitle";
|
||||
NSString *const kStr_SignUpTooManyTimesError = @"SignUpTooManyTimesError";
|
||||
NSString *const kStr_TermsOfService = @"TermsOfService";
|
||||
NSString *const kStr_TroubleGettingEmailTitle = @"TroubleGettingEmailTitle";
|
||||
NSString *const kStr_TroubleGettingEmailMessage = @"TroubleGettingEmailMessage";
|
||||
NSString *const kStr_PrivacyPolicy = @"PrivacyPolicy";
|
||||
NSString *const kStr_TermsOfServiceMessage = @"TermsOfServiceMessage";
|
||||
NSString *const kStr_UserNotFoundError = @"UserNotFoundError";
|
||||
NSString *const kStr_WeakPasswordError = @"WeakPasswordError";
|
||||
NSString *const kStr_WrongPasswordError = @"WrongPasswordError";
|
||||
NSString *const kStr_CantFindProvider = @"CantFindProvider";
|
||||
NSString *const kStr_EmailsDontMatch = @"EmailsDontMatch";
|
||||
NSString *const kStr_VerifyItsYou = @"VerifyItsYou";
|
||||
NSString *const kStr_DeleteAccountConfirmationTitle = @"DeleteAccountConfirmationTitle";
|
||||
NSString *const kStr_DeleteAccountBody = @"DeleteAccountBody";
|
||||
NSString *const kStr_DeleteAccountConfirmationMessage = @"DeleteAccountConfirmationMessage";
|
||||
NSString *const kStr_Delete = @"Delete";
|
||||
NSString *const kStr_DeleteAccountControllerTitle = @"DeleteAccountControllerTitle";
|
||||
NSString *const kStr_ActionCantBeUndone = @"ActionCantBeUndone";
|
||||
NSString *const kStr_UnlinkTitle = @"UnlinkTitle";
|
||||
NSString *const kStr_UnlinkAction = @"UnlinkAction";
|
||||
NSString *const kStr_UnlinkConfirmationTitle = @"UnlinkConfirmationTitle";
|
||||
NSString *const kStr_UnlinkConfirmationMessage = @"UnlinkConfirmationMessage";
|
||||
NSString *const kStr_UnlinkConfirmationActionTitle = @"UnlinkConfirmationActionTitle";
|
||||
NSString *const kStr_UpdateEmailAlertMessage = @"UpdateEmailAlertMessage";
|
||||
NSString *const kStr_UpdateEmailVerificationAlertMessage = @"UpdateEmailVerificationAlertMessage";
|
||||
NSString *const kStr_EditEmailTitle = @"EditEmailTitle";
|
||||
NSString *const kStr_EditNameTitle = @"EditNameTitle";
|
||||
NSString *const kStr_AddPasswordAlertMessage = @"AddPasswordAlertMessage";
|
||||
NSString *const kStr_EditPasswordAlertMessage = @"EditPasswordAlertMessage";
|
||||
NSString *const kStr_ReauthenticateEditPasswordAlertMessage = @"ReauthenticateEditPasswordAlertMessage";
|
||||
NSString *const kStr_AddPasswordTitle = @"AddPasswordTitle";
|
||||
NSString *const kStr_EditPasswordTitle = @"EditPasswordTitle";
|
||||
NSString *const kStr_ProviderTitlePassword = @"ProviderTitlePassword";
|
||||
NSString *const kStr_ProviderTitleGoogle = @"ProviderTitleGoogle";
|
||||
NSString *const kStr_ProviderTitleFacebook = @"ProviderTitleFacebook";
|
||||
NSString *const kStr_ProviderTitleTwitter = @"ProviderTitleTwitter";
|
||||
NSString *const kStr_SignInWithProvider = @"SignInWithProvider";
|
||||
NSString *const kStr_PlaceholderEnterName = @"PlaceholderEnterName";
|
||||
NSString *const kStr_PlaceholderEnterEmail = @"PlaceholderEnterEmail";
|
||||
NSString *const kStr_PlaceholderEnterPassword = @"PlaceholderEnterPassword";
|
||||
NSString *const kStr_PlaceholderChosePassword = @"PlaceholderChosePassword";
|
||||
NSString *const kStr_PlaceholderNewPassword = @"PlaceholderNewPassword";
|
||||
NSString *const kStr_ForgotPasswordTitle = @"ForgotPasswordTitle";
|
||||
|
||||
/** @var kKeyNotFound
|
||||
@brief The value returned if the key is not found in the table.
|
||||
*/
|
||||
NSString *const kKeyNotFound = @"KeyNotFound";
|
||||
|
||||
/** @var kTableName
|
||||
@brief The name of the strings table to search for localized strings.
|
||||
*/
|
||||
NSString *const kTableName = @"FirebaseAuthUI";
|
||||
|
||||
NSString *FUILocalizedString(NSString *key) {
|
||||
return FUILocalizedStringFromTable(key, kTableName);
|
||||
}
|
||||
|
||||
NSString *FUILocalizedStringFromTable(NSString *key, NSString *table) {
|
||||
return FUILocalizedStringFromTableInBundle(key, table, [FUIAuthUtils authUIBundle]);
|
||||
}
|
||||
|
||||
NSString *FUILocalizedStringFromTableInBundle(NSString *key,
|
||||
NSString *table,
|
||||
NSBundle *_Nullable bundle) {
|
||||
// Don't load defaultAuthUI if the default app isn't configured. We don't recommend
|
||||
// people do this in our docs, but if for whatever reason they want to use a custom
|
||||
// app, this code shouldn't crash.
|
||||
if ([FIRApp defaultApp] != nil) {
|
||||
NSBundle *customStringsBundle = [FUIAuth defaultAuthUI].customStringsBundle;
|
||||
if (customStringsBundle) {
|
||||
NSString *localizedString = [customStringsBundle localizedStringForKey:key
|
||||
value:kKeyNotFound
|
||||
table:table];
|
||||
if (![kKeyNotFound isEqual:localizedString]) {
|
||||
return localizedString;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (bundle == nil) {
|
||||
bundle = [NSBundle mainBundle];
|
||||
}
|
||||
return [bundle localizedStringForKey:key value:nil table:table];
|
||||
}
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,83 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthTableHeaderView.h"
|
||||
|
||||
/** @var kLabelHorizontalMargin
|
||||
@brief The horizontal margin around any @c UILabel.
|
||||
*/
|
||||
static const CGFloat kLabelHorizontalMargin = 8.0f;
|
||||
|
||||
/** @var kLabelVerticalMargin
|
||||
@brief The veritcal margin around any @c UILabel.
|
||||
*/
|
||||
static const CGFloat kLabelVerticalMargin = 16.0f;
|
||||
|
||||
@implementation FUIAuthTableHeaderView
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame {
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
_titleLabel = [[UILabel alloc] init];
|
||||
_titleLabel.font = [UIFont boldSystemFontOfSize:16.0f];
|
||||
[self addSubview:_titleLabel];
|
||||
|
||||
_detailLabel = [[UILabel alloc] init];
|
||||
_detailLabel.font = [UIFont systemFontOfSize:14.0f];
|
||||
_detailLabel.numberOfLines = 0;
|
||||
[self addSubview:_detailLabel];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)layoutSubviews {
|
||||
[super layoutSubviews];
|
||||
|
||||
[_titleLabel sizeToFit];
|
||||
|
||||
CGRect contentRect = CGRectInset(self.bounds, kLabelHorizontalMargin, kLabelVerticalMargin);
|
||||
CGRect titleLabelFrame, detailLabelFrame, space;
|
||||
CGRectDivide(contentRect, &titleLabelFrame, &contentRect,
|
||||
CGRectGetHeight(_titleLabel.frame), CGRectMinYEdge);
|
||||
CGRectDivide(contentRect, &space, &detailLabelFrame, kLabelVerticalMargin, CGRectMinYEdge);
|
||||
|
||||
_titleLabel.frame = titleLabelFrame;
|
||||
_detailLabel.frame = detailLabelFrame;
|
||||
}
|
||||
|
||||
- (CGSize)sizeThatFits:(CGSize)size {
|
||||
CGFloat labelWidth = size.width - kLabelHorizontalMargin * 2;
|
||||
CGFloat titleLabelHeight = [[self class] sizeForLabel:_titleLabel maxWidth:labelWidth].height;
|
||||
CGFloat detailLabelHeight = [[self class] sizeForLabel:_detailLabel maxWidth:labelWidth].height;
|
||||
CGFloat height = titleLabelHeight + detailLabelHeight + kLabelVerticalMargin * 3;
|
||||
return CGSizeMake(size.width, height);
|
||||
}
|
||||
|
||||
#pragma mark - Utility
|
||||
|
||||
/** @fn sizeForLabel:maxWidth:
|
||||
@brief Calculate the with of the @c UILabel with the given maximum width.
|
||||
@return The calculated size.
|
||||
*/
|
||||
+ (CGSize)sizeForLabel:(UILabel *)label maxWidth:(CGFloat)maxWidth {
|
||||
CGRect rect = [label.text boundingRectWithSize:CGSizeMake(maxWidth, CGFLOAT_MAX)
|
||||
options:NSStringDrawingUsesLineFragmentOrigin
|
||||
attributes:@{ NSFontAttributeName : label.font }
|
||||
context:nil];
|
||||
return CGRectIntegral(rect).size;
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,35 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthTableViewCell.h"
|
||||
|
||||
@implementation FUIAuthTableViewCell
|
||||
|
||||
- (void)awakeFromNib {
|
||||
[super awakeFromNib];
|
||||
|
||||
if (@available(iOS 13.0, *)) {
|
||||
self.textField.textColor = [UIColor labelColor];
|
||||
self.label.textColor = [UIColor labelColor];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setLabel:(UILabel *)label {
|
||||
_label = label;
|
||||
[self layoutIfNeeded];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,126 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthUtils.h"
|
||||
|
||||
#import <CommonCrypto/CommonCrypto.h>
|
||||
|
||||
#if SWIFT_PACKAGE
|
||||
NSString *const FUIAuthBundleName = @"FirebaseUI_FirebaseAuthUI";
|
||||
#else
|
||||
NSString *const FUIAuthBundleName = @"FirebaseAuthUI";
|
||||
#endif // SWIFT_PACKAGE
|
||||
|
||||
@implementation FUIAuthUtils
|
||||
|
||||
+ (NSBundle *)authUIBundle {
|
||||
return [self bundleNamed:FUIAuthBundleName
|
||||
inFrameworkBundle:[NSBundle bundleForClass:[self class]]];
|
||||
}
|
||||
|
||||
+ (nullable NSBundle *)bundleNamed:(nullable NSString *)bundleName
|
||||
inFrameworkBundle:(nullable NSBundle *)framework {
|
||||
NSBundle *returnBundle = nil;
|
||||
if (!bundleName) {
|
||||
bundleName = FUIAuthBundleName;
|
||||
}
|
||||
// Use the main bundle as a default if the framework wasn't provided.
|
||||
NSBundle *frameworkBundle = framework;
|
||||
if (frameworkBundle == nil) {
|
||||
// If frameworkBundle is unspecified, assume main bundle/static linking.
|
||||
frameworkBundle = [NSBundle mainBundle];
|
||||
}
|
||||
// If using static frameworks, the bundle will be included directly in the main
|
||||
// bundle.
|
||||
NSString *path = [[NSBundle mainBundle] pathForResource:bundleName ofType:@"bundle"];
|
||||
|
||||
// Otherwise, check the appropriate framework bundle.
|
||||
if (!path) {
|
||||
path = [frameworkBundle pathForResource:bundleName ofType:@"bundle"];
|
||||
}
|
||||
if (!path) {
|
||||
NSLog(@"Warning: Unable to find bundle %@ in framework %@.", bundleName, framework);
|
||||
// Fall back on the root module.
|
||||
return frameworkBundle;
|
||||
}
|
||||
returnBundle = [NSBundle bundleWithPath:path];
|
||||
return returnBundle;
|
||||
}
|
||||
|
||||
+ (nullable UIImage *)imageNamed:(NSString *)name fromBundle:(nullable NSBundle *)bundle {
|
||||
if (!bundle) {
|
||||
bundle = [self authUIBundle];
|
||||
}
|
||||
if (@available(iOS 13.0, *)) {
|
||||
return [UIImage imageNamed:name inBundle:bundle withConfiguration:nil];
|
||||
} else {
|
||||
NSString *path = [bundle pathForResource:name ofType:@"png"];
|
||||
if (!path) {
|
||||
NSLog(@"Warning: Unable to find asset %@ in bundle %@.", name, bundle);
|
||||
return nil;
|
||||
}
|
||||
return [UIImage imageWithContentsOfFile:path];
|
||||
}
|
||||
}
|
||||
|
||||
+ (NSString *)randomNonce {
|
||||
// Adapted from https://auth0.com/docs/api-auth/tutorials/nonce#generate-a-cryptographically-random-nonce
|
||||
NSString *characterSet = @"0123456789ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvwxyz-._";
|
||||
NSMutableString *result = [NSMutableString string];
|
||||
NSInteger remainingLength = 32;
|
||||
|
||||
while (remainingLength > 0) {
|
||||
NSMutableArray *randoms = [NSMutableArray arrayWithCapacity:16];
|
||||
for (NSInteger i = 0; i < 16; i++) {
|
||||
uint8_t random = 0;
|
||||
int errorCode = SecRandomCopyBytes(kSecRandomDefault, 1, &random);
|
||||
if (errorCode != errSecSuccess) {
|
||||
[NSException raise:@"FUIAuthGenerateRandomNonce"
|
||||
format:@"Unable to generate nonce: OSStatus %i", errorCode];
|
||||
}
|
||||
|
||||
[randoms addObject:@(random)];
|
||||
}
|
||||
|
||||
for (NSNumber *random in randoms) {
|
||||
if (remainingLength == 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (random.unsignedIntValue < characterSet.length) {
|
||||
unichar character = [characterSet characterAtIndex:random.unsignedIntValue];
|
||||
[result appendFormat:@"%C", character];
|
||||
remainingLength--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
+ (NSString *)stringBySHA256HashingString:(NSString *)input {
|
||||
const char *string = [input UTF8String];
|
||||
unsigned char result[CC_SHA256_DIGEST_LENGTH];
|
||||
CC_SHA256(string, (CC_LONG)strlen(string), result);
|
||||
|
||||
NSMutableString *hashed = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH * 2];
|
||||
for (NSInteger i = 0; i < CC_SHA256_DIGEST_LENGTH; i++) {
|
||||
[hashed appendFormat:@"%02x", result[i]];
|
||||
}
|
||||
return hashed;
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,98 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIPrivacyAndTermsOfServiceView.h"
|
||||
|
||||
#import <FirebaseAuth/FirebaseAuth.h>
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuth.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthStrings.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@implementation FUIPrivacyAndTermsOfServiceView
|
||||
|
||||
#pragma mark - Public
|
||||
|
||||
- (void)useFullMessage {
|
||||
NSAttributedString *fullMessage = [self fullPrivacyPolicyAndTOSMessage];
|
||||
self.attributedText = fullMessage;
|
||||
self.textAlignment = NSTextAlignmentLeft;
|
||||
}
|
||||
|
||||
- (void)useFooterMessage {
|
||||
NSAttributedString *footerMessage = [self footerPrivacyPolicyAndTOSMessage];
|
||||
self.attributedText = footerMessage;
|
||||
self.textAlignment = NSTextAlignmentRight;
|
||||
}
|
||||
|
||||
#pragma mark - Protected
|
||||
|
||||
- (nullable NSAttributedString *)privacyPolicyAndTOSMessageFromFormat:(NSString *)format {
|
||||
FUIAuth *authUI = self.authUI ?: [FUIAuth defaultAuthUI];
|
||||
NSURL *TOSURL = authUI.TOSURL;
|
||||
NSURL *privacyPolicyURL = authUI.privacyPolicyURL;
|
||||
NSUInteger TOSURLStringLength = TOSURL.absoluteString.length;
|
||||
NSUInteger privacyPolicyURLStringLength = privacyPolicyURL.absoluteString.length;
|
||||
|
||||
if (!TOSURLStringLength && !privacyPolicyURLStringLength) {
|
||||
return nil;
|
||||
}
|
||||
if (!TOSURLStringLength || !privacyPolicyURLStringLength) {
|
||||
NSLog(@"The terms of service and privacy policy URLs for your app must be provided together. Pl"
|
||||
"ease set the terms of service policy using [FUIAuth defaultAuthUI].TOSURL and the privacy"
|
||||
" policy URL using [FUIAuth defaultAuthUI].privacyPolicyURL");
|
||||
return nil;
|
||||
}
|
||||
NSString *termsOfServiceString = FUILocalizedString(kStr_TermsOfService);
|
||||
NSString *privacyPolicyString = FUILocalizedString(kStr_PrivacyPolicy);
|
||||
NSString *privacyPolicyAndTOSString =
|
||||
[NSString stringWithFormat:format, termsOfServiceString, privacyPolicyString];
|
||||
NSMutableAttributedString *attributedLinkText = nil;
|
||||
|
||||
if (@available(iOS 13.0, *)) {
|
||||
attributedLinkText = [[NSMutableAttributedString alloc] initWithString:privacyPolicyAndTOSString
|
||||
attributes:@{NSForegroundColorAttributeName: [UIColor labelColor]}];
|
||||
} else {
|
||||
attributedLinkText = [[NSMutableAttributedString alloc] initWithString:privacyPolicyAndTOSString];
|
||||
}
|
||||
|
||||
NSRange TOSRange = [privacyPolicyAndTOSString rangeOfString:termsOfServiceString];
|
||||
if (TOSRange.length) {
|
||||
[attributedLinkText addAttribute:NSLinkAttributeName value:TOSURL range:TOSRange];
|
||||
}
|
||||
|
||||
NSRange privacyPolicyRange = [privacyPolicyAndTOSString rangeOfString:privacyPolicyString];
|
||||
if (privacyPolicyRange.length) {
|
||||
[attributedLinkText addAttribute:NSLinkAttributeName
|
||||
value:privacyPolicyURL
|
||||
range:privacyPolicyRange];
|
||||
}
|
||||
return attributedLinkText;
|
||||
}
|
||||
|
||||
#pragma mark - Private
|
||||
|
||||
- (NSAttributedString *)fullPrivacyPolicyAndTOSMessage {
|
||||
return [self privacyPolicyAndTOSMessageFromFormat:FUILocalizedString(kStr_TermsOfServiceMessage)];
|
||||
}
|
||||
|
||||
- (NSAttributedString *)footerPrivacyPolicyAndTOSMessage {
|
||||
return [self privacyPolicyAndTOSMessageFromFormat:@"%@ %@"];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,98 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthBaseViewController.h"
|
||||
#import "FirebaseAuthUI/Sources/FUIStaticContentTableViewManager.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @class FUIStaticContentTableViewController
|
||||
@brief The view controller which presents contents of @c FUIStaticContentTableViewContent.
|
||||
controller has footer and header views.
|
||||
*/
|
||||
@interface FUIStaticContentTableViewController : FUIAuthBaseViewController
|
||||
|
||||
/** @fn initWithContents:nextTitle:nextAction
|
||||
@brief Convenience initializer. View controller doesn't have header and footer sections.
|
||||
@param contents The contents of the table view presented in the controller.
|
||||
@param nextTitle Text displayed on the navigation bar title.
|
||||
@param nextAction Action triggered on the right bar item of @C UINavigationController
|
||||
*/
|
||||
- (instancetype)initWithContents:(nullable FUIStaticContentTableViewContent *)contents
|
||||
nextTitle:(nullable NSString *)nextTitle
|
||||
nextAction:(nullable FUIStaticContentTableViewCellAction)nextAction;
|
||||
|
||||
// TODO: set nextAction param last arg
|
||||
/** @fn initWithContents:nextTitle:nextAction:headerText:
|
||||
@brief Convenience initializer. View controller doesn't have footer section.
|
||||
@param contents The contents of the table view presented in the controller.
|
||||
@param nextTitle Text displayed on the navigation bar title.
|
||||
@param nextAction Action triggered on the right bar item of @C UINavigationController
|
||||
@param headerText Text displayed at the header view controller.
|
||||
*/
|
||||
- (instancetype)initWithContents:(nullable FUIStaticContentTableViewContent *)contents
|
||||
nextTitle:(nullable NSString *)nextTitle
|
||||
nextAction:(nullable FUIStaticContentTableViewCellAction)nextAction
|
||||
headerText:(nullable NSString *)headerText;
|
||||
|
||||
/** @fn initWithContents:nextTitle:nextAction:headerText:footerText:footerAction:
|
||||
@brief Designated initializer.
|
||||
@param contents The contents of the table view presented in the controller.
|
||||
@param actionTitle Text displayed on the navigation bar title.
|
||||
@param nextAction Action triggered on the right bar item of @C UINavigationController
|
||||
@param headerText Text displayed at the header view controller.
|
||||
@param footerText Text displayed at the footer of view controller.
|
||||
@param footerAction Action triggered when user taps on the footer.
|
||||
*/
|
||||
- (instancetype)initWithContents:(nullable FUIStaticContentTableViewContent *)contents
|
||||
nextTitle:(nullable NSString *)actionTitle
|
||||
nextAction:(nullable FUIStaticContentTableViewCellAction)nextAction
|
||||
headerText:(nullable NSString *)headerText
|
||||
footerText:(nullable NSString *)footerText
|
||||
footerAction:(nullable FUIStaticContentTableViewCellAction)footerAction
|
||||
NS_DESIGNATED_INITIALIZER;
|
||||
|
||||
/** @fn init
|
||||
@brief Please use @c initWithContents:nextTitle:nextAction:headerText:footerText:footerAction:.
|
||||
*/
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
|
||||
/** @fn initWithNibName:bundle:
|
||||
@brief Please use @c initWithContents:nextTitle:nextAction:headerText:footerText:footerAction:.
|
||||
*/
|
||||
- (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil
|
||||
bundle:(nullable NSBundle *)nibBundleOrNil NS_UNAVAILABLE;
|
||||
|
||||
/** @fn initWithCoder:
|
||||
@brief Please use @c initWithContents:nextTitle:nextAction:headerText:footerText:footerAction:.
|
||||
*/
|
||||
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
|
||||
|
||||
/** @fn initWithNibName:bundle:authUI:
|
||||
@brief Please use @c initWithContents:nextTitle:nextAction:headerText:footerText:footerAction:.
|
||||
@param nibNameOrNil The name of the nib file to associate with the view controller.
|
||||
@param nibBundleOrNil The bundle in which to search for the nib file.
|
||||
@param authUI The @c FUIAuth instance that manages this view controller.
|
||||
*/
|
||||
- (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil
|
||||
bundle:(nullable NSBundle *)nibBundleOrNil
|
||||
authUI:(FUIAuth *)authUI NS_UNAVAILABLE;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,137 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIStaticContentTableViewController.h"
|
||||
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuth.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthBaseViewController_Internal.h"
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthUtils.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @var kSaveButtonAccessibilityID
|
||||
@brief The Accessibility Identifier for the @c next button.
|
||||
*/
|
||||
static NSString *const kNextButtonAccessibilityID = @"NextButtonAccessibilityID";
|
||||
|
||||
@interface FUIStaticContentTableViewController ()
|
||||
{
|
||||
NSString *_headerText;
|
||||
NSString *_footerText;
|
||||
NSString *_actionTitle;
|
||||
__weak IBOutlet UILabel *_headerLabel;
|
||||
__weak IBOutlet UITableView *_tableView;
|
||||
__weak IBOutlet UIButton *_footerButton;
|
||||
FUIStaticContentTableViewManager *_tableViewManager;
|
||||
FUIStaticContentTableViewCellAction _nextAction;
|
||||
FUIStaticContentTableViewCellAction _footerAction;
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation FUIStaticContentTableViewController
|
||||
|
||||
- (instancetype)initWithContents:(nullable FUIStaticContentTableViewContent *)contents
|
||||
nextTitle:(nullable NSString *)nextTitle
|
||||
nextAction:(nullable FUIStaticContentTableViewCellAction)nextAction {
|
||||
return [self initWithContents:contents nextTitle:nextTitle nextAction:nextAction headerText:nil];
|
||||
}
|
||||
|
||||
- (instancetype)initWithContents:(nullable FUIStaticContentTableViewContent *)contents
|
||||
nextTitle:(nullable NSString *)nextTitle
|
||||
nextAction:(nullable FUIStaticContentTableViewCellAction)nextAction
|
||||
headerText:(nullable NSString *)headerText {
|
||||
return [self initWithContents:contents
|
||||
nextTitle:nextTitle
|
||||
nextAction:nextAction
|
||||
headerText:headerText
|
||||
footerText:nil
|
||||
footerAction:nil];
|
||||
}
|
||||
|
||||
- (instancetype)initWithContents:(nullable FUIStaticContentTableViewContent *)contents
|
||||
nextTitle:(nullable NSString *)actionTitle
|
||||
nextAction:(nullable FUIStaticContentTableViewCellAction)nextAction
|
||||
headerText:(nullable NSString *)headerText
|
||||
footerText:(nullable NSString *)footerText
|
||||
footerAction:(nullable FUIStaticContentTableViewCellAction)footerAction {
|
||||
if (self = [super initWithNibName:NSStringFromClass([self class])
|
||||
bundle:[FUIAuthUtils authUIBundle]
|
||||
authUI:[FUIAuth defaultAuthUI]]) {
|
||||
_tableViewManager.contents = contents;
|
||||
_nextAction = [nextAction copy];
|
||||
_footerAction = [footerAction copy];
|
||||
_headerText = [headerText copy];
|
||||
_footerText = [footerText copy];
|
||||
_actionTitle = [actionTitle copy];
|
||||
|
||||
UIBarButtonItem *actionButtonItem =
|
||||
[FUIAuthBaseViewController barItemWithTitle:_actionTitle
|
||||
target:self
|
||||
action:@selector(onNext)];
|
||||
actionButtonItem.accessibilityIdentifier = kNextButtonAccessibilityID;
|
||||
self.navigationItem.rightBarButtonItem = actionButtonItem;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
_tableViewManager = [[FUIStaticContentTableViewManager alloc] init];
|
||||
_tableViewManager.tableView = _tableView;
|
||||
_tableView.delegate = _tableViewManager;
|
||||
_tableView.dataSource = _tableViewManager;
|
||||
if (_headerText) {
|
||||
_headerLabel.text = _headerText;
|
||||
} else {
|
||||
_tableView.tableHeaderView = nil;
|
||||
}
|
||||
if (!_footerText) {
|
||||
_tableView.tableFooterView.hidden = YES;
|
||||
} else {
|
||||
[_footerButton setTitle:_footerText forState:UIControlStateNormal];
|
||||
}
|
||||
|
||||
[self enableDynamicCellHeightForTableView:_tableView];
|
||||
}
|
||||
|
||||
- (void)viewDidLayoutSubviews {
|
||||
[super viewDidLayoutSubviews];
|
||||
[self updateHeaderSize];
|
||||
}
|
||||
|
||||
- (void)updateHeaderSize {
|
||||
_headerLabel.preferredMaxLayoutWidth = _headerLabel.bounds.size.width;
|
||||
CGFloat height = [_tableView.tableHeaderView
|
||||
systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
|
||||
CGRect frame = _tableView.tableHeaderView.frame;
|
||||
frame.size.height = height;
|
||||
_tableView.tableHeaderView.frame = frame;
|
||||
}
|
||||
|
||||
- (void)onNext {
|
||||
if (_nextAction) {
|
||||
_nextAction();
|
||||
}
|
||||
}
|
||||
- (IBAction)onFooterAction:(id)sender {
|
||||
if (_footerAction) {
|
||||
_footerAction();
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,311 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#pragma mark - Forward Declarations
|
||||
|
||||
@class FUIStaticContentTableViewCell;
|
||||
@class FUIStaticContentTableViewContent;
|
||||
@class FUIStaticContentTableViewSection;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
#pragma mark - Block Type Definitions
|
||||
|
||||
/** @typedef FUIStaticContentTableViewCellAction
|
||||
@brief The type of block invoked when a cell is tapped.
|
||||
*/
|
||||
typedef void(^FUIStaticContentTableViewCellAction)(void);
|
||||
|
||||
#pragma mark -
|
||||
|
||||
/** @class FUIStaticContentTableViewManager
|
||||
@brief Generic class useful for populating a @c UITableView with static content.
|
||||
*/
|
||||
@interface FUIStaticContentTableViewManager : NSObject<UITableViewDelegate, UITableViewDataSource>
|
||||
|
||||
/** @property contents
|
||||
@brief The static contents of the @c UITableView.
|
||||
@remarks Setting this property will reload the @c UITableView.
|
||||
*/
|
||||
@property(nonatomic, strong, nullable) FUIStaticContentTableViewContent *contents;
|
||||
|
||||
/** @property tableView
|
||||
@brief A reference to the managed @c UITableView.
|
||||
@remarks This is needed to automatically reload the table view when the @c contents are changed.
|
||||
*/
|
||||
@property(nonatomic, weak, nullable) IBOutlet UITableView *tableView;
|
||||
|
||||
@end
|
||||
|
||||
#pragma mark -
|
||||
|
||||
/** @class FUIStaticContentTableViewContent
|
||||
@brief Represents the contents of a @c UITableView.
|
||||
*/
|
||||
@interface FUIStaticContentTableViewContent : NSObject
|
||||
|
||||
/** @property sections
|
||||
@brief The sections for the @c UITableView.
|
||||
*/
|
||||
@property(nonatomic, copy, readonly, nullable)
|
||||
NSArray<FUIStaticContentTableViewSection *> *sections;
|
||||
|
||||
/** @fn contentWithSections:
|
||||
@brief Convenience factory method for creating a new instance of
|
||||
@c FUIStaticContentTableViewContent.
|
||||
@param sections The sections for the @c UITableView.
|
||||
*/
|
||||
+ (instancetype)contentWithSections:(nullable NSArray<FUIStaticContentTableViewSection *> *)sections;
|
||||
|
||||
/** @fn init
|
||||
@brief Please use initWithSections:
|
||||
*/
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
|
||||
/** @fn initWithSections:
|
||||
@brief Designated initializer.
|
||||
@param sections The sections in the @c UITableView.
|
||||
*/
|
||||
- (instancetype)initWithSections:(nullable NSArray<FUIStaticContentTableViewSection *> *)sections;
|
||||
|
||||
@end
|
||||
|
||||
#pragma mark -
|
||||
|
||||
/** @class FUIStaticContentTableViewSection
|
||||
@brief Represents a section in a @c UITableView.
|
||||
@remarks Each section has a title (used for the section title in the @c UITableView) and an
|
||||
array of cells.
|
||||
*/
|
||||
@interface FUIStaticContentTableViewSection : NSObject
|
||||
|
||||
/** @property title
|
||||
@brief The title of the section in the @c UITableView.
|
||||
*/
|
||||
@property(nonatomic, copy, readonly, nullable) NSString *title;
|
||||
|
||||
/** @property cells
|
||||
@brief The cells in this section of the @c UITableView.
|
||||
*/
|
||||
@property(nonatomic, copy, readonly, nullable) NSArray<FUIStaticContentTableViewCell *> *cells;
|
||||
|
||||
/** @fn sectionWithTitle:cells:
|
||||
@brief Convenience factory method for creating a new instance of
|
||||
@c FUIStaticContentTableViewSection.
|
||||
@param title The title of the section in the @c UITableView.
|
||||
@param cells The cells in this section of the @c UITableView.
|
||||
*/
|
||||
+ (instancetype) sectionWithTitle:(nullable NSString *)title
|
||||
cells:(nullable NSArray<FUIStaticContentTableViewCell *> *)cells;
|
||||
|
||||
/** @fn init
|
||||
@brief Please use initWithTitle:cells:
|
||||
*/
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
|
||||
/** @fn initWithTitle:cells:
|
||||
@brief Designated initializer.
|
||||
@param title The title of the section in the @c UITableView.
|
||||
@param cells The cells in this section of the @c UITableView.
|
||||
*/
|
||||
- (instancetype)initWithTitle:(nullable NSString *)title
|
||||
cells:(nullable NSArray<FUIStaticContentTableViewCell *> *)cells;
|
||||
|
||||
@end
|
||||
|
||||
#pragma mark -
|
||||
|
||||
/** @typedef FUIStaticContentTableViewCellType
|
||||
@brief Defines all possible styles of @c FUIStaticContentTableViewCell.
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, FUIStaticContentTableViewCellType) {
|
||||
FUIStaticContentTableViewCellTypeDefault = 0,
|
||||
FUIStaticContentTableViewCellTypeButton,
|
||||
FUIStaticContentTableViewCellTypeInput,
|
||||
FUIStaticContentTableViewCellTypePassword
|
||||
};
|
||||
|
||||
/** @class FUIStaticContentTableViewCell
|
||||
@brief Represents a cell in a @c UITableView.
|
||||
*/
|
||||
@interface FUIStaticContentTableViewCell : NSObject
|
||||
|
||||
/** @property title
|
||||
@brief The text of the @c titleLabel of the @c FUIStaticContentTableViewCell.
|
||||
*/
|
||||
@property(nonatomic, copy, readonly, nullable) NSString *title;
|
||||
|
||||
/** @property value
|
||||
@brief The text of the @c detailTextLabel of the @c FUIStaticContentTableViewCell.
|
||||
*/
|
||||
@property(nonatomic, copy, nullable) NSString *value;
|
||||
|
||||
/** @property placeholder
|
||||
@brief The text of the placeholder or hint of the @c FUIStaticContentTableViewCell.
|
||||
*/
|
||||
@property(nonatomic, copy, nullable) NSString *placeholder;
|
||||
|
||||
/** @property type
|
||||
@brief Style of displaying cell. Default value is @c FUIStaticContentTableViewCellTypeDefault
|
||||
*/
|
||||
@property(nonatomic, assign) FUIStaticContentTableViewCellType type;
|
||||
|
||||
/** @property action
|
||||
@brief A block which is executed when the cell is selected.
|
||||
@remarks Avoid retain cycles. Since these blocked are retained here, and your
|
||||
@c UIViewController's object graph likely retains this object, you don't want these blocks
|
||||
to retain your @c UIViewController. The easiest thing is just to create a weak reference to
|
||||
your @c UIViewController and pass it a message as the only thing the block does.
|
||||
*/
|
||||
@property(nonatomic, copy, readonly, nullable) FUIStaticContentTableViewCellAction action;
|
||||
|
||||
/** @fn cellWithTitle:
|
||||
@brief Convenience factory method for a new instance of @c FUIStaticContentTableViewCell.
|
||||
@param title The text of the @c titleLabel of the @c FUIStaticContentTableViewCell.
|
||||
*/
|
||||
+ (instancetype)cellWithTitle:(nullable NSString *)title;
|
||||
|
||||
/** @fn cellWithTitle:value:
|
||||
@brief Convenience factory method for a new instance of @c FUIStaticContentTableViewCell.
|
||||
@param title The text of the @c titleLabel of the @c FUIStaticContentTableViewCell.
|
||||
@param value The text of the @c detailTextLabel of the @c FUIStaticContentTableViewCell.
|
||||
*/
|
||||
+ (instancetype)cellWithTitle:(nullable NSString *)title
|
||||
value:(nullable NSString *)value;
|
||||
|
||||
/** @fn cellWithTitle:action:
|
||||
@brief Convenience factory method for a new instance of @c FUIStaticContentTableViewCell.
|
||||
@param title The text of the @c titleLabel of the @c FUIStaticContentTableViewCell.
|
||||
@param action A block which is executed when the cell is selected.
|
||||
*/
|
||||
+ (instancetype)cellWithTitle:(nullable NSString *)title
|
||||
action:(nullable FUIStaticContentTableViewCellAction)action;
|
||||
|
||||
/** @fn cellWithTitle:action:type:
|
||||
@brief Convenience factory method for a new instance of @c FUIStaticContentTableViewCell.
|
||||
@param title The text of the @c titleLabel of the @c FUIStaticContentTableViewCell.
|
||||
@param type Style of displaying cell.
|
||||
@param action A block which is executed when the cell is selected.
|
||||
*/
|
||||
+ (instancetype)cellWithTitle:(nullable NSString *)title
|
||||
type:(FUIStaticContentTableViewCellType) type
|
||||
action:(nullable FUIStaticContentTableViewCellAction)action;
|
||||
|
||||
/** @fn cellWithTitle:value:action:
|
||||
@brief Convenience factory method for a new instance of @c FUIStaticContentTableViewCell.
|
||||
@param title The text of the @c titleLabel of the @c FUIStaticContentTableViewCell.
|
||||
@param value The text of the @c detailTextLabel of the @c FUIStaticContentTableViewCell.
|
||||
@param action A block which is executed when the cell is selected.
|
||||
*/
|
||||
+ (instancetype)cellWithTitle:(nullable NSString *)title
|
||||
value:(nullable NSString *)value
|
||||
action:(nullable FUIStaticContentTableViewCellAction)action;
|
||||
|
||||
/** @fn cellWithTitle:value:type:action:
|
||||
@brief Convenience factory method for a new instance of @c FUIStaticContentTableViewCell.
|
||||
@param title The text of the @c titleLabel of the @c FUIStaticContentTableViewCell.
|
||||
@param value The text of the @c detailTextLabel of the @c FUIStaticContentTableViewCell.
|
||||
@param type Style of displaying cell.
|
||||
@param action A block which is executed when the cell is selected.
|
||||
*/
|
||||
+ (instancetype)cellWithTitle:(nullable NSString *)title
|
||||
value:(nullable NSString *)value
|
||||
type:(FUIStaticContentTableViewCellType) type
|
||||
action:(nullable FUIStaticContentTableViewCellAction)action;
|
||||
|
||||
/** @fn cellWithTitle:value:type:action:
|
||||
@brief Convenience factory method for a new instance of @c FUIStaticContentTableViewCell.
|
||||
@param title The text of the @c titleLabel of the @c FUIStaticContentTableViewCell.
|
||||
@param value The text of the @c detailTextLabel of the @c FUIStaticContentTableViewCell.
|
||||
@param placeholder The placeholder of input filed, if any.
|
||||
@param action A block which is executed when the cell is selected.
|
||||
@param type Style of displaying cell.
|
||||
*/
|
||||
+ (instancetype)cellWithTitle:(nullable NSString *)title
|
||||
value:(nullable NSString *)value
|
||||
placeholder:(nullable NSString *)placeholder
|
||||
type:(FUIStaticContentTableViewCellType) type
|
||||
action:(nullable FUIStaticContentTableViewCellAction)action;
|
||||
|
||||
/** @fn initWithTitle:value:action:type:
|
||||
@brief Designated initializer.
|
||||
@param title The text of the @c titleLabel of the @c FUIStaticContentTableViewCell.
|
||||
@param value The text of the @c detailTextLabel of the @c FUIStaticContentTableViewCell.
|
||||
@param placeholder The placeholder of input filed, if any.
|
||||
@param type Style of displaying cell.
|
||||
@param action A block which is executed when the cell is selected.
|
||||
*/
|
||||
- (instancetype)initWithTitle:(nullable NSString *)title
|
||||
value:(nullable NSString *)value
|
||||
placeholder:(nullable NSString *)placeholder
|
||||
type:(FUIStaticContentTableViewCellType) type
|
||||
action:(nullable FUIStaticContentTableViewCellAction)action
|
||||
NS_DESIGNATED_INITIALIZER;
|
||||
|
||||
/** @fn init
|
||||
@brief Please use initWithTitle:value:action:type:
|
||||
*/
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
|
||||
@end
|
||||
|
||||
/** @class FUIPasswordTableViewCell
|
||||
@brief Represents a cell in a @c UITableView. This cell has password input field.
|
||||
*/
|
||||
@interface FUIPasswordTableViewCell : UITableViewCell<UITextFieldDelegate>
|
||||
|
||||
/** @var cellData
|
||||
@brief Used to retrieve modified value of the cell.
|
||||
*/
|
||||
@property (nonatomic) FUIStaticContentTableViewCell *cellData;
|
||||
|
||||
/** @var title
|
||||
@brief The title label of the cell.
|
||||
*/
|
||||
@property (weak, nonatomic) IBOutlet UILabel *title;
|
||||
|
||||
/** @var password
|
||||
@brief The password inout field of the cell.
|
||||
*/
|
||||
@property (weak, nonatomic) IBOutlet UITextField *password;
|
||||
|
||||
@end
|
||||
|
||||
/** @class FUIInputTableViewCell
|
||||
@brief Represents a cell in a @c UITableView. This cell has regular input field.
|
||||
*/
|
||||
@interface FUIInputTableViewCell : UITableViewCell<UITextFieldDelegate>
|
||||
|
||||
/** @var cellData
|
||||
@brief Used to retrieve modified value of the cell.
|
||||
*/
|
||||
@property (nonatomic) FUIStaticContentTableViewCell *cellData;
|
||||
|
||||
/** @var title
|
||||
@brief The title label of the cell.
|
||||
*/
|
||||
@property (weak, nonatomic) IBOutlet UILabel *title;
|
||||
|
||||
/** @var password
|
||||
@brief The inout field of the cell.
|
||||
*/
|
||||
@property (weak, nonatomic) IBOutlet UITextField *input;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,319 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FirebaseAuthUI/Sources/FUIStaticContentTableViewManager.h"
|
||||
|
||||
#import "FirebaseAuthUI/Sources/Public/FirebaseAuthUI/FUIAuthUtils.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @var kCellReuseIdentitfier
|
||||
@brief The reuse identifier for default style table view cell.
|
||||
*/
|
||||
static NSString *const kCellReuseIdentitfier = @"reuseIdentifier";
|
||||
|
||||
/** @var kValueCellReuseIdentitfier
|
||||
@brief The reuse identifier for value style table view cell.
|
||||
*/
|
||||
static NSString *const kValueCellReuseIdentitfier = @"reuseValueIdentifier";
|
||||
|
||||
/** @var kPasswordCellReuseIdentitfier
|
||||
@brief The reuse identifier for password style table view cell.
|
||||
*/
|
||||
static NSString *const kPasswordCellReuseIdentitfier = @"passwordCellReuseIdentitfier";
|
||||
|
||||
/** @var kInputCellReuseIdentitfier
|
||||
@brief The reuse identifier for input style table view cell.
|
||||
*/
|
||||
static NSString *const kInputCellReuseIdentitfier = @"inputCellReuseIdentitfier";
|
||||
|
||||
/** @var kVisibilityOffImage
|
||||
@brief Name of icon to show current password in secure input field.
|
||||
*/
|
||||
static NSString *const kVisibilityOffImage = @"ic_visibility_off.png";
|
||||
|
||||
/** @var kVisibilityOnImage
|
||||
@brief Name of icon to show current password in secure input field.
|
||||
*/
|
||||
static NSString *const kVisibilityOnImage = @"ic_visibility.png";
|
||||
|
||||
#pragma mark -
|
||||
|
||||
@implementation FUIStaticContentTableViewManager
|
||||
|
||||
- (void)setContents:(nullable FUIStaticContentTableViewContent *)contents {
|
||||
_contents = contents;
|
||||
[self.tableView reloadData];
|
||||
}
|
||||
|
||||
- (void)setTableView:(nullable UITableView *)tableView {
|
||||
_tableView = tableView;
|
||||
[tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:kCellReuseIdentitfier];
|
||||
|
||||
UINib *passwordCellNib = [UINib nibWithNibName:NSStringFromClass([FUIPasswordTableViewCell class])
|
||||
bundle:[FUIAuthUtils authUIBundle]];
|
||||
[tableView registerNib:passwordCellNib forCellReuseIdentifier:kPasswordCellReuseIdentitfier];
|
||||
|
||||
UINib *inputCellNib = [UINib nibWithNibName:NSStringFromClass([FUIInputTableViewCell class])
|
||||
bundle:[FUIAuthUtils authUIBundle]];
|
||||
[tableView registerNib:inputCellNib forCellReuseIdentifier:kInputCellReuseIdentitfier];
|
||||
}
|
||||
|
||||
#pragma mark - UITableViewDataSource
|
||||
|
||||
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
|
||||
return _contents.sections.count;
|
||||
}
|
||||
|
||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
|
||||
return _contents.sections[section].cells.count;
|
||||
}
|
||||
|
||||
- (nullable NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
|
||||
return _contents.sections[section].title;
|
||||
}
|
||||
|
||||
- (UITableViewCell *)tableView:(UITableView *)tableView
|
||||
cellForRowAtIndexPath:(NSIndexPath *)indexPath{
|
||||
FUIStaticContentTableViewCell *cellData =
|
||||
_contents.sections[indexPath.section].cells[indexPath.row];
|
||||
UITableViewCell *cell;
|
||||
if (cellData.type == FUIStaticContentTableViewCellTypePassword) {
|
||||
return [self dequeuePasswordCell:cellData tableView:tableView];
|
||||
} else if (cellData.type == FUIStaticContentTableViewCellTypeInput) {
|
||||
return [self dequeueInputCell:cellData tableView:tableView];
|
||||
} else if (cellData.value.length) {
|
||||
cell = [tableView dequeueReusableCellWithIdentifier:kValueCellReuseIdentitfier];
|
||||
if (!cell) {
|
||||
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
|
||||
reuseIdentifier:kValueCellReuseIdentitfier];
|
||||
cell.detailTextLabel.adjustsFontSizeToFitWidth = YES;
|
||||
cell.detailTextLabel.minimumScaleFactor = 0.5;
|
||||
}
|
||||
} else {
|
||||
// kCellReuseIdentitfier has already been registered.
|
||||
cell = [tableView dequeueReusableCellWithIdentifier:kCellReuseIdentitfier
|
||||
forIndexPath:indexPath];
|
||||
}
|
||||
cell.textLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline];
|
||||
cell.detailTextLabel.text = cellData.value;
|
||||
cell.textLabel.text = cellData.title;
|
||||
cell.accessoryType = cellData.action &&
|
||||
cellData.type == FUIStaticContentTableViewCellTypeDefault ?
|
||||
UITableViewCellAccessoryDisclosureIndicator : UITableViewCellAccessoryNone;
|
||||
cell.textLabel.textColor = cellData.type == FUIStaticContentTableViewCellTypeButton ?
|
||||
[UIColor blueColor] : [UIColor blackColor];
|
||||
cell.selectionStyle = cellData.action ? UITableViewCellSelectionStyleDefault :
|
||||
UITableViewCellSelectionStyleNone;
|
||||
return cell;
|
||||
}
|
||||
|
||||
- (UITableViewCell *)dequeuePasswordCell:(FUIStaticContentTableViewCell *)cellData
|
||||
tableView:(UITableView *)tableView{
|
||||
FUIPasswordTableViewCell *cell =
|
||||
[tableView dequeueReusableCellWithIdentifier:kPasswordCellReuseIdentitfier];
|
||||
cell.title.text = cellData.title;
|
||||
cell.password.text = cellData.value;
|
||||
cell.password.placeholder = cellData.placeholder;
|
||||
cell.cellData = cellData;
|
||||
cell.title.font = [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline];
|
||||
return cell;
|
||||
}
|
||||
|
||||
- (UITableViewCell *)dequeueInputCell:(FUIStaticContentTableViewCell *)cellData
|
||||
tableView:(UITableView *)tableView{
|
||||
FUIInputTableViewCell *cell =
|
||||
[tableView dequeueReusableCellWithIdentifier:kInputCellReuseIdentitfier];
|
||||
cell.title.text = cellData.title;
|
||||
cell.input.text = cellData.value;
|
||||
cell.input.placeholder = cellData.placeholder;
|
||||
cell.cellData = cellData;
|
||||
cell.title.font = [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline];
|
||||
return cell;
|
||||
}
|
||||
|
||||
#pragma mark - UITableViewDelegate
|
||||
|
||||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
FUIStaticContentTableViewCell *cellData =
|
||||
_contents.sections[indexPath.section].cells[indexPath.row];
|
||||
BOOL hasAssociatedAction = cellData.action != nil;
|
||||
if (hasAssociatedAction) {
|
||||
cellData.action();
|
||||
}
|
||||
[tableView deselectRowAtIndexPath:indexPath animated:hasAssociatedAction];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
#pragma mark -
|
||||
|
||||
@implementation FUIStaticContentTableViewContent
|
||||
|
||||
+ (instancetype)contentWithSections:
|
||||
(nullable NSArray<FUIStaticContentTableViewSection *> *)sections {
|
||||
return [[self alloc] initWithSections:sections];
|
||||
}
|
||||
|
||||
- (instancetype)initWithSections:(nullable NSArray<FUIStaticContentTableViewSection *> *)sections {
|
||||
self = [super init];
|
||||
if (self) {
|
||||
_sections = [sections copy];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
#pragma mark -
|
||||
|
||||
@implementation FUIStaticContentTableViewSection
|
||||
|
||||
+ (instancetype)sectionWithTitle:(nullable NSString *)title
|
||||
cells:(nullable NSArray<FUIStaticContentTableViewCell *> *)cells {
|
||||
return [[self alloc] initWithTitle:title cells:cells];
|
||||
}
|
||||
|
||||
- (instancetype)initWithTitle:(nullable NSString *)title
|
||||
cells:(nullable NSArray<FUIStaticContentTableViewCell *> *)cells {
|
||||
self = [super init];
|
||||
if (self) {
|
||||
_title = [title copy];
|
||||
_cells = [cells copy];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
#pragma mark -
|
||||
|
||||
@implementation FUIStaticContentTableViewCell
|
||||
|
||||
+ (instancetype)cellWithTitle:(nullable NSString *)title {
|
||||
return [[self alloc] initWithTitle:title
|
||||
value:nil
|
||||
placeholder:nil
|
||||
type:FUIStaticContentTableViewCellTypeDefault
|
||||
action:nil];
|
||||
}
|
||||
|
||||
+ (instancetype)cellWithTitle:(nullable NSString *)title
|
||||
value:(nullable NSString *)value {
|
||||
return [[self alloc] initWithTitle:title
|
||||
value:value
|
||||
placeholder:nil
|
||||
type:FUIStaticContentTableViewCellTypeDefault
|
||||
action:nil];
|
||||
}
|
||||
|
||||
+ (instancetype)cellWithTitle:(nullable NSString *)title
|
||||
action:(nullable FUIStaticContentTableViewCellAction)action {
|
||||
return [[self alloc] initWithTitle:title
|
||||
value:nil
|
||||
placeholder:nil
|
||||
type:FUIStaticContentTableViewCellTypeDefault
|
||||
action:action];
|
||||
}
|
||||
|
||||
+ (instancetype)cellWithTitle:(nullable NSString *)title
|
||||
type:(FUIStaticContentTableViewCellType) type
|
||||
action:(nullable FUIStaticContentTableViewCellAction)action {
|
||||
return [[self alloc] initWithTitle:title
|
||||
value:nil
|
||||
placeholder:nil
|
||||
type:type
|
||||
action:action];
|
||||
}
|
||||
|
||||
+ (instancetype)cellWithTitle:(nullable NSString *)title
|
||||
value:(nullable NSString *)value
|
||||
action:(nullable FUIStaticContentTableViewCellAction)action {
|
||||
return [[self alloc] initWithTitle:title
|
||||
value:value
|
||||
placeholder:nil
|
||||
type:FUIStaticContentTableViewCellTypeDefault
|
||||
action:action];
|
||||
}
|
||||
|
||||
+ (instancetype)cellWithTitle:(nullable NSString *)title
|
||||
value:(nullable NSString *)value
|
||||
type:(FUIStaticContentTableViewCellType) type
|
||||
action:(nullable FUIStaticContentTableViewCellAction)action {
|
||||
return [[self alloc] initWithTitle:title
|
||||
value:value
|
||||
placeholder:nil
|
||||
type:type
|
||||
action:action];
|
||||
}
|
||||
|
||||
+ (instancetype)cellWithTitle:(nullable NSString *)title
|
||||
value:(nullable NSString *)value
|
||||
placeholder:(nullable NSString *)placeholder
|
||||
type:(FUIStaticContentTableViewCellType) type
|
||||
action:(nullable FUIStaticContentTableViewCellAction)action {
|
||||
return [[self alloc] initWithTitle:title
|
||||
value:value
|
||||
placeholder:placeholder
|
||||
type:type
|
||||
action:action];
|
||||
}
|
||||
|
||||
- (instancetype)initWithTitle:(nullable NSString *)title
|
||||
value:(nullable NSString *)value
|
||||
placeholder:(nullable NSString *)placeholder
|
||||
type:(FUIStaticContentTableViewCellType) type
|
||||
action:(nullable FUIStaticContentTableViewCellAction)action {
|
||||
self = [super init];
|
||||
if (self) {
|
||||
_title = [title copy];
|
||||
_value = [value copy];
|
||||
_action = [action copy];
|
||||
_placeholder = [placeholder copy];
|
||||
_type = type;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@interface FUIPasswordTableViewCell ()
|
||||
@property (weak, nonatomic) IBOutlet UIButton *visibilityButton;
|
||||
@end
|
||||
|
||||
@implementation FUIPasswordTableViewCell
|
||||
|
||||
- (IBAction)onPasswordVisibilitySelected:(id)sender {
|
||||
self.password.secureTextEntry = ! self.password.secureTextEntry;
|
||||
UIImage *image = self.password.secureTextEntry ? [UIImage imageNamed:kVisibilityOnImage]
|
||||
: [UIImage imageNamed:kVisibilityOffImage];
|
||||
[self.visibilityButton setImage:image forState:UIControlStateNormal];
|
||||
}
|
||||
- (IBAction)onPasswordChanged:(id)sender {
|
||||
self.cellData.value = self.password.text;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation FUIInputTableViewCell
|
||||
|
||||
- (IBAction)onInputChanged:(id)sender {
|
||||
self.cellData.value = self.input.text;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,29 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
/** @typedef FUIAccountSettingsOperationType
|
||||
@brief List of all possible Account management operations.
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, FUIAccountSettingsOperationType) {
|
||||
FUIAccountSettingsOperationTypeUnsupported = 0,
|
||||
FUIAccountSettingsOperationTypeUpdateName,
|
||||
FUIAccountSettingsOperationTypeUpdatePassword,
|
||||
FUIAccountSettingsOperationTypeForgotPassword,
|
||||
FUIAccountSettingsOperationTypeUpdateEmail,
|
||||
FUIAccountSettingsOperationTypeUnlinkAccount,
|
||||
FUIAccountSettingsOperationTypeSignOut,
|
||||
FUIAccountSettingsOperationTypeDeleteAccount,
|
||||
};
|
||||
@@ -0,0 +1,35 @@
|
||||
//
|
||||
// Copyright (c) 2017 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FUIAuthBaseViewController.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @class FUIAccountSettingsViewController
|
||||
@brief Represents View Controller for Account Management UI. This controller should be embedded
|
||||
in @c UINavigationController in order to present it's internal views.
|
||||
*/
|
||||
@interface FUIAccountSettingsViewController : FUIAuthBaseViewController
|
||||
|
||||
/** @property deleteAccountActionDisabled
|
||||
@brief Whether to hide "Delete account" button, defaults to NO.
|
||||
*/
|
||||
@property(nonatomic, assign, getter=isDeleteAccountActionDisabled)
|
||||
BOOL deleteAccountActionDisabled;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,273 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#import "FUIAccountSettingsOperationType.h"
|
||||
#import "FUIAuthProvider.h"
|
||||
|
||||
@class FIRAuth;
|
||||
@class FUIAuthPickerViewController;
|
||||
@class FUIAuth;
|
||||
@class FIRUser;
|
||||
@class FUIEmailEntryViewController;
|
||||
@class FUIPasswordSignInViewController;
|
||||
@class FUIPasswordSignUpViewController;
|
||||
@class FUIPasswordRecoveryViewController;
|
||||
@class FUIPasswordVerificationViewController;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @typedef FUIAuthResultCallback
|
||||
@brief The type of block invoked when sign-in related events complete.
|
||||
@param user The user signed in, if any.
|
||||
@param error The error which occurred, if any.
|
||||
*/
|
||||
typedef void (^FUIAuthResultCallback)(FIRUser *_Nullable user, NSError *_Nullable error);
|
||||
|
||||
/** @protocol FUIAuthDelegate
|
||||
@brief A delegate that receives callbacks or provides custom UI for @c FUIAuth.
|
||||
*/
|
||||
@protocol FUIAuthDelegate <NSObject>
|
||||
|
||||
@optional
|
||||
|
||||
/** @fn authUI:didSignInWithAuthDataResult:error:
|
||||
@brief Message sent after the sign in process has completed to report the signed in user or
|
||||
error encountered.
|
||||
@param authUI The @c FUIAuth instance sending the message.
|
||||
@param authDataResult The data result if the sign in attempt was successful.
|
||||
@param url pass the deep link associated with an email link sign-in completion. It is useful
|
||||
for the developer to access the state before the sign-in attempt was triggered.
|
||||
@param error The error that occurred during sign in, if any.
|
||||
*/
|
||||
- (void)authUI:(FUIAuth *)authUI
|
||||
didSignInWithAuthDataResult:(nullable FIRAuthDataResult *)authDataResult
|
||||
URL:(nullable NSURL *)url
|
||||
error:(nullable NSError *)error;
|
||||
|
||||
/** @fn authUI:didSignInWithAuthDataResult:error:
|
||||
@brief Message sent after the sign in process has completed to report the signed in user or
|
||||
error encountered.
|
||||
@param authUI The @c FUIAuth instance sending the message.
|
||||
@param authDataResult The data result if the sign in attempt was successful.
|
||||
@param error The error that occurred during sign in, if any.
|
||||
*/
|
||||
- (void)authUI:(FUIAuth *)authUI
|
||||
didSignInWithAuthDataResult:(nullable FIRAuthDataResult *)authDataResult
|
||||
error:(nullable NSError *)error;
|
||||
|
||||
/** @fn authUI:didSignInWithUser:error:
|
||||
@brief This is deprecated API and will be removed in a future release.
|
||||
Use @c authUI:didSignInWithAuthDataResult:error:
|
||||
Both sign in call backs are called (@c authUI:didSignInWithAuthDataResult:error:
|
||||
and @c authUI:didSignInWithUser:error:).
|
||||
This message is sent after the sign in process has completed to report the signed in user or
|
||||
error encountered.
|
||||
@param authUI The @c FUIAuth instance sending the message.
|
||||
@param user The signed in user if the sign in attempt was successful.
|
||||
@param error The error that occurred during sign in, if any.
|
||||
*/
|
||||
- (void)authUI:(FUIAuth *)authUI
|
||||
didSignInWithUser:(nullable FIRUser *)user
|
||||
error:(nullable NSError *)error
|
||||
__attribute__((deprecated("Instead use authUI:didSignInWithAuthDataResult:error:")));
|
||||
|
||||
|
||||
/** @fn authUI:didFinishOperation:error:
|
||||
@brief Message sent after finishing Account Management operation.
|
||||
@param authUI The @c FUIAuth instance sending the message.
|
||||
@param operation The operation type that was just completed.
|
||||
@param error The error that occurred during operation, if any.
|
||||
*/
|
||||
- (void)authUI:(FUIAuth *)authUI
|
||||
didFinishOperation:(FUIAccountSettingsOperationType)operation
|
||||
error:(nullable NSError *)error;
|
||||
|
||||
/** @fn authPickerViewControllerForAuthUI:
|
||||
@brief Sent to the receiver to ask for an instance of @c FUIAuthPickerViewController subclass
|
||||
to allow UI customizations.
|
||||
@param authUI The @c FUIAuth instance sending the message.
|
||||
@return an instance of @c FUIAuthPickerViewController subclass.
|
||||
*/
|
||||
- (FUIAuthPickerViewController *)authPickerViewControllerForAuthUI:(FUIAuth *)authUI;
|
||||
|
||||
/** @fn emailEntryViewControllerForAuthUI:
|
||||
@brief Sent to the receiver to ask for an instance of @c FUIEmailEntryViewController subclass
|
||||
to allow UI customizations.
|
||||
@param authUI The @c FUIAuth instance sending the message.
|
||||
@return an instance of @c FUIEmailEntryViewController subclass.
|
||||
*/
|
||||
- (FUIEmailEntryViewController *)emailEntryViewControllerForAuthUI:(FUIAuth *)authUI;
|
||||
|
||||
/** @fn passwordSignInViewControllerForAuthUI:email:
|
||||
@brief Sent to the receiver to ask for an instance of @c FUIPasswordSignInViewController subclass
|
||||
to allow sign-in UI customizations.
|
||||
@param authUI The @c FUIAuth instance sending the message.
|
||||
@param email The email user is using for sin-in.
|
||||
@return an instance of @c FUIPasswordSignInViewController subclass.
|
||||
*/
|
||||
- (FUIPasswordSignInViewController *)passwordSignInViewControllerForAuthUI:(FUIAuth *)authUI
|
||||
email:(nullable NSString *)email;
|
||||
|
||||
/** @fn passwordSignInViewControllerForAuthUI:email:
|
||||
@brief Sent to the receiver to ask for an instance of @c FUIPasswordSignUpViewController subclass
|
||||
to allow sign-up UI customizations.
|
||||
@param authUI The @c FUIAuth instance sending the message.
|
||||
@param email The email user is using for sin-in.
|
||||
@param requireDisplayName Whether the displayname field is required .
|
||||
@return an instance of @c FUIPasswordSignUpViewController subclass.
|
||||
*/
|
||||
- (FUIPasswordSignUpViewController *)passwordSignUpViewControllerForAuthUI:(FUIAuth *)authUI
|
||||
email:(nullable NSString *)email
|
||||
requireDisplayName:(BOOL)requireDisplayName;
|
||||
|
||||
/** @fn passwordRecoveryViewControllerForAuthUI:email:
|
||||
@brief Sent to the receiver to ask for an instance of @c FUIPasswordRecoveryViewController subclass
|
||||
to allow sign-up UI customizations.
|
||||
@param authUI The @c FUIAuth instance sending the message.
|
||||
@param email The email user is using for password recovery.
|
||||
@return an instance of @c FUIPasswordRecoveryViewController subclass.
|
||||
*/
|
||||
- (FUIPasswordRecoveryViewController *)passwordRecoveryViewControllerForAuthUI:(FUIAuth *)authUI
|
||||
email:(nullable NSString *)email;
|
||||
|
||||
/** @fn passwordVerificationViewControllerForAuthUI:email:newCredential:
|
||||
@brief Sent to the receiver to ask for an instance of @c FUIPasswordVerificationViewController subclass
|
||||
to allow password verification UI customizations.
|
||||
@param authUI The @c FUIAuth instance sending the message.
|
||||
@param email The email user is using for sin-in.
|
||||
@param newCredential This @c FIRAuthCredential obtained from linked account.
|
||||
@return an instance of @c FUIPasswordVerificationViewController subclass.
|
||||
*/
|
||||
- (FUIPasswordVerificationViewController *)passwordVerificationViewControllerForAuthUI:(FUIAuth *)authUI
|
||||
email:(nullable NSString *)email
|
||||
newCredential:(FIRAuthCredential *)newCredential;
|
||||
@end
|
||||
|
||||
/** @class FUIAuth
|
||||
@brief Provides various iOS UIs for Firebase Auth.
|
||||
*/
|
||||
@interface FUIAuth : NSObject <NSSecureCoding>
|
||||
|
||||
/** @fn defaultAuthUI
|
||||
@brief Gets the @c FUIAuth object for the default FirebaseApp.
|
||||
@remarks Thread safe.
|
||||
*/
|
||||
+ (nullable FUIAuth *)defaultAuthUI;
|
||||
|
||||
/** @fn authUIWithAuth:
|
||||
@brief Gets the @c FUIAuth instance for a @c FIRAuth.
|
||||
@param auth The @c FIRAuth for which to retrieve the associated @c FUIAuth instance.
|
||||
@return The @c FUIAuth instance associated with the given @c FIRAuth.
|
||||
@remarks Thread safe.
|
||||
*/
|
||||
+ (nullable FUIAuth *)authUIWithAuth:(FIRAuth *)auth;
|
||||
|
||||
/** @property app
|
||||
@brief Gets the @c FIRAuth this auth UI object is connected to.
|
||||
*/
|
||||
@property(nonatomic, weak, readonly, nullable) FIRAuth *auth;
|
||||
|
||||
/** @property providers
|
||||
@brief The @c FUIAuthProvider implementations to use for sign-in.
|
||||
*/
|
||||
@property(nonatomic, copy) NSArray<id<FUIAuthProvider>> *providers;
|
||||
|
||||
/** @property shouldHideCancelButton
|
||||
@brief Whether to hide the cancel button, defaults to NO.
|
||||
*/
|
||||
@property(nonatomic, assign) BOOL shouldHideCancelButton;
|
||||
|
||||
/** @property interactiveDismissEnabled
|
||||
@brief Whether or not interactive dismiss should be enabled on iOS 13 and above devices.
|
||||
*/
|
||||
@property(nonatomic, assign, getter=isInteractiveDismissEnabled) BOOL interactiveDismissEnabled API_AVAILABLE(ios(13));
|
||||
|
||||
/** @property customStringsBundle
|
||||
@brief Custom strings bundle supplied by the developer. Nil when there is no custom strings
|
||||
bundle set. In which case the default bundle will be used.
|
||||
@remarks Set this property to nil in order to remove the custom strings bundle and revert to
|
||||
using the default bundle.
|
||||
*/
|
||||
@property(nonatomic, strong, nullable) NSBundle *customStringsBundle;
|
||||
|
||||
/** @property TOSURL
|
||||
@brief The URL of your app's Terms of Service. If not nil, a Terms of Service notice is
|
||||
displayed on the initial sign-in screen and potentially the phone number auth and
|
||||
email/password account creation screen.
|
||||
*/
|
||||
@property(nonatomic, copy, nullable) NSURL *TOSURL;
|
||||
|
||||
/** @property shouldAutoUpgradeAnonymousUsers
|
||||
@brief Whether to enable auto upgrading of anonymous accounts, defaults to NO.
|
||||
*/
|
||||
@property(nonatomic, assign, getter=shouldAutoUpgradeAnonymousUsers) BOOL autoUpgradeAnonymousUsers;
|
||||
|
||||
/** @property privacyPolicyURL
|
||||
@brief The URL of your app's Privacy Policy. If not nil, a privacy policy notice is
|
||||
displayed on the initial sign-in screen and potentially the phone number auth and
|
||||
email/password account creation screen.
|
||||
*/
|
||||
@property(nonatomic, copy, nullable) NSURL *privacyPolicyURL;
|
||||
|
||||
/** @property delegate
|
||||
@brief A delegate that receives callbacks or provides custom UI for @c FUIAuth.
|
||||
*/
|
||||
@property(nonatomic, weak) id<FUIAuthDelegate> delegate;
|
||||
|
||||
/** @fn init
|
||||
@brief Please use @c FUIAuth.authUIWithAuth to get a @c FUIAuth instance.
|
||||
*/
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
|
||||
/** @fn handleOpenURL:
|
||||
@brief Should be called from your @c UIApplicationDelegate in
|
||||
@c UIApplicationDelegate.application:openURL:options: to finish sign-in flows.
|
||||
@param URL The URL which may be handled by Firebase Auth UI if an URL is expected.
|
||||
@param sourceApplication The application which tried opening the URL.
|
||||
@return YES if Firebase Auth UI handled the URL. NO otherwise.
|
||||
*/
|
||||
- (BOOL)handleOpenURL:(NSURL *)URL
|
||||
sourceApplication:(nullable NSString *)sourceApplication;
|
||||
|
||||
/** @fn authViewController
|
||||
@brief Returns an instance of the initial navigation view controller of AuthUI.
|
||||
@return An instance of the the initial navigation view controller of AuthUI.
|
||||
*/
|
||||
- (UINavigationController *)authViewController;
|
||||
|
||||
/** @fn signOutWithError:
|
||||
@brief Signs out the current user from Firebase and all providers.
|
||||
@param error Optionally; if an error occurs during Firebase sign out, upon return contains an
|
||||
NSError object that describes the problem; is nil otherwise. If Firebase error occurs all
|
||||
providers are not logged-out and sign-out should be retried.
|
||||
@return @YES when the sign out request was successful. @NO otherwise.
|
||||
@remarks Possible error codes:
|
||||
- @c FIRAuthErrorCodeKeychainError Indicates an error occurred when accessing the keychain.
|
||||
The @c NSLocalizedFailureReasonErrorKey field in the @c NSError.userInfo dictionary
|
||||
will contain more information about the error encountered.
|
||||
*/
|
||||
- (BOOL)signOutWithError:(NSError *_Nullable *_Nullable)error;
|
||||
|
||||
/** @fn useEmulatorWithHost:port
|
||||
@brief Configures Firebase Auth to connect to an emulated host instead of the remote backend.
|
||||
*/
|
||||
- (void)useEmulatorWithHost:(NSString *)host port:(NSInteger)port;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,124 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@class FIRAuth;
|
||||
@class FUIAuth;
|
||||
@protocol FUIAuthProvider;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @class FUIAuthBaseViewController
|
||||
@brief The base view controller that provides common methods for all subclasses.
|
||||
*/
|
||||
@interface FUIAuthBaseViewController : UIViewController
|
||||
|
||||
/** @typedef FUIAuthAlertActionHandler
|
||||
@brief The type of block called when an alert view is dismissed by a user action.
|
||||
*/
|
||||
typedef void (^FUIAuthAlertActionHandler)(void);
|
||||
|
||||
/** @property auth
|
||||
@brief The @c FIRAuth instance of the application.
|
||||
*/
|
||||
@property(nonatomic, strong, readonly) FIRAuth *auth;
|
||||
|
||||
/** @property authUI
|
||||
@brief The @c FUIAuth instance of the application.
|
||||
*/
|
||||
@property(nonatomic, strong, readonly) FUIAuth *authUI;
|
||||
|
||||
/** @fn init
|
||||
@brief Please use @c initWithNibName:bundle:authUI:.
|
||||
*/
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
|
||||
/** @fn initWithStyle:
|
||||
@brief Please use @c initWithNibName:bundle:authUI:.
|
||||
*/
|
||||
- (instancetype)initWithStyle:(UITableViewStyle)style NS_UNAVAILABLE;
|
||||
|
||||
/** @fn initWithNibName:bundle:
|
||||
@brief Please use @c initWithNibName:bundle:authUI:.
|
||||
*/
|
||||
- (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil
|
||||
bundle:(nullable NSBundle *)nibBundleOrNil NS_UNAVAILABLE;
|
||||
|
||||
/** @fn initWithNibName:bundle:authUI:
|
||||
@brief Designated initializer.
|
||||
@param nibNameOrNil The name of the nib file to associate with the view controller.
|
||||
@param nibBundleOrNil The bundle in which to search for the nib file.
|
||||
@param authUI The @c FUIAuth instance that manages this view controller.
|
||||
*/
|
||||
- (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil
|
||||
bundle:(nullable NSBundle *)nibBundleOrNil
|
||||
authUI:(FUIAuth *)authUI NS_DESIGNATED_INITIALIZER;
|
||||
|
||||
/** @fn initWithAuthUI:
|
||||
@brief Convenience initializer. If your custom auth picker controller is using its
|
||||
own nib file, this initializer should be overwritten.
|
||||
@param authUI The @c FUIAuth instance that manages this view controller.
|
||||
*/
|
||||
- (instancetype)initWithAuthUI:(FUIAuth *)authUI;
|
||||
|
||||
/** @fn onBack
|
||||
@brief Pops the view controller from navigation stack. If current controller is root
|
||||
works as @c cancelAuthorization
|
||||
*/
|
||||
- (void)onBack;
|
||||
|
||||
/** @fn cancelAuthorization
|
||||
@brief Cancels Authorization flow, calls UI delegate callbacks and hides UI
|
||||
*/
|
||||
- (void)cancelAuthorization;
|
||||
|
||||
/** @fn showSignInAlertWithEmail:provider:handler:
|
||||
@brief Displays an alert asking the user to confirm whether or not they want to proceed with the selected provider.
|
||||
@param email The email address to sign in with.
|
||||
@param provider The identity provider to sign in with.
|
||||
@param signinHandler Handler for the sign in action of the alert.
|
||||
@param cancelHandler Handler for the cancel action of the alert.
|
||||
*/
|
||||
+ (void)showSignInAlertWithEmail:(NSString *)email
|
||||
provider:(id<FUIAuthProvider>)provider
|
||||
presentingViewController:(UIViewController *)presentingViewController
|
||||
signinHandler:(FUIAuthAlertActionHandler)signinHandler
|
||||
cancelHandler:(FUIAuthAlertActionHandler)cancelHandler;
|
||||
|
||||
/** @fn incrementActivity
|
||||
@brief Increment the current activity count. If there's positive number of activities, display
|
||||
and animate the activity indicator with a short delay.
|
||||
@remarks Calls to @c incrementActivity and @c decrementActivity should be balanced.
|
||||
*/
|
||||
- (void)incrementActivity;
|
||||
|
||||
/** @fn decrementActivity
|
||||
@brief Decrement the current activity count. If the count reaches 0, stop and hide the
|
||||
activity indicator.
|
||||
@remarks Calls to @c incrementActivity and @c decrementActivity should be balanced.
|
||||
*/
|
||||
- (void)decrementActivity;
|
||||
|
||||
/** @fn addActivityIndicator:
|
||||
@brief Creates and adds an activity indicator to the center of the specified view.
|
||||
@param view The view where indicator is shown.
|
||||
*/
|
||||
+ (UIActivityIndicatorView *)addActivityIndicator:(UIView *)view;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,150 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FUIAuthBaseViewController.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/**
|
||||
* The methods in this category are exposed so that the FirebaseUI provider frameworks
|
||||
* can make use of them. They may change in non-breaking releases and should not be
|
||||
* used publicly.
|
||||
*/
|
||||
@interface FUIAuthBaseViewController (Internal)
|
||||
|
||||
/** @fn isValidEmail:
|
||||
@brief Statically validates email address.
|
||||
@param email The email address to validate.
|
||||
*/
|
||||
+ (BOOL)isValidEmail:(NSString *)email;
|
||||
|
||||
/** @fn showAlertWithMessage:
|
||||
@brief Displays an alert view with given title and message on top of the current view
|
||||
controller.
|
||||
@param message The message of the alert.
|
||||
*/
|
||||
- (void)showAlertWithMessage:(NSString *)message;
|
||||
|
||||
/** @fn showAlertWithMessage:
|
||||
@brief Displays an alert view with given title and message on top of the current view
|
||||
controller.
|
||||
@param message The message of the alert.
|
||||
*/
|
||||
+ (void)showAlertWithMessage:(NSString *)message;
|
||||
|
||||
/** @fn showAlertWithMessage:presentingViewController:
|
||||
@brief Displays an alert view with given title and message on top of the current view
|
||||
controller.
|
||||
@param message The message of the alert.
|
||||
@param presentingViewController The controller which shows alert.
|
||||
*/
|
||||
+ (void)showAlertWithMessage:(NSString *)message
|
||||
presentingViewController:(nullable UIViewController *)presentingViewController;
|
||||
|
||||
/** @fn showAlertWithTitle:message:
|
||||
@brief Displays an alert view with given title, message and action title on top of the
|
||||
specified view controller.
|
||||
@param title The title of the alert.
|
||||
@param message The message of the alert.
|
||||
@param presentingViewController The controller which shows alert.
|
||||
*/
|
||||
+ (void)showAlertWithTitle:(nullable NSString *)title
|
||||
message:(nullable NSString *)message
|
||||
presentingViewController:(nullable UIViewController *)presentingViewController;
|
||||
|
||||
/** @fn showAlertWithTitle:message:actionTitle:actionHandler:dismissTitle:dismissHandler:
|
||||
@brief Displays an alert view with given title, message and action title on top of the
|
||||
specified view controller.
|
||||
@param title The title of the alert.
|
||||
@param message The message of the alert.
|
||||
@param actionTitle The title of the action button.
|
||||
@param actionHandler The block to execute if the action button is tapped.
|
||||
@param dismissTitle The title of the dismiss button.
|
||||
@param dismissHandler The block to execute if the cancel button is tapped.
|
||||
@param presentingViewController The controller which shows alert.
|
||||
*/
|
||||
+ (void)showAlertWithTitle:(nullable NSString *)title
|
||||
message:(nullable NSString *)message
|
||||
actionTitle:(nullable NSString *)actionTitle
|
||||
actionHandler:(nullable FUIAuthAlertActionHandler)actionHandler
|
||||
dismissTitle:(nullable NSString *)dismissTitle
|
||||
dismissHandler:(nullable FUIAuthAlertActionHandler)dismissHandler
|
||||
presentingViewController:(nullable UIViewController *)presentingViewController;
|
||||
|
||||
/** @fn showSignInAlertWithEmail:providerShortName:providerSignInLabel:handler:
|
||||
@brief Displays an alert to conform with user whether she wants to proceed with the provider.
|
||||
@param email The email address to sign in with.
|
||||
@param providerShortName The name of the provider as displayed in the sign-in alert message.
|
||||
@param providerSignInLabel The name of the provider as displayed in the sign-in alert button.
|
||||
@param signinHandler Handler for the sign in action of the alert.
|
||||
@param cancelHandler Handler for the cancel action of the alert.
|
||||
*/
|
||||
+ (void)showSignInAlertWithEmail:(NSString *)email
|
||||
providerShortName:(NSString *)providerShortName
|
||||
providerSignInLabel:(NSString *)providerSignInLabel
|
||||
presentingViewController:(UIViewController *)presentingViewController
|
||||
signinHandler:(FUIAuthAlertActionHandler)signinHandler
|
||||
cancelHandler:(FUIAuthAlertActionHandler)cancelHandler;
|
||||
|
||||
/** @fn pushViewController:
|
||||
@brief Push the view controller to the navigation controller of the current view controller
|
||||
with animation. The pushed view controller will have a fixed "Back" title for back button.
|
||||
@param viewController The view controller to be pushed.
|
||||
*/
|
||||
- (void)pushViewController:(UIViewController *)viewController;
|
||||
|
||||
/** @fn dismissNavigationControllerAnimated:completion:
|
||||
@brief dismiss navigation controller if it is not the rootViewController. If it is set as
|
||||
the rootViewController only perform the completion block.
|
||||
@param animated Use animation when dismissing the ViewControler.
|
||||
@param completion Code to be executed upon completion
|
||||
*/
|
||||
- (void)dismissNavigationControllerAnimated:(BOOL)animated
|
||||
completion:(void (^)(void))completion;
|
||||
|
||||
/** @fn pushViewController:
|
||||
@brief Push the view controller to the navigation controller of the current view controller
|
||||
with animation. The pushed view controller will have a fixed "Back" title for back button.
|
||||
@param viewController The view controller to be pushed.
|
||||
@param navigationController The controller where view controller is pushed.
|
||||
*/
|
||||
+ (void)pushViewController:(UIViewController *)viewController
|
||||
navigationController:(UINavigationController *)navigationController;
|
||||
|
||||
/** @fn providerLocalizedName:
|
||||
@brief Maps provider Id to localized provider name.
|
||||
*/
|
||||
+ (NSString *)providerLocalizedName:(NSString *)providerId;
|
||||
|
||||
/** @fn barItemWithTitle:target:action:
|
||||
@brief Creates multiline @c UIBarButtonItem of fixed width.
|
||||
@param title The title of the button.
|
||||
@param target The target object of the @c UIBarButtonItem .
|
||||
@param action The action called when button is selected.
|
||||
*/
|
||||
+ (UIBarButtonItem *)barItemWithTitle:(NSString *)title
|
||||
target:(nullable id)target
|
||||
action:(SEL)action;
|
||||
|
||||
/** @fn enableDynamicCellHeightForTableView:
|
||||
@brief Configures table view in the way than it resizes rows according to their height.
|
||||
@param tableView The tableView which is going to be configured.
|
||||
*/
|
||||
- (void)enableDynamicCellHeightForTableView:(UITableView *)tableView;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,62 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FUIAuthErrors.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @class FUIAuthErrorUtils
|
||||
@brief Utility class used to construct @c NSError instances.
|
||||
*/
|
||||
@interface FUIAuthErrorUtils : NSObject
|
||||
|
||||
/** @fn errorWithCode:
|
||||
@brief Creates an error with the specified code.
|
||||
@param code The error code.
|
||||
@param userInfo The dictionary containing the error description if available.
|
||||
@return An @c NSError with the correct code and corresponding description if available.
|
||||
*/
|
||||
+ (NSError *)errorWithCode:(FUIAuthErrorCode)code userInfo:(nullable NSDictionary *)userInfo;
|
||||
|
||||
/** @fn userCancelledSignInError
|
||||
@brief Constructs an @c NSError with the @c FUIAuthErrorCodeUserCancelledSignIn code.
|
||||
*/
|
||||
+ (NSError *)userCancelledSignInError;
|
||||
|
||||
/** @fn mergeConflictErrorWithUserInfo:underlyingError:
|
||||
@brief Constructs an @c NSError with the @c FUIAuthErrorCodeMergeConflict code.
|
||||
@param userInfo The userInfo dictionary to add to the NSError object.
|
||||
@param underlyingError The error that was raised by FirebaseAuth while merging accounts.
|
||||
@return The merge conflict error.
|
||||
*/
|
||||
+ (NSError *)mergeConflictErrorWithUserInfo:(NSDictionary *)userInfo
|
||||
underlyingError:(nullable NSError *)underlyingError;
|
||||
|
||||
/** @fn providerErrorWithUnderlyingError:providerID:
|
||||
@brief Constructs an @c NSError with the @c FUIAuthErrorCodeProviderError code and a populated
|
||||
@c NSUnderlyingErrorKey and @c FUIAuthErrorUserInfoProviderIDKey in the
|
||||
@c NSError.userInfo dictionary.
|
||||
@param underlyingError The value of the @c NSUnderlyingErrorKey.
|
||||
@param providerID The value of the @c FUIAuthErrorUserInfoProviderIDKey.
|
||||
@remarks This error is used when an error from the identity provider cannot be immediately
|
||||
handled, and should be forwarded to the client.
|
||||
*/
|
||||
+ (NSError *)providerErrorWithUnderlyingError:(NSError *)underlyingError
|
||||
providerID:(NSString *)providerID;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,68 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @var FUIAuthErrorDomain
|
||||
@brief The standard Firebase error domain.
|
||||
*/
|
||||
extern NSString *const FUIAuthErrorDomain;
|
||||
|
||||
/** @var FUIAuthErrorUserInfoProviderIDKey
|
||||
@brief The ID of the identity provider.
|
||||
*/
|
||||
extern NSString *const FUIAuthErrorUserInfoProviderIDKey;
|
||||
|
||||
/** @var FUIAuthCredentialKey
|
||||
@brief The key used to obtain the credential stored within the userInfo dictionary of the
|
||||
error, if available.
|
||||
*/
|
||||
extern NSString *const FUIAuthCredentialKey;
|
||||
|
||||
/** @var FUIAuthErrorCode
|
||||
@brief Error codes used by FUIAuth.
|
||||
*/
|
||||
typedef NS_ENUM(NSUInteger, FUIAuthErrorCode) {
|
||||
|
||||
/** @var FUIAuthErrorCodeUserCancelledSignIn
|
||||
@brief Indicates the user cancelled a sign-in flow.
|
||||
*/
|
||||
FUIAuthErrorCodeUserCancelledSignIn = 1,
|
||||
|
||||
/** @var FUIAuthErrorCodeProviderError
|
||||
@brief Indicates there's an error from the identity provider. The
|
||||
@c FUIAuthErrorUserInfoProviderIDKey field in the @c NError.userInfo dictionary will
|
||||
contain the ID of the identity provider.
|
||||
*/
|
||||
FUIAuthErrorCodeProviderError = 2,
|
||||
|
||||
/** @var FUIAuthErrorCodeCantFindProvider
|
||||
@brief Indicates that @FUIAuth.providers doen't contain current provider (see NSError.userInfo
|
||||
key @c FUIAuthErrorUserInfoProviderIDKey).
|
||||
*/
|
||||
FUIAuthErrorCodeCantFindProvider = 3,
|
||||
|
||||
/** @var FUIAuthErrorCodeMergeConflict
|
||||
@brief Indicates that a merge conflict occurred while trying to automatically upgrade an
|
||||
anonymous user. The non-anonymous credential can be obtained from the userInfo dictionary
|
||||
of the corresponding NSError using the @c FUIAuthCredentialKey.
|
||||
*/
|
||||
FUIAuthErrorCodeMergeConflict = 4,
|
||||
};
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,30 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#import "FUIAuthBaseViewController.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @class FUIAuthPickerViewController
|
||||
@brief The view controller that displays sign in options to the user.
|
||||
*/
|
||||
@interface FUIAuthPickerViewController : FUIAuthBaseViewController
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,178 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <FirebaseAuth/FirebaseAuth.h>
|
||||
|
||||
@class FIRAuth;
|
||||
@class FIRAuthCredential;
|
||||
@class FIRUserInfo;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @typedef FUIAuthProviderSignInCompletionBlock
|
||||
@brief The type of block used to notify the auth system of the result of a sign-in flow.
|
||||
@see FUIAuthProvider.signInWithDefaultValue:presentingViewController:completion:
|
||||
@param credential The @c FIRAuthCredential object created after user interaction with third
|
||||
party provider.
|
||||
@param error The error which may happen during creation of The @c FIRAuthCredential object.
|
||||
@param result The result of sign-in operation using provided @c FIRAuthCredential object.
|
||||
@see @c FIRAuth.signInWithCredential:completion:
|
||||
@param userInfo A dictionary containing additional information about the sign in operation.
|
||||
@see FUIAuthProviderSignInUserInfoKey
|
||||
*/
|
||||
typedef void (^FUIAuthProviderSignInCompletionBlock) (
|
||||
FIRAuthCredential *_Nullable credential,
|
||||
NSError *_Nullable error,
|
||||
_Nullable FIRAuthResultCallback result,
|
||||
NSDictionary<NSString *, id> *_Nullable userInfo);
|
||||
|
||||
/**
|
||||
@typedef FUIAuthProviderSignInUserInfoKey
|
||||
@brief A key in a userInfo dictionary corresponding to some supplemental value from
|
||||
the sign-in operation.
|
||||
@see FUIAuthProviderSignInCompletionBlock
|
||||
*/
|
||||
typedef NSString *FUIAuthProviderSignInUserInfoKey NS_TYPED_ENUM;
|
||||
|
||||
/**
|
||||
@typedef FUIButtonAlignment
|
||||
@brief The alignment of the icon and text of the button.
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, FUIButtonAlignment) {
|
||||
FUIButtonAlignmentLeading,
|
||||
FUIButtonAlignmentCenter,
|
||||
};
|
||||
|
||||
/**
|
||||
For Firebase-based authentication operations, use this key to obtain the original auth result
|
||||
that was returned from the sign-in operation.
|
||||
*/
|
||||
static FUIAuthProviderSignInUserInfoKey FUIAuthProviderSignInUserInfoKeyAuthDataResult =
|
||||
@"FUIAuthProviderSignInUserInfoKeyAuthDataResult";
|
||||
|
||||
/** @protocol FUIAuthProvider
|
||||
@brief Represents an authentication provider (such as Google Sign In or Facebook Login) which
|
||||
can be used with the AuthUI classes (like @c FUIAuthPickerViewController).
|
||||
@remarks @c FUIAuth.signInProviders is populated with a list of @c FUIAuthProvider instances
|
||||
to provide users with sign-in options.
|
||||
*/
|
||||
@protocol FUIAuthProvider <NSObject>
|
||||
|
||||
/** @property providerID
|
||||
@brief A unique identifier for the provider.
|
||||
*/
|
||||
@property(nonatomic, copy, readonly, nullable) NSString *providerID;
|
||||
|
||||
/** @property shortName
|
||||
@brief A short display name for the provider.
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *shortName;
|
||||
|
||||
/** @property signInLabel
|
||||
@brief A localized label for the provider's sign-in button.
|
||||
*/
|
||||
@property(nonatomic, copy, readonly) NSString *signInLabel;
|
||||
|
||||
/** @property icon
|
||||
@brief The icon image of the provider.
|
||||
*/
|
||||
@property(nonatomic, strong, readonly) UIImage *icon;
|
||||
|
||||
/** @property buttonBackgroundColor
|
||||
@brief The background color that should be used for the sign in button of the provider.
|
||||
*/
|
||||
@property(nonatomic, strong, readonly) UIColor *buttonBackgroundColor;
|
||||
|
||||
/** @property buttonTextColor
|
||||
@brief The text color that should be used for the sign in button of the provider.
|
||||
*/
|
||||
@property(nonatomic, strong, readonly) UIColor *buttonTextColor;
|
||||
|
||||
/** @property buttonAlignment
|
||||
@brief The alignment of the icon and text of the button.
|
||||
*/
|
||||
@property(nonatomic, readwrite) FUIButtonAlignment buttonAlignment;
|
||||
|
||||
/** @fn signInWithEmail:presentingViewController:completion:
|
||||
@brief Called when the user wants to sign in using this auth provider.
|
||||
@remarks Implementors should invoke the completion block when the sign-in process has terminated
|
||||
or is canceled. There are two valid combinations of parameters; either @c credentials and
|
||||
@c userInfo are both non-nil, or @c error is non-nil. Errors must specify an error code
|
||||
which is one of the @c FIRAuthErrorCode codes. It is very important that all possible code
|
||||
paths eventually call this method to inform the auth system of the result of the sign-in
|
||||
flow.
|
||||
@param email The email address of the user if it's known.
|
||||
@param presentingViewController The view controller used to present the UI.
|
||||
@param completion See remarks. A block which should be invoked when the sign-in process
|
||||
(using @c FIRAuthCredential) completes.
|
||||
*/
|
||||
- (void)signInWithEmail:(nullable NSString *)email
|
||||
presentingViewController:(nullable UIViewController *)presentingViewController
|
||||
completion:(nullable FUIAuthProviderSignInCompletionBlock)completion
|
||||
__attribute__((deprecated("This is deprecated API and will be removed in a future release."
|
||||
"Use signInWithDefaultValue:presentingViewController:completion:")));
|
||||
|
||||
/** @fn signInWithDefaultValue:presentingViewController:completion:
|
||||
@brief Called when the user wants to sign in using this auth provider.
|
||||
@remarks Implementors should invoke the completion block when the sign-in process has terminated
|
||||
or is canceled. There are two valid combinations of parameters; either @c credentials and
|
||||
@c userInfo are both non-nil, or @c error is non-nil. Errors must specify an error code
|
||||
which is one of the @c FIRAuthErrorCode codes. It is very important that all possible code
|
||||
paths eventually call this method to inform the auth system of the result of the sign-in
|
||||
flow.
|
||||
@param defaultValue The default initialization value of the provider (email, phone number etc.).
|
||||
@param presentingViewController The view controller used to present the UI.
|
||||
@param completion See remarks. A block which should be invoked when the sign-in process
|
||||
(using @c FIRAuthCredential) completes.
|
||||
*/
|
||||
- (void)signInWithDefaultValue:(nullable NSString *)defaultValue
|
||||
presentingViewController:(nullable UIViewController *)presentingViewController
|
||||
completion:(nullable FUIAuthProviderSignInCompletionBlock)completion;
|
||||
|
||||
/** @fn signOut
|
||||
@brief Called when the user wants to sign out.
|
||||
*/
|
||||
- (void)signOut;
|
||||
|
||||
/** @property accessToken
|
||||
@brief User Access Token obtained during sign in.
|
||||
*/
|
||||
@property(nonatomic, copy, readonly, nullable) NSString *accessToken;
|
||||
|
||||
@optional;
|
||||
|
||||
/** @property idToken
|
||||
@brief User Id Token obtained during sign in. Not all providers can return, thus it's optional.
|
||||
*/
|
||||
@property(nonatomic, copy, readonly, nullable) NSString *idToken;
|
||||
|
||||
/** @fn email
|
||||
@brief The email address associated with this provider, if any.
|
||||
*/
|
||||
- (NSString *)email;
|
||||
|
||||
/** @fn handleOpenURL:
|
||||
@brief May be used to help complete a sign-in flow which requires a callback from Safari.
|
||||
@param URL The URL which may be handled by the auth provider if an URL is expected.
|
||||
@param sourceApplication The application which tried opening the URL.
|
||||
@return YES if your auth provider handled the URL. NO otherwise.
|
||||
*/
|
||||
- (BOOL)handleOpenURL:(NSURL *)URL sourceApplication:(nullable NSString *)sourceApplication;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,147 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
extern NSString *const kStr_ASCellAddPassword;
|
||||
extern NSString *const kStr_ASCellChangePassword;
|
||||
extern NSString *const kStr_ASCellDeleteAccount;
|
||||
extern NSString *const kStr_ASCellEmail;
|
||||
extern NSString *const kStr_ASCellName;
|
||||
extern NSString *const kStr_ASCellSignOut;
|
||||
extern NSString *const kStr_ASSectionTitleLinkedAccounts;
|
||||
extern NSString *const kStr_ASSectionTitleProfile;
|
||||
extern NSString *const kStr_ASSectionTitleSecurity;
|
||||
extern NSString *const kStr_AccountDisabledError;
|
||||
extern NSString *const kStr_AuthPickerTitle;
|
||||
extern NSString *const kStr_Back;
|
||||
extern NSString *const kStr_Cancel;
|
||||
extern NSString *const kStr_CannotAuthenticateError;
|
||||
extern NSString *const kStr_ChoosePassword;
|
||||
extern NSString *const kStr_Close;
|
||||
extern NSString *const kStr_ConfirmEmail;
|
||||
extern NSString *const kStr_Email;
|
||||
extern NSString *const kStr_EmailAlreadyInUseError;
|
||||
extern NSString *const kStr_EmailSentConfirmationMessage;
|
||||
extern NSString *const kStr_EnterYourEmail;
|
||||
extern NSString *const kStr_EnterYourPassword;
|
||||
extern NSString *const kStr_Error;
|
||||
extern NSString *const kStr_ExistingAccountTitle;
|
||||
extern NSString *const kStr_FirstAndLastName;
|
||||
extern NSString *const kStr_ForgotPassword;
|
||||
extern NSString *const kStr_InvalidEmailError;
|
||||
extern NSString *const kStr_InvalidPasswordError;
|
||||
extern NSString *const kStr_Name;
|
||||
extern NSString *const kStr_Next;
|
||||
extern NSString *const kStr_OK;
|
||||
extern NSString *const kStr_Password;
|
||||
extern NSString *const kStr_PasswordRecoveryEmailSentMessage;
|
||||
extern NSString *const kStr_PasswordRecoveryEmailSentTitle;
|
||||
extern NSString *const kStr_PasswordRecoveryMessage;
|
||||
extern NSString *const kStr_PasswordRecoveryTitle;
|
||||
extern NSString *const kStr_PasswordVerificationMessage;
|
||||
extern NSString *const kStr_ProviderUsedPreviouslyMessage;
|
||||
extern NSString *const kStr_Save;
|
||||
extern NSString *const kStr_Send;
|
||||
extern NSString *const kStr_Resend;
|
||||
extern NSString *const kStr_SignedIn;
|
||||
extern NSString *const kStr_SignInTitle;
|
||||
extern NSString *const kStr_SignInTooManyTimesError;
|
||||
extern NSString *const kStr_SignInWithEmail;
|
||||
extern NSString *const kStr_SignInEmailSent;
|
||||
extern NSString *const kStr_SignUpTitle;
|
||||
extern NSString *const kStr_SignUpTooManyTimesError;
|
||||
extern NSString *const kStr_TermsOfService;
|
||||
extern NSString *const kStr_TroubleGettingEmailTitle;
|
||||
extern NSString *const kStr_TroubleGettingEmailMessage;
|
||||
extern NSString *const kStr_PrivacyPolicy;
|
||||
extern NSString *const kStr_TermsOfServiceMessage;
|
||||
extern NSString *const kStr_UserNotFoundError;
|
||||
extern NSString *const kStr_WeakPasswordError;
|
||||
extern NSString *const kStr_WrongPasswordError;
|
||||
extern NSString *const kStr_CantFindProvider;
|
||||
extern NSString *const kStr_EmailsDontMatch;
|
||||
extern NSString *const kStr_ForgotPassword;
|
||||
extern NSString *const kStr_VerifyItsYou;
|
||||
extern NSString *const kStr_DeleteAccountConfirmationTitle;
|
||||
extern NSString *const kStr_DeleteAccountBody;
|
||||
extern NSString *const kStr_DeleteAccountConfirmationMessage;
|
||||
extern NSString *const kStr_Delete;
|
||||
extern NSString *const kStr_DeleteAccountControllerTitle;
|
||||
extern NSString *const kStr_ActionCantBeUndone;
|
||||
extern NSString *const kStr_UnlinkTitle;
|
||||
extern NSString *const kStr_UnlinkAction;
|
||||
extern NSString *const kStr_UnlinkConfirmationTitle;
|
||||
extern NSString *const kStr_UnlinkConfirmationMessage;
|
||||
extern NSString *const kStr_UnlinkConfirmationActionTitle;
|
||||
extern NSString *const kStr_UpdateEmailAlertMessage;
|
||||
extern NSString *const kStr_UpdateEmailVerificationAlertMessage;
|
||||
extern NSString *const kStr_AddPasswordAlertMessage;
|
||||
extern NSString *const kStr_EditPasswordAlertMessage;
|
||||
extern NSString *const kStr_ReauthenticateEditPasswordAlertMessage;
|
||||
extern NSString *const kStr_AddPasswordTitle;
|
||||
extern NSString *const kStr_EditPasswordTitle;
|
||||
extern NSString *const kStr_EditNameTitle;
|
||||
extern NSString *const kStr_EditEmailTitle;
|
||||
extern NSString *const kStr_ProviderTitlePassword;
|
||||
extern NSString *const kStr_ProviderTitleGoogle;
|
||||
extern NSString *const kStr_ProviderTitleFacebook;
|
||||
extern NSString *const kStr_ProviderTitleTwitter;
|
||||
extern NSString *const kStr_SignInWithProvider;
|
||||
extern NSString *const kStr_PlaceholderEnterName;
|
||||
extern NSString *const kStr_PlaceholderEnterEmail;
|
||||
extern NSString *const kStr_PlaceholderEnterPassword;
|
||||
extern NSString *const kStr_PlaceholderChosePassword;
|
||||
extern NSString *const kStr_PlaceholderNewPassword;
|
||||
extern NSString *const kStr_ForgotPasswordTitle;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** @fn FUILocalizedString
|
||||
@brief Gets a localized string from a name.
|
||||
@param key The key value of the string.
|
||||
@return The string by the key localized in the current locale located in default table.
|
||||
*/
|
||||
NSString *FUILocalizedString(NSString *key);
|
||||
|
||||
/** @fn FUILocalizedStringFromTable
|
||||
@brief Gets a localized string from a name.
|
||||
@param key The key value of the string.
|
||||
@param table The localization table name.
|
||||
@return The string by the key localized in the current locale.
|
||||
*/
|
||||
NSString *FUILocalizedStringFromTable(NSString *key, NSString *table);
|
||||
|
||||
/** @fn FUILocalizedStringFromTableInBundle
|
||||
@brief Gets a localized string from a name.
|
||||
@param key The key value of the string.
|
||||
@param table The localization table name.
|
||||
@param bundle The bundle containing the strings. If nil is provided, this function searches the main app bundle.
|
||||
@return The string by the key localized in the current locale.
|
||||
*/
|
||||
NSString *FUILocalizedStringFromTableInBundle(NSString *key,
|
||||
NSString *table,
|
||||
NSBundle *_Nullable bundle);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,34 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
/** @class FUIAuthTableHeaderView
|
||||
@brief A table header view that contains a title label and a detail label.
|
||||
*/
|
||||
@interface FUIAuthTableHeaderView : UIView
|
||||
|
||||
/** @property titleLabel
|
||||
@brief The title label in this table header view.
|
||||
*/
|
||||
@property(nonatomic, strong) UILabel *titleLabel;
|
||||
|
||||
/** @property detailLabel
|
||||
@brief The detail label in this table header view.
|
||||
*/
|
||||
@property(nonatomic, strong) UILabel *detailLabel;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,38 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/** @class FUIAuthTableViewCell
|
||||
@brief A common table view cell that can be used in multiple view controllers.
|
||||
*/
|
||||
@interface FUIAuthTableViewCell : UITableViewCell
|
||||
|
||||
/** @property label
|
||||
@brief The label that describes the purpose of @c textField.
|
||||
*/
|
||||
@property(nonatomic, strong) IBOutlet UILabel *label;
|
||||
|
||||
/** @property textField
|
||||
@brief The text field that collects user's input.
|
||||
*/
|
||||
@property(nonatomic, strong) IBOutlet UITextField *textField;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,63 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/* Name of the FirebaseAuthUI resource bundle. */
|
||||
extern NSString *const FUIAuthBundleName;
|
||||
|
||||
/** @class FUIAuthUtils
|
||||
@brief Provides utility methods for Firebase Auth UI.
|
||||
*/
|
||||
@interface FUIAuthUtils : NSObject
|
||||
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
|
||||
+ (NSBundle *)authUIBundle;
|
||||
|
||||
/** @fn bundleNamed:
|
||||
@brief Gets the framework bundle for specified name
|
||||
@param bundleName Name of the bundle to retreive. If nil, this returns the default bundle for
|
||||
FirebaseUI.
|
||||
@param framework The name of the framework module the resource bundle should be present in.
|
||||
*/
|
||||
+ (nullable NSBundle *)bundleNamed:(nullable NSString *)bundleName
|
||||
inFrameworkBundle:(nullable NSBundle *)framework;
|
||||
|
||||
/** @fn imageNamed:fromBundle:
|
||||
@brief Gets a UIImage with the given name, assuming it's a png.
|
||||
@param name Name of the image to retreive.
|
||||
@param bundle The bundle to retrieve the image from. If nil, this method will look into the
|
||||
default FirebaseAuthUI framework bundle.
|
||||
*/
|
||||
+ (nullable UIImage *)imageNamed:(NSString *)name fromBundle:(nullable NSBundle *)bundle;
|
||||
|
||||
/** @fn randomNonce
|
||||
@brief Generates a random 32-character nonce.
|
||||
*/
|
||||
+ (NSString *)randomNonce;
|
||||
|
||||
/** @fn stringBySHA256HashingString:
|
||||
@brief Generates the SHA-256 hash of the input string.
|
||||
@param input The input string to be hashed.
|
||||
*/
|
||||
+ (NSString *)stringBySHA256HashingString:(NSString *)input;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,105 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import "FUIAuth.h"
|
||||
|
||||
@class FUIAuthBaseViewController;
|
||||
|
||||
/** @typedef FUIEmailHintSignInCallback
|
||||
@brief The type of block invoked when an emailHint sign-in event completes.
|
||||
|
||||
@param authResult Optionally; Result of sign-in request containing both the user and
|
||||
the additional user info associated with the user.
|
||||
@param error Optionally; the error which occurred - or nil if the request was successful.
|
||||
@param credential Optionally; The credential used to sign-in.
|
||||
*/
|
||||
typedef void (^FUIEmailHintSignInCallback)(FIRAuthDataResult *_Nullable authResult,
|
||||
NSError *_Nullable error,
|
||||
FIRAuthCredential *_Nullable credential);
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
|
||||
/**
|
||||
* The methods defined in this file are for use in the FirebaseUI provider libraries.
|
||||
* They may break in non-major releases and are not for public use.
|
||||
*/
|
||||
@protocol FUIEmailAuthProvider <NSObject>
|
||||
|
||||
- (void)handleAccountLinkingForEmail:(NSString *)email
|
||||
newCredential:(FIRAuthCredential *)newCredential
|
||||
presentingViewController:(UIViewController *)presentingViewController
|
||||
signInResult:(_Nullable FIRAuthResultCallback)result;
|
||||
|
||||
- (void)signInWithEmailHint:(NSString *)emailHint
|
||||
presentingViewController:(FUIAuthBaseViewController *)presentingViewController
|
||||
originalError:(NSError *)originalError
|
||||
completion:(FUIEmailHintSignInCallback)completion;
|
||||
|
||||
@end
|
||||
|
||||
@interface FUIAuth ()
|
||||
|
||||
/** @fn invokeResultCallbackWithAuthDataResult:error:
|
||||
@brief Invokes the auth UI result callback.
|
||||
@param authDataResult The sign in data result, if any.
|
||||
@param url The url, if any.
|
||||
@param error The error which occurred, if any.
|
||||
*/
|
||||
- (void)invokeResultCallbackWithAuthDataResult:(nullable FIRAuthDataResult *)authDataResult
|
||||
URL:(nullable NSURL *)url
|
||||
error:(nullable NSError *)error;
|
||||
|
||||
/** @fn invokeOperationCallback:error:
|
||||
@brief Invokes the auth UI operation callback.
|
||||
@param operation The executed operation.
|
||||
@param error The error which occurred, if any.
|
||||
*/
|
||||
- (void)invokeOperationCallback:(FUIAccountSettingsOperationType)operation
|
||||
error:(NSError *_Nullable)error;
|
||||
|
||||
|
||||
/** @fn providerWithID:
|
||||
@brief Returns first provider (if it exists) with specified provider ID.
|
||||
@param providerID The ID of the provider.
|
||||
*/
|
||||
- (nullable id<FUIAuthProvider>)providerWithID:(NSString *)providerID;
|
||||
|
||||
/** @fn signInWithProviderUI:presentingViewController:defaultValue:
|
||||
@brief Signs in with specified provider.
|
||||
@see FUIAuthDelegate.authUI:didSignInWithAuthDataResult:URL:error: for method callback.
|
||||
@param providerUI The authentication provider used for signing in.
|
||||
@param presentingViewController The view controller used to present the UI.
|
||||
@param defaultValue The provider default initialization value (e.g. email or phone number)
|
||||
used for signing in.
|
||||
*/
|
||||
- (void)signInWithProviderUI:(id<FUIAuthProvider>)providerUI
|
||||
presentingViewController:(UIViewController *)presentingViewController
|
||||
defaultValue:(nullable NSString *)defaultValue;
|
||||
|
||||
/** @property emailAuthProvider
|
||||
@brief The email auth provider, if any, that will be displayed in the default sign-in UI.
|
||||
*/
|
||||
@property(nonatomic, weak, nullable) id<FUIEmailAuthProvider> emailAuthProvider;
|
||||
|
||||
/** @property emulatorEnabled
|
||||
@brief Whether or not the auth emulator is being used.
|
||||
*/
|
||||
@property(nonatomic, assign, getter=isEmulatorEnabled) BOOL emulatorEnabled;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,56 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@class FUIAuth;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface FUIPrivacyAndTermsOfServiceView : UITextView
|
||||
|
||||
/** @fn useFullMessage
|
||||
@brief Display Privacy and Terms of Service message in full form.
|
||||
*/
|
||||
- (void)useFullMessage;
|
||||
|
||||
/** @fn useFooterMessage
|
||||
@brief Display Privacy and Terms of Service link, which usually are placed as footer.
|
||||
*/
|
||||
- (void)useFooterMessage;
|
||||
|
||||
/** @property authUI
|
||||
@brief the @c FUIAuth instance whose bundle will be used to populate the view's terms of service and
|
||||
privacy policy content. If this property is nil, the default @c FUIAuth instance's terms of service and
|
||||
privacy policy will be used.
|
||||
*/
|
||||
@property(nonatomic, strong, nullable) FUIAuth *authUI;
|
||||
|
||||
@end
|
||||
|
||||
@interface FUIPrivacyAndTermsOfServiceView (Protected)
|
||||
|
||||
/** @fn privacyPolicyAndTOSMessageFromFormat:
|
||||
@brief produce the Privacy and Terms of Service attributed string based on a customized format.
|
||||
@param format the customized format with two placeholder for Privacy and Terms of Service
|
||||
respectively.
|
||||
@return the Privacy and Terms of Service attributed string.
|
||||
*/
|
||||
- (nullable NSAttributedString *)privacyPolicyAndTOSMessageFromFormat:(NSString *)format;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,39 @@
|
||||
//
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
//! Project version number for FirebaseAuthUI.
|
||||
FOUNDATION_EXPORT double FirebaseAuthUIVersionNumber;
|
||||
|
||||
//! Project version string for FirebaseAuthUI.
|
||||
FOUNDATION_EXPORT const unsigned char FirebaseAuthUIVersionString[];
|
||||
|
||||
#import "FUIAccountSettingsOperationType.h"
|
||||
#import "FUIAccountSettingsViewController.h"
|
||||
|
||||
#import "FUIAuth.h"
|
||||
#import "FUIAuth_Internal.h"
|
||||
#import "FUIAuthBaseViewController.h"
|
||||
#import "FUIAuthBaseViewController_Internal.h"
|
||||
#import "FUIAuthErrorUtils.h"
|
||||
#import "FUIAuthPickerViewController.h"
|
||||
#import "FUIAuthProvider.h"
|
||||
#import "FUIAuthUtils.h"
|
||||
#import "FUIAuthStrings.h"
|
||||
#import "FUIPrivacyAndTermsOfServiceView.h"
|
||||
#import "FUIAuthTableViewCell.h"
|
||||
#import "FUIAuthTableHeaderView.h"
|
||||
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11762" systemVersion="16D32" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="FUIAccountSettingsViewController">
|
||||
<connections>
|
||||
<outlet property="_tableView" destination="eqY-yZ-dBf" id="TD4-3r-0vS"/>
|
||||
<outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
|
||||
</connections>
|
||||
</placeholder>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" translatesAutoresizingMaskIntoConstraints="NO" id="eqY-yZ-dBf">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
|
||||
</tableView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="eqY-yZ-dBf" firstAttribute="width" secondItem="i5M-Pr-FkT" secondAttribute="width" id="3Qh-GY-SCw"/>
|
||||
<constraint firstItem="eqY-yZ-dBf" firstAttribute="centerX" secondItem="i5M-Pr-FkT" secondAttribute="centerX" id="DPF-ia-S5T"/>
|
||||
<constraint firstItem="eqY-yZ-dBf" firstAttribute="centerY" secondItem="i5M-Pr-FkT" secondAttribute="centerY" id="Ze9-TO-Eza"/>
|
||||
<constraint firstItem="eqY-yZ-dBf" firstAttribute="height" secondItem="i5M-Pr-FkT" secondAttribute="height" id="aE2-aI-enV"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="26.5" y="51.5"/>
|
||||
</view>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="FUIAuthPickerViewController">
|
||||
<connections>
|
||||
<outlet property="_contentView" destination="kfP-Vq-eU2" id="znY-gx-1D2"/>
|
||||
<outlet property="_privacyPolicyAndTOSView" destination="Xez-8g-dy2" id="HaL-rZ-tXf"/>
|
||||
<outlet property="_scrollView" destination="d6g-3B-CLV" id="UvZ-O4-pYi"/>
|
||||
<outlet property="view" destination="x7L-AB-muU" id="owh-pk-03E"/>
|
||||
</connections>
|
||||
</placeholder>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view contentMode="scaleToFill" id="x7L-AB-muU">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="d6g-3B-CLV">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="kfP-Vq-eU2">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" editable="NO" usesAttributedText="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Xez-8g-dy2" customClass="FUIPrivacyAndTermsOfServiceView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="359" height="49"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<attributedString key="attributedText"/>
|
||||
<textInputTraits key="textInputTraits" autocapitalizationType="sentences" textContentType="url"/>
|
||||
<dataDetectorType key="dataDetectorTypes" link="YES"/>
|
||||
</textView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
|
||||
</view>
|
||||
</subviews>
|
||||
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
|
||||
</scrollView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</view>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14113" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
|
||||
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" id="KGk-i7-Jjw" customClass="FUIAuthTableViewCell">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="120" translatesAutoresizingMaskIntoConstraints="NO" id="sfp-hN-0cm">
|
||||
<rect key="frame" x="24" y="12" width="42" height="19.5"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="placeholder" textAlignment="natural" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="h79-sO-Wvr">
|
||||
<rect key="frame" x="82" y="12" width="222" height="20"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<textInputTraits key="textInputTraits" enablesReturnKeyAutomatically="YES"/>
|
||||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottom" secondItem="sfp-hN-0cm" secondAttribute="bottom" constant="12" id="Hfx-Sj-ZFd"/>
|
||||
<constraint firstItem="sfp-hN-0cm" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leadingMargin" constant="8" id="IlN-rQ-ihe"/>
|
||||
<constraint firstItem="sfp-hN-0cm" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="12" id="bQL-qk-aDH"/>
|
||||
<constraint firstItem="h79-sO-Wvr" firstAttribute="trailing" secondItem="H2p-sc-9uM" secondAttribute="trailingMargin" id="cw2-QM-hvf"/>
|
||||
<constraint firstItem="h79-sO-Wvr" firstAttribute="leading" secondItem="sfp-hN-0cm" secondAttribute="trailing" constant="16" id="fQG-E1-E2k"/>
|
||||
<constraint firstItem="h79-sO-Wvr" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="vrf-rs-lcv"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<connections>
|
||||
<outlet property="label" destination="sfp-hN-0cm" id="P56-j7-YbI"/>
|
||||
<outlet property="textField" destination="h79-sO-Wvr" id="c4I-0A-gMQ"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -0,0 +1,59 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12120" systemVersion="16F73" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12088"/>
|
||||
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="FUIStaticContentTableViewController"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="inputCellReuseIdentitfier" id="iNb-DP-bP2" customClass="FUIInputTableViewCell">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="iNb-DP-bP2" id="TlY-8X-4BX">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Aj1-vo-KPN">
|
||||
<rect key="frame" x="8" y="11" width="42" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="120" id="NQp-aD-hrg"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" textAlignment="natural" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="IFu-zc-lrX">
|
||||
<rect key="frame" x="58" y="-1" width="309" height="44"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="44" id="JL9-Jt-Ytc"/>
|
||||
</constraints>
|
||||
<nil key="textColor"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<textInputTraits key="textInputTraits" autocorrectionType="no" spellCheckingType="no" returnKeyType="done" enablesReturnKeyAutomatically="YES"/>
|
||||
<connections>
|
||||
<action selector="onInputChanged:" destination="iNb-DP-bP2" eventType="editingChanged" id="W8F-zs-sCz"/>
|
||||
</connections>
|
||||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="IFu-zc-lrX" firstAttribute="centerY" secondItem="TlY-8X-4BX" secondAttribute="centerY" id="LGW-tR-7Y6"/>
|
||||
<constraint firstItem="Aj1-vo-KPN" firstAttribute="centerY" secondItem="IFu-zc-lrX" secondAttribute="centerY" id="a9H-nf-3mf"/>
|
||||
<constraint firstItem="Aj1-vo-KPN" firstAttribute="leading" secondItem="TlY-8X-4BX" secondAttribute="leadingMargin" id="bBx-9I-F8f"/>
|
||||
<constraint firstItem="IFu-zc-lrX" firstAttribute="leading" secondItem="Aj1-vo-KPN" secondAttribute="trailing" constant="8" symbolic="YES" id="fD2-jf-gub"/>
|
||||
<constraint firstItem="IFu-zc-lrX" firstAttribute="trailing" secondItem="TlY-8X-4BX" secondAttribute="trailingMargin" id="sZQ-0x-6us"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<connections>
|
||||
<outlet property="input" destination="IFu-zc-lrX" id="Nh5-lL-b0J"/>
|
||||
<outlet property="title" destination="Aj1-vo-KPN" id="Kaz-9i-bZH"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="-1081.5" y="-52"/>
|
||||
</tableViewCell>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -0,0 +1,75 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12120" systemVersion="16F73" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12088"/>
|
||||
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="FUIStaticContentTableViewController"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="passwordCellReuseIdentitfier" id="iNb-DP-bP2" customClass="FUIPasswordTableViewCell">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="iNb-DP-bP2" id="TlY-8X-4BX">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Aj1-vo-KPN">
|
||||
<rect key="frame" x="8" y="11" width="42" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="120" id="5SQ-IS-eze"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="IFu-zc-lrX">
|
||||
<rect key="frame" x="58" y="-0.5" width="277" height="44"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="44" id="7Jf-PF-4Dk"/>
|
||||
</constraints>
|
||||
<nil key="textColor"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<textInputTraits key="textInputTraits" autocorrectionType="no" spellCheckingType="no" returnKeyType="done" enablesReturnKeyAutomatically="YES" secureTextEntry="YES"/>
|
||||
<connections>
|
||||
<action selector="onPasswordChanged:" destination="iNb-DP-bP2" eventType="editingChanged" id="OQR-fn-ToT"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Seb-bY-UKn">
|
||||
<rect key="frame" x="343" y="9.5" width="24" height="24"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="24" id="H7d-J8-dpu"/>
|
||||
</constraints>
|
||||
<state key="normal" image="ic_visibility.png"/>
|
||||
<connections>
|
||||
<action selector="onPasswordVisibilitySelected:" destination="iNb-DP-bP2" eventType="touchUpInside" id="Ryc-XJ-flP"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="Seb-bY-UKn" firstAttribute="leading" secondItem="IFu-zc-lrX" secondAttribute="trailing" constant="8" symbolic="YES" id="1S4-Cr-N82"/>
|
||||
<constraint firstItem="IFu-zc-lrX" firstAttribute="leading" secondItem="Aj1-vo-KPN" secondAttribute="trailing" constant="8" symbolic="YES" id="6uD-Fh-9hU"/>
|
||||
<constraint firstItem="Aj1-vo-KPN" firstAttribute="centerY" secondItem="TlY-8X-4BX" secondAttribute="centerY" id="Izr-Rv-VuX"/>
|
||||
<constraint firstItem="Seb-bY-UKn" firstAttribute="centerY" secondItem="Aj1-vo-KPN" secondAttribute="centerY" id="JlX-qF-49R"/>
|
||||
<constraint firstItem="Aj1-vo-KPN" firstAttribute="centerY" secondItem="IFu-zc-lrX" secondAttribute="centerY" id="OyU-vV-8oK"/>
|
||||
<constraint firstItem="Aj1-vo-KPN" firstAttribute="leading" secondItem="TlY-8X-4BX" secondAttribute="leadingMargin" id="iu7-ho-whw"/>
|
||||
<constraint firstItem="Seb-bY-UKn" firstAttribute="trailing" secondItem="TlY-8X-4BX" secondAttribute="trailingMargin" id="w3Z-Gt-jyx"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<connections>
|
||||
<outlet property="password" destination="IFu-zc-lrX" id="9Qg-cI-e8o"/>
|
||||
<outlet property="title" destination="Aj1-vo-KPN" id="Gec-Dj-OhJ"/>
|
||||
<outlet property="visibilityButton" destination="Seb-bY-UKn" id="rO7-l7-Bau"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="-1081.5" y="-52"/>
|
||||
</tableViewCell>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="ic_visibility.png" width="24" height="24"/>
|
||||
</resources>
|
||||
</document>
|
||||
@@ -0,0 +1,79 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12120" systemVersion="16F73" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12088"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="FUIStaticContentTableViewController">
|
||||
<connections>
|
||||
<outlet property="_footerButton" destination="4Cr-Up-Dez" id="nI4-of-rLb"/>
|
||||
<outlet property="_headerLabel" destination="oYZ-x6-A1j" id="ci6-qJ-vFx"/>
|
||||
<outlet property="_tableView" destination="uNi-em-AIf" id="Fx3-aH-BM1"/>
|
||||
<outlet property="view" destination="gaA-9f-Wc0" id="zTW-yG-YaX"/>
|
||||
</connections>
|
||||
</placeholder>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view contentMode="scaleToFill" id="gaA-9f-Wc0">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" translatesAutoresizingMaskIntoConstraints="NO" id="uNi-em-AIf">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
|
||||
<view key="tableHeaderView" contentMode="scaleToFill" id="6tb-B7-N40">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="100"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oYZ-x6-A1j">
|
||||
<rect key="frame" x="7.5" y="25" width="359" height="50"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="15"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstItem="oYZ-x6-A1j" firstAttribute="centerX" secondItem="6tb-B7-N40" secondAttribute="centerX" id="4Z5-63-vyR"/>
|
||||
<constraint firstItem="oYZ-x6-A1j" firstAttribute="width" secondItem="6tb-B7-N40" secondAttribute="width" constant="-16" id="6y1-zQ-GYj"/>
|
||||
<constraint firstItem="oYZ-x6-A1j" firstAttribute="centerY" secondItem="6tb-B7-N40" secondAttribute="centerY" id="D9V-Ls-1JC"/>
|
||||
<constraint firstItem="oYZ-x6-A1j" firstAttribute="height" secondItem="6tb-B7-N40" secondAttribute="height" constant="-50" id="eDc-eH-Uoa"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<view key="tableFooterView" contentMode="scaleToFill" id="u9P-om-lwv">
|
||||
<rect key="frame" x="0.0" y="632.5" width="375" height="60"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4Cr-Up-Dez">
|
||||
<rect key="frame" x="8" y="0.0" width="38" height="18"/>
|
||||
<inset key="contentEdgeInsets" minX="0.0" minY="0.0" maxX="-8" maxY="0.0"/>
|
||||
<inset key="titleEdgeInsets" minX="8" minY="0.0" maxX="-8" maxY="0.0"/>
|
||||
<state key="normal" title="Button"/>
|
||||
<connections>
|
||||
<action selector="onFooterAction:" destination="-1" eventType="touchUpInside" id="ubK-Vt-75c"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="4Cr-Up-Dez" firstAttribute="top" secondItem="u9P-om-lwv" secondAttribute="top" id="SDs-Ni-7Ki"/>
|
||||
<constraint firstItem="4Cr-Up-Dez" firstAttribute="leading" secondItem="u9P-om-lwv" secondAttribute="leading" constant="8" id="lvm-KU-vWl"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</tableView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstItem="uNi-em-AIf" firstAttribute="height" secondItem="gaA-9f-Wc0" secondAttribute="height" id="Lj7-h6-v1Q"/>
|
||||
<constraint firstItem="uNi-em-AIf" firstAttribute="centerY" secondItem="gaA-9f-Wc0" secondAttribute="centerY" id="VOH-XH-QdQ"/>
|
||||
<constraint firstItem="uNi-em-AIf" firstAttribute="centerX" secondItem="gaA-9f-Wc0" secondAttribute="centerX" id="giJ-Pz-tiA"/>
|
||||
<constraint firstItem="uNi-em-AIf" firstAttribute="width" secondItem="gaA-9f-Wc0" secondAttribute="width" id="ld8-bN-MN6"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="26.5" y="52.5"/>
|
||||
</view>
|
||||
<customObject id="Acj-Gn-8ir"/>
|
||||
</objects>
|
||||
</document>
|
||||
|
After Width: | Height: | Size: 767 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 309 B |
|
After Width: | Height: | Size: 593 B |
|
After Width: | Height: | Size: 868 B |
|
After Width: | Height: | Size: 351 B |
|
After Width: | Height: | Size: 629 B |
|
After Width: | Height: | Size: 884 B |
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "مرحبًا";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "تسجيل الدخول عبر البريد الإلكتروني";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "إدخال عنوان بريدك الإلكتروني";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "إنّ عنوان البريد الإلكتروني هذا غير صحيح.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "لا يتيح هذا التطبيق استخدام هذا النوع من الحساب";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "لديك حساب حاليًا";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "سبق أن استخدمت %@. يُرجى تسجيل الدخول باسم %@ للمتابعة.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "تسجيل الدخول";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "إدخال كلمة المرور";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "لا يمكن أن يكون حقل كلمة المرور فارغًا.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "إنّ البريد الإلكتروني وكلمة المرور اللذين أدخلتهما ليسا متطابقين.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "لا يتطابق عنوان البريد الإلكتروني هذا مع حساب حالي.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "إنّ عنوان البريد الإلكتروني هذا تابع لحساب سبق أن تم إيقافه.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "لقد أدخلت كلمة مرور غير صحيحة لمرات كثيرة جدًا. يُرجى المحاولة مجددًا بعد بضع دقائق.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "تعذّر الحصول على مزوّد %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "لا تتطابق رسالتا البريد الإلكتروني";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "استرداد كلمة المرور";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "تم إرسال تعليمات إلى البريد الإلكتروني هذا تشرح كيفية إعادة تعيين كلمة المرور.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "إثبات ملكية بريدك الإلكتروني";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "اتبع التعليمات التي تم إرسالها إلى %@ لاسترداد كلمة المرور.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "إنشاء حساب";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "الاسم الأول واسم العائلة";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "اختيار كلمة المرور";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "بنود الخدمة";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "سياسة الخصوصية";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "تشير المتابعة إلى موافقتك على %@ و%@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "يستخدم حساب آخر عنوان البريد الإلكتروني.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "تتضمن كلمات المرور القوية 6 أرقام على الأقل ومزيجًا من الأحرف والأرقام.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "ثمة عدد كبير جدًا من الطلبات الواردة من عنوان IP التابع لك. يُرجى المحاولة مجددًا بعد بضع دقائق.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "لقد سبق أن استخدمت %@ لتسجيل الدخول. يُرجى إدخال كلمة المرور لهذا الحساب.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "موافق";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "إلغاء";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "رجوع";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "التالي";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "حفظ";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "إرسال";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "إعادة إرسال الرسالة";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "البريد الإلكتروني";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "كلمة المرور";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "الاسم";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "خطأ";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "إغلاق";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "الملف الشخصي";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "الأمان";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "الحسابات المرتبطة";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "الاسم";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "البريد الإلكتروني";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "إضافة كلمة مرور";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "تغيير كلمة المرور";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "تسجيل الخروج";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "حذف الحساب";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "هل نسيت كلمة المرور؟";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "تأكيد ملكية الحساب";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "هل تريد حذف الحساب؟";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "سيؤدي هذا الإجراء إلى حذف كل البيانات المقترنة بحسابك ولا يمكن التراجع عنه. يجب تسجيل الدخول مجددًا لإكمال هذا الإجراء";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "سيؤدي هذا الإجراء إلى حذف كل البيانات المقترنة بحسابك ولا يمكن التراجع عنه. هل تريد بالتأكيد حذف حسابك؟";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "حذف";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "حذف الحساب";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "لا يمكن التراجع عن هذا الإجراء";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "إلغاء الربط";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "حساب مرتبط";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "هل تريد إلغاء ربط الحساب؟";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "لن تتمكن بعد الآن من تسجيل الدخول باستخدام حسابك";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "إلغاء ربط الحساب";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "لتغيير عنوان البريد الإلكتروني المقترن بحسابك، سيلزمك تسجيل الدخول مرة أخرى.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "لتغيير كلمة المرور، يجب أولاً إدخال كلمة المرور الحالية.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "تعديل الرسالة";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "تعديل الاسم";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "لإضافة كلمة مرور إلى حسابك، يجب تسجيل الدخول من جديد.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "لتغيير كلمة المرور في حسابك، يجب تسجيل الدخول من جديد.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "لتغيير كلمة المرور، يجب أولاً إدخال كلمة المرور الحالية.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "إضافة كلمة مرور";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "تغيير كلمة المرور";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "البريد الإلكتروني";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "تسجيل الدخول عبر %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "إدخال اسمك";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "إدخال عنوان بريدك الإلكتروني";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "إدخال كلمة المرور";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "كلمة المرور الجديدة";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "اختيار كلمة المرور";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "هل تواجه مشكلة في تسجيل الدخول؟";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "تأكيد عنوان البريد الإلكتروني";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "تمّ تسجيل الدخول.";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "هل تواجه مشكلة في استلام الرسائل الإلكترونية؟";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "يمكنك تجربة الحلول الشائعة التالية: \n - التأكّد ممّا إذا تمّ وضع علامة على الرسالة الإلكترونية بأنها \"غير مرغوب فيها\" أو نقلها تلقائيًا إلى مجلّد آخر\n - التحقّق من اتصال الإنترنت\n - التأكّد من كتابة عنوان البريد الإلكتروني بالشكل الصحيح\n - التأكّد من توفّر مساحة فارغة في البريد الوارد أو من عدم حدوث أي مشاكل أخرى في إعدادات البريد الوارد\n إذا لم تنجح الخطوات أعلاه، يمكنك إعادة إرسال الرسالة الإلكترونية. ستؤدي هذه الخطوة إلى إلغاء الرابط المضمّن في الرسالة السابقة.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "تمّ إرسال رسالة إلكترونية لتسجيل الدخول تتضمّن تعليمات إضافية إلى %@. يُرجى التحقق من بريدك الإلكتروني لإكمال عملية تسجيل الدخول.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "تمّ إرسال رسالة إلكترونية لتسجيل الدخول";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Добре дошли";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Вход с имейл";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Въвеждане на имейл адреса ви";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "Този имейл адрес е неправилен.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "Този тип профил не се поддържа от това приложение";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Вече имате профил";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Вече използвахте %@. За да продължите, влезте с %@.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Вход";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Въведете паролата си";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "Трябва да въведете парола.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "Имейл адресът и паролата, които въведохте, не си съответстват.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "Този имейл адрес не съответства на съществуващ профил.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "Този имейл адрес е за профил, който е деактивиран.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Въведохте неправилна парола твърде много пъти. Опитайте отново след няколко минути.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "Не може да се намери доставчик за %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Имейл адресите не съвпадат";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Възстановяване на паролата";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "На този имейл адрес ще получите инструкции за повторно задаване на паролата.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Проверете електронната си поща";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "За да възстановите паролата си, изпълнете инструкциите, изпратени до %@.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Създаване на профил";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Име и фамилия";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Изберете парола";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Общите условия";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Декларация за поверителност";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Продължавайки, приемате нашите %@ и %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Имейл адресът вече се използва от друг профил.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Надеждните пароли съдържат поне 6 знака и комбинация от букви и цифри.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "От IP адреса ви се изпращат твърде много заявки за профил. Опитайте отново след няколко минути.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Вече използвахте %@ за вход. Въведете паролата си за този профил.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "ОК";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Отказ";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Назад";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Напред";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Запазване";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Изпращане";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Повторно изпращане";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Имейл";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Парола";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Име";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Грешка";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Затваряне";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Потребителски профил";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Сигурност";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Свързани профили";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Име";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Имейл";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Добавяне на парола";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Промяна на паролата";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Изход";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Изтриване на профила";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "Забравили сте паролата си?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Потвърждаване на самоличността ви";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "Да се изтрие ли профилът?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Това действие ще изтрие всички свързани с профила ви данни и не може да се отмени. За да го завършите, ще трябва отново да влезете в профила";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Това действие ще изтрие всички свързани с профила ви данни и не може да се отмени. Наистина ли искате да изтриете профила?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Изтриване";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Изтриване на профила";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Това действие не може да се отмени";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Прекратяване на връзката";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Свързан профил";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "Да се прекрати ли връзката с профила?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Вече няма да можете да влизате с профила си";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Прекратяване на връзката с профила";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "За да промените имейл адреса, свързан с профила ви, ще трябва да влезете отново.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "За да промените паролата си, първо трябва да въведете текущата.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Редактиране на имейла";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Редактиране на името";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "За да добавите парола към профила си, ще трябва да влезете отново.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "За да промените паролата за профила си, ще трябва да влезете отново.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "За да промените паролата си, първо трябва да въведете текущата.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Добавяне на парола";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Промяна на паролата";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Имейл";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Вход с %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Въведете името си";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Въведете имейла си";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Въведете паролата си";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Нова парола";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Изберете парола";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "Имате проблем при влизането?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Потвърждаване на имейл адреса";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Влязохте в профила!";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "Имате проблеми с получаването на имейла?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Изпробвайте следните често използвани решения: \n – Проверете дали имейлът не е обозначен и филтриран като спам.\n – Проверете връзката си с интернет.\n – Проверете дали имейлът е изписан правилно.\n – Проверете дали в пощенската ви кутия има достатъчно пространство, или не е налице друг проблем с настройките й.\n Ако стъпките по-горе не разрешат проблема, можете отново да изпратите имейла. Имайте предвид, че това ще деактивира връзката в предходното съобщение.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Изпратихме имейл до %@ за вход в профила с допълнителни инструкции. Проверете входящата си поща, за да завършите процеса.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Изпратен е имейл за вход в профила";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "স্বাগতম";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "ইমেল দিয়ে সাইন-ইন করুন";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "আপনার ইমেল লিখুন";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "ইমেল অ্যাড্রেসটি সঠিক নয়।";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "এই ধরনের অ্যাকাউন্ট এই অ্যাপে ব্যবহার করা যায় না";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "আপনার আগে থেকেই একটি অ্যাকাউন্ট আছে";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "আপনি আগেই %@ ব্যবহার করেছেন। চালিয়ে যেতে %@ দিয়ে সাইন-ইন করুন।";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "সাইন-ইন করুন";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "আপনার পাসওয়ার্ডটি লিখুন";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "পাসওয়ার্ডটি খালি রাখা যাবে না।";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "আপনার দেওয়া ইমেল এবং পাসওয়ার্ডটি মিলছে না।";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "আগে থেকে থাকা অ্যাকাউন্টের সাথে ইমেল অ্যাড্রেসটি মিলছে না।";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "এই ইমেল অ্যাড্রেসটি এমন একটি অ্যাকাউন্টের জন্য যেটি অক্ষম করা হয়েছে।";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "আপনি অনেকবার ভুল পাসওয়ার্ড লিখেছেন। কিছুক্ষণের মধ্যে আবার চেষ্টা করুন।";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "%@ এর জন্য প্রদানকারী পাওয়া যাচ্ছে না।";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "ইমেলটি মেল হচ্ছে না";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "পাসওয়ার্ড পুনরুদ্ধার করুন";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "কীভাবে পাসওয়ার্ড রিসেট করবেন তা জানতে এই ইমেলে নির্দেশাবলী পাঠান।";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "আপনার ইমেল দেখুন";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "আপনার পাসওয়ার্ড পুনরুদ্ধার করতে %@ তে পাঠানো নির্দেশ অনুসরণ করুন।";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "অ্যাকাউন্ট তৈরি করুন";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "নাম ও পদবি";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "পাসওয়ার্ড বেছে নিন";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "পরিষেবার শর্তাবলি";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "গোপনীয়তা নীতি";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "চালিয়ে যাওয়ার অর্থ, আপনি আমাদের %@ এবং %@-এর সাথে সম্মত।";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "এই ইমেল অ্যাড্রেসটি আগে থেকেই অন্য অ্যাকাউন্টে ব্যবহার করা হচ্ছে।";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "সুরক্ষিত পাসওয়ার্ডে কমপক্ষে ৬টি বিশেষ বর্ণ এবং অক্ষর ও সংখ্যা মিশিয়ে থাকবে।";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "আপনার IP অ্যাড্রেস থেকে অনেকগুলি অ্যাকাউন্টের অনুরোধ আসছে। কিছুক্ষণের মধ্যে আবার চেষ্টা করুন।";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "সাইন-ইন করতে আপনি %@ আগেই ব্যবহার করেছেন। সেই অ্যাকাউন্টের জন্য আপনার পাসওয়ার্ড লিখুন।";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "ঠিক আছে";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "বাতিল করুন";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "ফিরে যান";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "পরবর্তী";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "সেভ করুন";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "পাঠান";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "আবার পাঠান";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "ইমেল";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "পাসওয়ার্ড";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "নাম";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "ত্রুটি";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "বন্ধ করুন";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "প্রোফাইল";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "নিরাপত্তা";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "লিঙ্ক করা অ্যাকাউন্ট";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "নাম";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "ইমেল";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "পাসওয়ার্ড যোগ করুন";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "পাসওয়ার্ড পরিবর্তন করুন";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "সাইন-আউট করুন";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "অ্যাকাউন্টটি মুছুন";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "পাসওয়ার্ড ভুলে গেছেন?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "আপনার পরিচয় যাচাই করুন";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "অ্যাকাউন্ট মুছবেন?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "আপনার অ্যাকাউন্টের সাথে যুক্ত সমস্ত ডেটা মুছে ফেলা হবে, এবং পূর্বাবস্থায় ফেরানো যাবে না। এই কাজটি সম্পূর্ণ করতে আপনাকে আবার সাইন-ইন করতে হবে";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "আপনার অ্যাকাউন্টের সাথে যুক্ত সমস্ত ডেটা মুছে ফেলা হবে, এবং পূর্বাবস্থায় ফেরানো যাবে না। আপনি কি অ্যাকাউন্টটি মুছে ফেলার বিষয়ে নিশ্চিত?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "মুছুন";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "অ্যাকাউন্টটি মুছুন";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "এই কাজটি পূর্বাবস্থায় ফেরানো যাবে না";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "লিঙ্কমুক্ত করুন";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "লিঙ্ক করা অ্যাকাউন্ট";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "অ্যাকাউন্ট লিঙ্কমুক্ত করবেন?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "আপনি আর এই অ্যাকাউন্টটি ব্যবহার করে সাইন-ইন করতে পারবেন না";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "অ্যাকাউন্ট লিঙ্কমুক্ত করুন";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "আপনার অ্যাকাউন্টের সাথে যুক্ত ইমেল অ্যাড্রেসটি পরিবর্তন করতে আপনাকে আবার সাইন-ইন করতে হবে।";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "পাসওয়ার্ড পরিবর্তন করার জন্য আগে আপনাকে বর্তমান পাসওয়ার্ডটি লিখতে হবে।";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "ইমেলটি সম্পাদনা করুন";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "নাম সম্পাদনা করুন";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "আপনার অ্যাকাউন্টে পাসওয়ার্ড যোগ করতে আপনাকে আবার সাইন-ইন করতে হবে।";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "আপনার অ্যাকাউন্টের পাসওয়ার্ড পরিবর্তন করতে আপনাকে আবার সাইন-ইন করতে হবে।";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "পাসওয়ার্ড পরিবর্তন করার জন্য আগে আপনাকে বর্তমান পাসওয়ার্ডটি লিখতে হবে।";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "পাসওয়ার্ড যোগ করুন";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "পাসওয়ার্ড পরিবর্তন করুন";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "ইমেল";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "%@ দিয়ে সাইন-ইন করুন";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "আপনার নাম লিখুন";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "আপনার ইমেল লিখুন";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "আপনার পাসওয়ার্ডটি লিখুন";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "নতুন পাসওয়ার্ড";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "পাসওয়ার্ড বেছে নিন";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "সাইন-ইন করতে সমস্যা হচ্ছে?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "ইমেল আইডি কনফার্ম করুন";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "সাইন-ইন করা হয়েছে!";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "ইমেল পেতে সমস্যা হচ্ছে?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "এই সাধারণ সমাধানগুলি ব্যবহার করে দেখুন: \n - ইমেলটি স্প্যাম অথবা ফিল্টার হিসেবে চিহ্নিত করা হয়েছে কিনা তা দেখুন।\n - ইন্টারনেট কানেকশন পরীক্ষা করে দেখুন।\n - ইমেলের সঠিক বানান লিখেছেন কিনা তা দেখুন।\n - আপনার ইনবক্সের স্পেস শেষ হয়ে গেছে কিনা বা ইনবক্সের সেটিংস সংক্রান্ত অন্যান্য সমস্যাগুলি একবার দেখে নিন।\n উপরের পদক্ষেপগুলি যদি কাজ না করে তাহলে আপনি ইমেলটি আবার পাঠাতে পারেন। মনে রাখবেন এটি করলে পুরনো ইমেলের লিঙ্কটি আর কাজ করবে না।";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "অতিরিক্ত নির্দেশাবলী সহ সাইন-ইন করার একটি ইমেল %@-এ পাঠানো হয়েছে। সাইন-ইন করার জন্য আপনার ইমেল দেখুন।";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "সাইন-ইন করার ইমেল পাঠানো হয়েছে";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Et donem la benvinguda";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Inicia la sessió amb l'adreça electrònica";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Introdueix la teva adreça electrònica";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "Aquesta adreça electrònica no és correcta.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "Aquest tipus de compte no és compatible amb l'aplicació";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Ja tens un compte";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Ja has utilitzat l'adreça electrònica %@. Inicia la sessió amb %@ per continuar.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Inicia la sessió";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Introdueix la teva contrasenya";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "Cal introduir una contrasenya.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "L'adreça electrònica i la contrasenya que has introduït no coincideixen.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "Aquesta adreça electrònica no coincideix amb cap compte.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "Aquesta adreça electrònica pertany a un compte que s'ha desactivat.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Has introduït una contrasenya incorrecta massa vegades. Torna-ho a provar d'aquí a uns quants minuts.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "No es pot trobar un proveïdor per a %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Les adreces electròniques no coincideixen";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recupera la contrasenya";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Rep un correu electrònic amb instruccions per restablir la contrasenya.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Comprova el correu electrònic";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Per recuperar la contrasenya, segueix les instruccions que s'han enviat a %@.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Crea un compte";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Nom i cognoms";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Tria una contrasenya";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Condicions del servei";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Política de privadesa";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "En continuar, acceptes les nostres %@ i la nostra %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Ja hi ha un altre compte que utilitza aquesta adreça electrònica.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Perquè una contrasenya sigui segura, ha de tenir com a mínim 6 caràcters i combinar lletres i números.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Aquesta adreça IP està enviant massa sol·licituds per crear comptes. Torna-ho a provar d'aquí a uns quants minuts.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Ja has utilitzat l'adreça electrònica %@ per iniciar la sessió. Introdueix la contrasenya d'aquest compte.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "D'acord";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancel·la";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Enrere";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Següent";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Desa";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Envia";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Torna a enviar";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Adreça electrònica";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Contrasenya";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Nom";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Tanca";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Perfil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Seguretat";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Comptes enllaçats";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Nom";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Adreça electrònica";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Afegeix una contrasenya";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Canvia la contrasenya";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Tanca la sessió";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Suprimeix el compte";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "Has oblidat la contrasenya?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verifica la teva identitat";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "Vols suprimir el compte?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Aquesta acció esborrarà totes les dades associades a aquest compte i no es pot desfer. Per completar-la, has de tornar a iniciar la sessió.";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Aquesta acció esborrarà totes les dades associades a aquest compte i no es pot desfer. Confirmes que vols suprimir el compte?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Suprimeix";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Suprimeix el compte";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Aquesta acció no es pot desfer";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Desenllaça";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Compte enllaçat";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "Vols desenllaçar el compte?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Ja no podràs iniciar la sessió amb el teu compte";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Desenllaça el compte";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Per canviar l'adreça electrònica associada al teu compte, has de tornar a iniciar la sessió.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Per canviar la contrasenya, primer has d'introduir la teva contrasenya actual.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Edita l'adreça electrònica";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Edita el nom";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Per afegir una contrasenya al teu compte, has de tornar a iniciar la sessió.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Per canviar la contrasenya del teu compte, has de tornar a iniciar la sessió.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Per canviar la contrasenya, primer has d'introduir la teva contrasenya actual.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Afegeix una contrasenya";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Canvia la contrasenya";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Adreça electrònica";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Inicia la sessió amb %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Introdueix el teu nom";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Introdueix la teva adreça electrònica";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Introdueix la teva contrasenya";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Contrasenya nova";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Tria una contrasenya";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "No pots iniciar la sessió?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirma l'adreça electrònica";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "S'ha iniciat la sessió";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "Tens problemes per rebre correus electrònics?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Prova aquestes solucions habituals: \n - Comprova si el correu electrònic s'ha marcat com a correu brossa o s'ha filtrat.\n - Comprova la connexió a Internet.\n - Comprova que hagis escrit correctament la teva adreça electrònica.\n - Comprova que tinguis espai a la safata d'entrada i altres problemes relacionats amb la configuració de la safata d'entrada.\n - Si els passos anteriors no t'han servit d'ajuda, pots tornar a enviar el correu electrònic. Tingues en compte que l'enllaç del correu anterior es desactivarà.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "S'ha enviat un correu electrònic d'inici de sessió amb més instruccions a %@. Comprova si l'has rebut per completar l'inici de sessió.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "S'ha enviat el correu electrònic d'inici de sessió";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Vítáme vás";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Přihlásit se pomocí e-mailu";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Zadejte e-mail";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "E-mailová adresa není správná.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "Tento typ účtu aplikace nepodporuje.";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Již máte účet.";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Již jste použili službu %@. Chcete-li pokračovat, přihlaste se prostřednictvím služby %@.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Přihlásit se";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Zadejte své heslo";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "Pole hesla nesmí být prázdné.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "Zadaný e-mail a heslo se neshodují.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "E-mailová adresa neodpovídá žádnému stávajícímu účtu.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "E-mailová adresa patří k účtu, který byl zablokován.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Provedli jste příliš mnoho neplatných pokusů o zadání hesla. Opakujte akci za chvíli.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "Nepodařilo se nalézt poskytovatele pro službu %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "E-mailové adresy se neshodují";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Obnovit heslo";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Na tento e-mail vám zašleme pokyny, jak heslo obnovit.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Zkontrolujte svůj e-mail";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Postupujte podle pokynů odeslaných na adresu %@ a obnovte heslo.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Vytvořit účet";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Jméno a příjmení";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Heslo";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Smluvní podmínky";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Zásady ochrany soukromí";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Pokračováním vyjadřujete svůj souhlas s těmito dokumenty: %@ a %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Tuto e-mailovou adresu již využívá jiný účet.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Silné heslo má alespoň šest znaků a skládá se z kombinace písmen a číslic.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Z vaší adresy IP přichází příliš mnoho požadavků na účet. Zkuste to znovu za několik minut.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "K přihlášení jste již použili adresu %@. Zadejte příslušné heslo k účtu.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "V pořádku";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Zrušit";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Zpět";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Další";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Uložit";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Odeslat";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Odeslat znovu";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "E-mail";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Heslo";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Jméno";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Chyba";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Zavřít";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Profil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Zabezpečení";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Propojené účty";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Jméno";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "E-mail";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Přidat heslo";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Změnit heslo";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Odhlásit se";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Smazat účet";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "Zapomněli jste heslo?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Ověřte svou identitu";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "Smazat účet?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Dojde k odstranění všech údajů souvisejících s vaším účtem. Tuto akci nebude možné vrátit zpět. Pokud ji chcete skutečně provést, musíte se znovu přihlásit.";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Dojde k odstranění všech údajů souvisejících s vaším účtem. Tuto akci nebude možné vrátit zpět. Opravdu chcete účet smazat?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Smazat";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Smazat účet";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Tuto akci nelze vrátit zpět.";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Odpojit";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Propojený účet";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "Odpojit účet?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Prostřednictvím tohoto účtu už se nebudete moci přihlásit.";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Odpojit účet";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Chcete-li změnit e-mailovou adresu přidruženou k vašemu účtu, musíte se znovu přihlásit.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Chcete-li změnit heslo, musíte nejprve zadat aktuální heslo.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Změnit e-mail";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Změnit jméno";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Chcete-li do účtu přidat heslo, musíte se znovu přihlásit.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Chcete-li změnit heslo k účtu, musíte se znovu přihlásit.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Chcete-li změnit heslo, musíte nejprve zadat aktuální heslo.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Přidat heslo";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Změnit heslo";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "E-mail";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Přihlásit se přes %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Zadejte své jméno";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Zadejte e-mail";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Zadejte své heslo";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Nové heslo";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Zvolte heslo.";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "Máte potíže s přihlášením?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Potvrzení·e-mailu";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Jste přihlášeni!";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "Nepřišly vám e-maily?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Vyzkoušejte tato běžná řešení: \n – Zkontrolujte, jestli e-mail nebyl označen jako spam nebo nebyl odstraněn jiným filtrem.\n – Zkontrolujte připojení k internetu.\n – Zkontrolujte, zda jste adresu e-mailu napsali správně.\n – Zkontrolujte, jestli nemáte plnou schránku příchozích správ nebo nedošlo k nějakému jiného problému se schránkou.\n Pokud žádné z uvedených řešení nepomohlo, můžete si e-mail nechat zaslat znovu. Odkaz v prvním e-mailu pak bude deaktivován.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Na adresu %@ byl odeslán přihlašovací e-mail s dalšími pokyny. Dokončete přihlášení podle instrukcí v e-mailu.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Přihlašovací e-mail odeslán";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Velkommen";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Log ind med mail";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Angiv din mail";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "Mailadressen er ikke korrekt.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "Denne type konto understøttes ikke af denne app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Du har allerede en konto";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Du har allerede brugt %@. Log ind med %@ for at fortsætte.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Log ind";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Angiv din adgangskode";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "Adgangskode skal angives.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "Den mail og adgangskode, du angav, stemmer ikke overens.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "Mailadressen stemmer ikke overens med en eksisterende konto.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "Mailadressen er for en konto, der er blevet deaktiveret.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Du har indtastet en forkert adgangskode for mange gange. Prøv igen om et par minutter.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "Kan ikke finde udbyder til %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Mailadresserne stemmer ikke overens";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Gendan adgangskode";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Få en vejledning sendt til denne mail om, hvordan du nulstiller din adgangskode.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Tjek din mail";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Følg vejledningen, der blev sendt til %@, for at gendanne din adgangskode.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Opret konto";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "For- og efternavn";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Vælg adgangskode";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Servicevilkår";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Privatlivspolitik";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Ved at fortsætte indikerer du, at du accepterer vores %@ og %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Mailadressen bruges allerede af en anden konto.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Stærke adgangskoder har mindst 6 tegn og en blanding af bogstaver og tal.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Der kommer for mange kontoanmodninger fra din IP-adresse. Prøv igen om et par minutter.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Du har allerede brugt %@ til at logge ind. Angiv din adgangskode for den pågældende konto.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "OK";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Annuller";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Tilbage";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Næste";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Gem";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Send";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Send igen";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Mail";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Adgangskode";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Navn";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Fejl";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Luk";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Profil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Sikkerhed";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Tilknyttede konti";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Navn";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Mail";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Tilføj adgangskode";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Skift adgangskode";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Log ud";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Slet konto";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "Har du glemt adgangskoden?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Bekræft, at det er dig";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "Skal kontoen slettes?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Dette vil slette alle data, der er knyttet til din konto, og kan ikke fortrydes. Du skal logge ind igen for at fuldføre denne handling";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Dette vil slette alle data, der er knyttet til din konto, og kan ikke fortrydes. Er du sikker på, at du vil slette din konto?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Slet";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Slet konto";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Denne handling kan ikke fortrydes";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Fjern tilknytning";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Tilknyttet konto";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "Fjern tilknytning til konto?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Du kan ikke længere logge ind ved hjælp af din konto";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Fjern tilknytning til konto";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "For at ændre den mailadresse, der er knyttet til din konto, skal du logge ind igen.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "For at ændre din adgangskode skal du først angive din nuværende adgangskode.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Rediger mail";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Rediger navn";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "For at føje en adgangskode til din konto skal du logge ind igen.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "For at ændre adgangskoden for din konto skal du logge ind igen.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "For at ændre din adgangskode skal du først angive din nuværende adgangskode.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Tilføj adgangskode";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Skift adgangskode";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Mail";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Log ind med %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Angiv dit navn";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Angiv din mail";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Angiv din adgangskode";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Ny adgangskode";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Vælg adgangskode";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "Har du problemer med at logge ind?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Bekræft mailadresse";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Du er logget ind";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "Har du problemer med at modtage mails?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Prøv disse almindelige løsninger: \n - Tjek, om mailen er blevet markeret som spam eller filtreret fra.\n - Tjek din internetforbindelse.\n - Sørg for, at du ikke har stavet din mailadresse forkert.\n - Sørg for, at din indbakke ikke er løbet tør for plads, og at du ikke har andre problemer med indbakken.\n Hvis ovenstående vejledning ikke løste problemet, kan du sende mailen igen. Bemærk, at dette vil deaktivere linket i den gamle mail.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Der er blevet sendt en loginmail med yderligere vejledning til %@. Tjek din mail for at fuldføre loginprocessen.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Loginmailen blev sendt";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Willkommen";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Mit E-Mail-Adresse anmelden";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "E-Mail-Adresse eingeben";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "Diese E-Mail-Adresse ist nicht korrekt.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "Diese Art von Konto wird von dieser App nicht unterstützt";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Sie haben bereits ein Konto";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Sie haben %@ bereits verwendet. Melden Sie sich mit %@ an, um fortzufahren.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Anmelden";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Passwort eingeben";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "Passwort darf nicht leer sein.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "Die E-Mail-Adresse und das Passwort passen nicht zusammen.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "Diese E-Mail-Adresse passt zu keinem vorhandenen Konto.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "Diese E-Mail-Adresse gehört zu einem Konto, das deaktiviert wurde.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Sie haben zu oft ein falsches Passwort eingegeben. Versuchen Sie es in einigen Minuten erneut.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "Anbieter für %@ wurde nicht gefunden.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "E-Mail-Adressen stimmen nicht überein";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Passwort wiederherstellen";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "In der an diese E-Mail-Adresse gesendeten Anleitung wird beschrieben, wie Sie Ihr Passwort zurücksetzen können.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Im Posteingang nachsehen";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Folgen Sie der an %@ gesendeten Anleitung, um Ihr Passwort zurückzusetzen.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Konto erstellen";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Vor- und Nachname";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Passwort auswählen";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Nutzungsbedingungen";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Datenschutzerklärung";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Wenn Sie fortfahren, stimmen Sie unseren %@ und unserer %@ zu.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Die E-Mail-Adresse wird bereits von einem anderen Konto verwendet.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Starke Passwörter umfassen mindestens sechs Zeichen und eine Mischung aus Buchstaben und Ziffern.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Von Ihrer IP-Adresse werden zu viele Kontoanfragen gesendet. Versuchen Sie es in einigen Minuten erneut.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Sie haben bereits %@ zur Anmeldung verwendet. Geben Sie das Passwort für dieses Konto ein.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "OK";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Abbrechen";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Zurück";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Weiter";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Speichern";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Senden";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Erneut senden";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "E-Mail-Adresse";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Passwort";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Name";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Fehler";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Schließen";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Profil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Sicherheit";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Verknüpfte Konten";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Name";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "E-Mail-Adresse";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Passwort hinzufügen";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Passwort ändern";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Abmelden";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Konto löschen";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "Passwort vergessen?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Identität bestätigen";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "Konto löschen?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Hierdurch werden alle mit Ihrem Konto verknüpften Daten gelöscht. Dies kann nicht rückgängig gemacht werden. Sie müssen sich erneut anmelden, um diese Aktion abzuschließen.";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Hierdurch werden alle mit Ihrem Konto verknüpften Daten gelöscht. Dies kann nicht rückgängig gemacht werden. Möchten Sie Ihr Konto wirklich löschen?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Löschen";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Konto löschen";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Diese Aktion kann nicht rückgängig gemacht werden";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Verknüpfung aufheben";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Verknüpftes Konto";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "Verknüpfung des Kontos aufheben?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Sie können sich nicht mehr mit Ihrem Konto anmelden";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Verknüpfung des Kontos aufheben";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Wenn Sie die mit Ihrem Konto verknüpfte E-Mail-Adresse ändern möchten, müssen Sie sich erneut anmelden.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Um das Passwort zu ändern, müssen Sie zuerst Ihr aktuelles Passwort eingeben.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "E-Mail-Adresse bearbeiten";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Name bearbeiten";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Um Ihrem Konto ein Passwort hinzuzufügen, müssen Sie sich erneut anmelden.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Um das Passwort für Ihr Konto zu ändern, müssen Sie sich erneut anmelden.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Um das Passwort zu ändern, müssen Sie zuerst Ihr aktuelles Passwort eingeben.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Passwort hinzufügen";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Passwort ändern";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "E-Mail-Adresse";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Mit %@ anmelden";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Name eingeben";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "E-Mail-Adresse eingeben";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Passwort eingeben";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Neues Passwort";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Passwort auswählen";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "Probleme bei der Anmeldung?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "E-Mail-Adresse bestätigen";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Angemeldet.";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "Probleme beim Empfangen von E-Mails?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Versuchen Sie Folgendes: \n – Überprüfen Sie, ob die E-Mail als Spam markiert oder herausgefiltert wurde.\n – Überprüfen Sie Ihre Internetverbindung.\n – Überprüfen Sie die Schreibweise Ihrer E-Mail-Adresse.\n – Überprüfen Sie den Speicherplatz und weitere Einstellungen Ihres Posteingangs, die Probleme bereiten könnten.\n Sollte das Problem nach Ausführung der obigen Schritte weiterhin bestehen, können Sie sich die Anmelde-E-Mail noch einmal zusenden lassen. Hinweis: Der Link in der vorhergehenden E-Mail ist dann nicht mehr gültig.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Wir haben eine Anmelde-E-Mail mit zusätzlichen Informationen an %@ gesendet. Bitte öffnen Sie die E-Mail, um die Anmeldung abzuschließen.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Anmelde-E-Mail gesendet";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Willkommen";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Mit E-Mail-Adresse anmelden";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "E-Mail-Adresse eingeben";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "Diese E-Mail-Adresse ist nicht korrekt.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "Diese Art von Konto wird von dieser App nicht unterstützt";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Sie haben bereits ein Konto";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Sie haben %@ bereits verwendet. Melden Sie sich mit %@ an, um fortzufahren.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Anmelden";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Passwort eingeben";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "Passwort darf nicht leer sein.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "Die E-Mail-Adresse und das Passwort passen nicht zusammen.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "Diese E-Mail-Adresse passt zu keinem vorhandenen Konto.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "Diese E-Mail-Adresse gehört zu einem Konto, das deaktiviert wurde.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Sie haben zu oft ein falsches Passwort eingegeben. Versuchen Sie es in einigen Minuten erneut.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "Anbieter für %@ wurde nicht gefunden.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "E-Mail-Adressen stimmen nicht überein";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Passwort wiederherstellen";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "In der an diese E-Mail-Adresse gesendeten Anleitung wird beschrieben, wie Sie Ihr Passwort zurücksetzen können.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Im Posteingang nachsehen";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Folgen Sie der an %@ gesendeten Anleitung, um Ihr Passwort zurückzusetzen.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Konto erstellen";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Vor- und Nachname";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Passwort auswählen";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Nutzungsbedingungen";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Datenschutzerklärung";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Wenn Sie fortfahren, stimmen Sie unseren %@ und unserer %@ zu.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Die E-Mail-Adresse wird bereits von einem anderen Konto verwendet.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Starke Passwörter umfassen mindestens sechs Zeichen und eine Mischung aus Buchstaben und Ziffern.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Von Ihrer IP-Adresse werden zu viele Kontoanfragen gesendet. Versuchen Sie es in einigen Minuten erneut.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Sie haben bereits %@ zur Anmeldung verwendet. Geben Sie das Passwort für dieses Konto ein.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "OK";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Abbrechen";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Zurück";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Weiter";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Speichern";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Senden";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Erneut senden";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "E-Mail-Adresse";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Passwort";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Name";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Fehler";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Schliessen";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Profil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Sicherheit";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Verknüpfte Konten";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Name";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "E-Mail-Adresse";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Passwort hinzufügen";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Passwort ändern";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Abmelden";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Konto löschen";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "Passwort vergessen?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Identität bestätigen";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "Konto löschen?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Hierdurch werden alle mit Ihrem Konto verknüpften Daten gelöscht. Dies kann nicht rückgängig gemacht werden. Sie müssen sich erneut anmelden, um diese Aktion abzuschliessen.";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Hierdurch werden alle mit Ihrem Konto verknüpften Daten gelöscht. Dies kann nicht rückgängig gemacht werden. Möchten Sie Ihr Konto wirklich löschen?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Löschen";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Konto löschen";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Diese Aktion kann nicht rückgängig gemacht werden";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Verknüpfung aufheben";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Verknüpftes Konto";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "Verknüpfung des Kontos aufheben?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Sie können sich nicht mehr mit Ihrem Konto anmelden";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Verknüpfung des Kontos aufheben";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Wenn Sie die mit Ihrem Konto verknüpfte E-Mail-Adresse ändern möchten, müssen Sie sich erneut anmelden.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Um das Passwort zu ändern, müssen Sie zuerst Ihr aktuelles Passwort eingeben.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "E-Mail-Adresse bearbeiten";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Name bearbeiten";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Um Ihrem Konto ein Passwort hinzuzufügen, müssen Sie sich erneut anmelden.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Um das Passwort für Ihr Konto zu ändern, müssen Sie sich erneut anmelden.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Um das Passwort zu ändern, müssen Sie zuerst Ihr aktuelles Passwort eingeben.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Passwort hinzufügen";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Passwort ändern";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "E-Mail-Adresse";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Mit %@ anmelden";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Name eingeben";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "E-Mail-Adresse eingeben";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Passwort eingeben";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Neues Passwort";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Passwort auswählen";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "Probleme bei der Anmeldung?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "E-Mail-Adresse bestätigen";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Angemeldet.";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "Probleme beim Empfangen von E-Mails?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Versuchen Sie Folgendes: \n – Überprüfen Sie, ob die E-Mail als Spam markiert oder herausgefiltert wurde.\n – Überprüfen Sie Ihre Internetverbindung.\n – Überprüfen Sie die Schreibweise Ihrer E-Mail-Adresse.\n – Überprüfen Sie den Speicherplatz und weitere Einstellungen Ihres Posteingangs, die Probleme bereiten könnten.\n Sollte das Problem nach Ausführung der obigen Schritte weiterhin bestehen, können Sie sich die Anmelde-E-Mail noch einmal zusenden lassen. Hinweis: Der Link in der vorhergehenden E-Mail ist dann nicht mehr gültig.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Wir haben eine Anmelde-E-Mail mit zusätzlichen Informationen an %@ gesendet. Bitte öffnen Sie die E-Mail, um die Anmeldung abzuschliessen.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Anmelde-E-Mail gesendet";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Willkommen";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Mit E-Mail-Adresse anmelden";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "E-Mail-Adresse eingeben";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "Diese E-Mail-Adresse ist nicht korrekt.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "Diese Art von Konto wird von dieser App nicht unterstützt";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Sie haben bereits ein Konto";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Sie haben %@ bereits verwendet. Melden Sie sich mit %@ an, um fortzufahren.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Anmelden";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Passwort eingeben";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "Passwort darf nicht leer sein.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "Die E-Mail-Adresse und das Passwort passen nicht zusammen.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "Diese E-Mail-Adresse passt zu keinem vorhandenen Konto.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "Diese E-Mail-Adresse gehört zu einem Konto, das deaktiviert wurde.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Sie haben zu oft ein falsches Passwort eingegeben. Versuchen Sie es in einigen Minuten erneut.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "Anbieter für %@ wurde nicht gefunden.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "E-Mail-Adressen stimmen nicht überein";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Passwort wiederherstellen";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "In der an diese E-Mail-Adresse gesendeten Anleitung wird beschrieben, wie Sie Ihr Passwort zurücksetzen können.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Im Posteingang nachsehen";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Folgen Sie der an %@ gesendeten Anleitung, um Ihr Passwort zurückzusetzen.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Konto erstellen";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Vor- und Nachname";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Passwort auswählen";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Nutzungsbedingungen";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Datenschutzerklärung";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Wenn Sie fortfahren, stimmen Sie unseren %@ und unserer %@ zu.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Die E-Mail-Adresse wird bereits von einem anderen Konto verwendet.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Starke Passwörter umfassen mindestens sechs Zeichen und eine Mischung aus Buchstaben und Ziffern.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Von Ihrer IP-Adresse werden zu viele Kontoanfragen gesendet. Versuchen Sie es in einigen Minuten erneut.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Sie haben bereits %@ zur Anmeldung verwendet. Geben Sie das Passwort für dieses Konto ein.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "OK";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Abbrechen";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Zurück";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Weiter";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Speichern";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Senden";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Erneut senden";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "E-Mail-Adresse";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Passwort";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Name";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Fehler";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Schließen";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Profil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Sicherheit";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Verknüpfte Konten";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Name";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "E-Mail-Adresse";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Passwort hinzufügen";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Passwort ändern";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Abmelden";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Konto löschen";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "Passwort vergessen?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Identität bestätigen";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "Konto löschen?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Hierdurch werden alle mit Ihrem Konto verknüpften Daten gelöscht. Dies kann nicht rückgängig gemacht werden. Sie müssen sich erneut anmelden, um diese Aktion abzuschließen.";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Hierdurch werden alle mit Ihrem Konto verknüpften Daten gelöscht. Dies kann nicht rückgängig gemacht werden. Möchten Sie Ihr Konto wirklich löschen?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Löschen";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Konto löschen";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Diese Aktion kann nicht rückgängig gemacht werden";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Verknüpfung aufheben";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Verknüpftes Konto";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "Verknüpfung des Kontos aufheben?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Sie können sich nicht mehr mit Ihrem Konto anmelden";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Verknüpfung des Kontos aufheben";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Wenn Sie die mit Ihrem Konto verknüpfte E-Mail-Adresse ändern möchten, müssen Sie sich erneut anmelden.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Um das Passwort zu ändern, müssen Sie zuerst Ihr aktuelles Passwort eingeben.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "E-Mail-Adresse bearbeiten";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Name bearbeiten";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Um Ihrem Konto ein Passwort hinzuzufügen, müssen Sie sich erneut anmelden.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Um das Passwort für Ihr Konto zu ändern, müssen Sie sich erneut anmelden.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Um das Passwort zu ändern, müssen Sie zuerst Ihr aktuelles Passwort eingeben.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Passwort hinzufügen";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Passwort ändern";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "E-Mail-Adresse";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Mit %@ anmelden";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Name eingeben";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "E-Mail-Adresse eingeben";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Passwort eingeben";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Neues Passwort";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Passwort auswählen";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "Probleme bei der Anmeldung?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "E-Mail-Adresse bestätigen";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Angemeldet.";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "Probleme beim Empfangen von E-Mails?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Versuchen Sie Folgendes: \n – Überprüfen Sie, ob die E-Mail als Spam markiert oder herausgefiltert wurde.\n – Überprüfen Sie Ihre Internetverbindung.\n – Überprüfen Sie die Schreibweise Ihrer E-Mail-Adresse.\n – Überprüfen Sie den Speicherplatz und weitere Einstellungen Ihres Posteingangs, die Probleme bereiten könnten.\n Sollte das Problem nach Ausführung der obigen Schritte weiterhin bestehen, können Sie sich die Anmelde-E-Mail noch einmal zusenden lassen. Hinweis: Der Link in der vorhergehenden E-Mail ist dann nicht mehr gültig.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Wir haben eine Anmelde-E-Mail mit zusätzlichen Informationen an %@ gesendet. Bitte öffnen Sie die E-Mail, um die Anmeldung abzuschließen.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Anmelde-E-Mail gesendet";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Καλώς ήρθατε";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Σύνδεση μέσω ηλεκτρονικού ταχυδρομείου";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Εισαγάγετε τη διεύθυνση ηλεκτρονικού ταχυδρομείου σας";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου δεν είναι σωστή.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "Αυτός ο τύπος λογαριασμού δεν υποστηρίζεται από αυτήν την εφαρμογή";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Έχετε ήδη λογαριασμό";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Έχετε ήδη χρησιμοποιήσει το %@. Συνδεθείτε με %@ για να συνεχίσετε.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Σύνδεση";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Εισαγάγετε τον κωδικό πρόσβασής σας";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "Ο κωδικός πρόσβασης δεν μπορεί να είναι κενός.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "Η διεύθυνση ηλεκτρονικού ταχυδρομείου και ο κωδικός πρόσβασης δεν ταιριάζουν.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου δεν ταιριάζει με κάποιον υπάρχοντα λογαριασμό.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου αφορά έναν λογαριασμό που έχει απενεργοποιηθεί.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Πληκτρολογήσατε πολλές φορές λανθασμένο κωδικό πρόσβασης. Δοκιμάστε ξανά σε λίγα λεπτά.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "Δεν είναι δυνατή η εύρεση του παρόχου για %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Οι διευθύνσεις ηλεκτρονικού ταχυδρομείου δεν ταιριάζουν";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Ανάκτηση κωδικού πρόσβασης";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Δείτε τις οδηγίες που στάλθηκαν σε αυτήν τη διεύθυνση ηλεκτρονικού ταχυδρομείου, οι οποίες εξηγούν πώς να επαναφέρετε τον κωδικό πρόσβασής σας.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Ελέγξτε τα εισερχόμενα του ηλεκτρονικού ταχυδρομείου σας";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Ακολουθήστε τις οδηγίες που στάλθηκαν στο %@ για να ανακτήσετε τον κωδικό πρόσβασής σας.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Δημιουργία λογαριασμού";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Όνομα και επώνυμο";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Επιλέξτε κωδικό πρόσβασης";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Όρους Παροχής Υπηρεσιών";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Πολιτική απορρήτου";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Αν συνεχίσετε, δηλώνετε ότι αποδέχεστε τους %@ και την %@ μας.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου χρησιμοποιείται ήδη από άλλον λογαριασμό.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Οι ισχυροί κωδικοί πρόσβασης έχουν τουλάχιστον 6 χαρακτήρες και έναν συνδυασμό γραμμάτων και αριθμών.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Η διεύθυνση IP έχει στείλει πάρα πολλά αιτήματα λογαριασμού. Δοκιμάστε ξανά σε λίγα λεπτά.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Χρησιμοποιήσατε ήδη το %@ για να συνδεθείτε. Εισαγάγετε τον κωδικό πρόσβασης για αυτόν τον λογαριασμό.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "ΟΚ";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Ακύρωση";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Πίσω";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Επόμενο";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Αποθήκευση";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Αποστολή";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Επανάληψη αποστολής";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Ηλεκτρονικό ταχυδρομείο";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Κωδικός πρόσβασης";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Όνομα";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Σφάλμα";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Κλείσιμο";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Προφίλ";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Ασφάλεια";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Συνδεδεμένοι λογαριασμοί";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Όνομα";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Ηλεκτρονικό ταχυδρομείο";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Προσθήκη κωδικού πρόσβασης";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Αλλαγή κωδικού πρόσβασης";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Έξοδος";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Διαγραφή λογαριασμού";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "Ξεχάσατε τον κωδικό πρόσβασής σας;";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Επαληθεύστε ότι είστε εσείς";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "Διαγραφή λογαριασμού;";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Αυτή η ενέργεια θα διαγράψει όλα τα δεδομένα που συσχετίζονται με τον λογαριασμό σας και δεν είναι δυνατή η αναίρεσή της. Για να ολοκληρώσετε αυτήν την ενέργεια, θα πρέπει να συνδεθείτε ξανά";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Αυτή η ενέργεια θα διαγράψει όλα τα δεδομένα που συσχετίζονται με τον λογαριασμό σας και δεν είναι δυνατή η αναίρεσή της. Είστε σίγουροι ότι θέλετε να διαγράψετε τον λογαριασμό σας;";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Διαγραφή";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Διαγραφή λογαριασμού";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Δεν είναι δυνατή η αναίρεση αυτής της ενέργειας";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Αποσύνδεση";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Συνδεδεμένος λογαριασμός";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "Αποσύνδεση λογαριασμού;";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Δεν θα μπορείτε πλέον να συνδεθείτε χρησιμοποιώντας τον λογαριασμό σας";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Αποσύνδεση λογαριασμού";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Για να αλλάξετε τη διεύθυνση που συσχετίζεται με τον λογαριασμό σας, θα πρέπει να συνδεθείτε ξανά.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Για να αλλάξετε τον κωδικό πρόσβασής σας, θα πρέπει πρώτα να εισαγάγετε τον τρέχοντα κωδικό πρόσβασης.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Επεξεργασία διεύθυνσης ηλεκτρονικού ταχυδρομείου";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Επεξεργασία ονόματος";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Για να προσθέσετε κωδικό πρόσβασης στον λογαριασμό σας, θα πρέπει να συνδεθείτε ξανά.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Για να αλλάξετε κωδικό πρόσβασης στον λογαριασμό σας, θα πρέπει να συνδεθείτε ξανά.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Για να αλλάξετε τον κωδικό πρόσβασής σας, θα πρέπει πρώτα να εισαγάγετε τον τρέχοντα κωδικό πρόσβασης.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Προσθήκη κωδικού πρόσβασης";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Αλλαγή κωδικού πρόσβασης";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Ηλεκτρονικό ταχυδρομείο";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Σύνδεση μέσω %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Εισαγάγετε το όνομά σας";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Εισαγάγετε τη διεύθυνση ηλεκτρονικού ταχυδρομείου σας";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Εισαγάγετε τον κωδικό πρόσβασής σας";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Νέος κωδικός πρόσβασης";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Επιλέξτε κωδικό πρόσβασης";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "Πρόβλημα σύνδεσης;";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Επιβεβαίωση διεύθυνσης ηλεκτρονικού ταχυδρομείου";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Συνδέθηκε!";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "Αντιμετωπίζετε πρόβλημα με τη λήψη των μηνυμάτων ηλεκτρονικού ταχυδρομείου;";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Δοκιμάστε αυτές τις συνήθεις λύσεις: \n - Ελέγξτε αν το μήνυμα ηλεκτρονικού ταχυδρομείου επισημάνθηκε ως ανεπιθύμητο ή έχει φιλτραριστεί.\n - Ελέγξτε τη σύνδεσή σας στο διαδίκτυο.\n - Βεβαιωθείτε ότι δεν έχετε γράψει λάθος τη διεύθυνση ηλεκτρονικού ταχυδρομείου.\n - Βεβαιωθείτε ότι δεν έχει γεμίσει ο χώρος εισερχομένων ή ότι δεν υπάρχουν άλλα προβλήματα που σχετίζονται με τις ρυθμίσεις εισερχομένων.\n Αν τα παραπάνω βήματα δεν λειτούργησαν, μπορείτε να στείλετε ξανά το μήνυμα ηλεκτρονικού ταχυδρομείου. Έχετε υπόψη ότι με αυτήν την ενέργεια, ο σύνδεσμος στο παλιότερο μήνυμα ηλεκτρονικού ταχυδρομείου θα απενεργοποιηθεί.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Ένα μήνυμα ηλεκτρονικού ταχυδρομείου σύνδεσης με πρόσθετες οδηγίες στάλθηκε στη διεύθυνση %@. Ελέγξτε τη διεύθυνση ηλεκτρονικού ταχυδρομείου για να ολοκληρώσετε τη σύνδεση.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Το μήνυμα ηλεκτρονικού ταχυδρομείου σύνδεσης στάλθηκε";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Welcome";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Sign in with email";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Enter your email";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "Incorrect email address.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "This type of account isn't supported by this app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "You already have an account";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "You've already used %@. Sign in with %@ to continue.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Sign in";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Enter your password";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "Password cannot be empty.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "The email and password that you entered don't match.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "That email address doesn't match an existing account.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "That email address is for an account that has been disabled.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "You've entered an incorrect password too many times. Try again in a few minutes.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "Can't find provider for %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Emails don't match";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recover password";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Receive instructions to this email that explain how to reset your password";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Check your email";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Follow the instructions sent to %@ to recover your password.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Create account";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "First name & surname";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Choose password";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Terms of Service";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Privacy Policy";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "By continuing, you are indicating that you accept our %@ and %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "The email address is already in use by another account.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Strong passwords have at least 6 characters and a mix of letters and numbers.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Too many account requests are coming from your IP address. Try again in a few minutes.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "You've already used %@ to sign in. Enter your password for that account.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "OK";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancel";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Back";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Next";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Save";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Send";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Resend";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Email";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Password";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Name";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Close";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Profile";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Security";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Linked Accounts";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Name";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Email";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Add password";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Change password";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Sign Out";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Delete Account";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "Forgotten password?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verify that it's you";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "Delete account?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "This will erase all data associated with your account, and can't be undone. You will need to sign in again to complete this action";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "This will erase all data associated with your account, and can't be undone. Are you sure that you want to delete your account?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Delete";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Delete account";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "This action can't be undone";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Unlink";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Linked account";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "Unlink account?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "You will no longer be able to sign in using your account";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Unlink account";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "To change email address associated with your account, you will need to sign in again.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "In order to change your password, you first need to enter your current password.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Edit email";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Edit name";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "To add a password to your account, you will need to sign in again.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "To change your account's password, you will need to sign in again.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "In order to change your password, you first need to enter your current password.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Add password";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Change password";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Email";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Sign in with %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Enter your name";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Enter your email";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Enter your password";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "New password";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Choose password";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "Trouble signing in?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirm email";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Signed in!";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "Trouble getting emails?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Try these common fixes: \n – Check whether the email was marked as spam or filtered.\n – Check your internet connection.\n – Check that you did not misspell your email.\n – Check that your inbox space is not running out, or for other inbox settings-related issues.\n If the steps above didn't work, you can resend the email. Note that this will deactivate the link in the older email.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "A sign-in email with additional instructions was sent to %@. Check your email to complete sign-in.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Sign-in email sent";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Welcome";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Sign in with email";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Enter your email";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "Incorrect email address.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "This type of account isn't supported by this app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "You already have an account";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "You've already used %@. Sign in with %@ to continue.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Sign in";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Enter your password";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "Password cannot be empty.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "The email and password that you entered don't match.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "That email address doesn't match an existing account.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "That email address is for an account that has been disabled.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "You've entered an incorrect password too many times. Try again in a few minutes.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "Can't find provider for %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Emails don't match";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recover password";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Receive instructions to this email that explain how to reset your password";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Check your email";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Follow the instructions sent to %@ to recover your password.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Create account";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "First name & surname";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Choose password";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Terms of Service";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Privacy Policy";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "By continuing, you are indicating that you accept our %@ and %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "The email address is already in use by another account.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Strong passwords have at least 6 characters and a mix of letters and numbers.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Too many account requests are coming from your IP address. Try again in a few minutes.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "You've already used %@ to sign in. Enter your password for that account.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "OK";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancel";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Back";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Next";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Save";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Send";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Resend";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Email";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Password";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Name";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Close";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Profile";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Security";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Linked Accounts";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Name";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Email";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Add password";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Change password";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Sign Out";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Delete Account";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "Forgotten password?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verify that it's you";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "Delete account?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "This will erase all data associated with your account, and can't be undone. You will need to sign in again to complete this action";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "This will erase all data associated with your account, and can't be undone. Are you sure that you want to delete your account?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Delete";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Delete account";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "This action can't be undone";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Unlink";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Linked account";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "Unlink account?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "You will no longer be able to sign in using your account";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Unlink account";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "To change email address associated with your account, you will need to sign in again.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "In order to change your password, you first need to enter your current password.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Edit email";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Edit name";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "To add a password to your account, you will need to sign in again.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "To change your account's password, you will need to sign in again.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "In order to change your password, you first need to enter your current password.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Add password";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Change password";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Email";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Sign in with %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Enter your name";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Enter your email";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Enter your password";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "New password";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Choose password";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "Trouble signing in?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirm email";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Signed in!";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "Trouble getting emails?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Try these common fixes: \n – Check whether the email was marked as spam or filtered.\n – Check your internet connection.\n – Check that you did not misspell your email.\n – Check that your inbox space is not running out, or for other inbox settings-related issues.\n If the steps above didn't work, you can resend the email. Note that this will deactivate the link in the older email.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "A sign-in email with additional instructions was sent to %@. Check your email to complete sign-in.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Sign-in email sent";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Welcome";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Sign in with email";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Enter your email";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "Incorrect email address.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "This type of account isn't supported by this app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "You already have an account";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "You've already used %@. Sign in with %@ to continue.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Sign in";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Enter your password";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "Password cannot be empty.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "The email and password that you entered don't match.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "That email address doesn't match an existing account.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "That email address is for an account that has been disabled.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "You've entered an incorrect password too many times. Try again in a few minutes.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "Can't find provider for %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Emails don't match";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recover password";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Receive instructions to this email that explain how to reset your password";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Check your email";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Follow the instructions sent to %@ to recover your password.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Create account";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "First name & surname";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Choose password";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Terms of Service";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Privacy Policy";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "By continuing, you are indicating that you accept our %@ and %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "The email address is already in use by another account.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Strong passwords have at least 6 characters and a mix of letters and numbers.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Too many account requests are coming from your IP address. Try again in a few minutes.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "You've already used %@ to sign in. Enter your password for that account.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "OK";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancel";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Back";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Next";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Save";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Send";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Resend";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Email";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Password";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Name";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Close";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Profile";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Security";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Linked Accounts";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Name";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Email";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Add password";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Change password";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Sign Out";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Delete Account";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "Forgotten password?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verify that it's you";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "Delete account?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "This will erase all data associated with your account, and can't be undone. You will need to sign in again to complete this action";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "This will erase all data associated with your account, and can't be undone. Are you sure that you want to delete your account?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Delete";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Delete account";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "This action can't be undone";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Unlink";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Linked account";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "Unlink account?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "You will no longer be able to sign in using your account";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Unlink account";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "To change email address associated with your account, you will need to sign in again.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "In order to change your password, you first need to enter your current password.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Edit email";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Edit name";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "To add a password to your account, you will need to sign in again.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "To change your account's password, you will need to sign in again.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "In order to change your password, you first need to enter your current password.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Add password";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Change password";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Email";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Sign in with %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Enter your name";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Enter your email";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Enter your password";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "New password";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Choose password";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "Trouble signing in?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirm email";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Signed in!";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "Trouble getting emails?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Try these common fixes: \n – Check whether the email was marked as spam or filtered.\n – Check your internet connection.\n – Check that you did not misspell your email.\n – Check that your inbox space is not running out, or for other inbox settings-related issues.\n If the steps above didn't work, you can resend the email. Note that this will deactivate the link in the older email.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "A sign-in email with additional instructions was sent to %@. Check your email to complete sign-in.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Sign-in email sent";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Welcome";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Sign in with email";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Enter your email";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "Incorrect email address.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "This type of account isn't supported by this app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "You already have an account";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "You've already used %@. Sign in with %@ to continue.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Sign in";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Enter your password";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "Password cannot be empty.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "The email and password that you entered don't match.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "That email address doesn't match an existing account.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "That email address is for an account that has been disabled.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "You've entered an incorrect password too many times. Try again in a few minutes.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "Can't find provider for %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Emails don't match";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recover password";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Receive instructions to this email that explain how to reset your password";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Check your email";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Follow the instructions sent to %@ to recover your password.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Create account";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "First name & surname";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Choose password";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Terms of Service";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Privacy Policy";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "By continuing, you are indicating that you accept our %@ and %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "The email address is already in use by another account.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Strong passwords have at least 6 characters and a mix of letters and numbers.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Too many account requests are coming from your IP address. Try again in a few minutes.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "You've already used %@ to sign in. Enter your password for that account.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "OK";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancel";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Back";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Next";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Save";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Send";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Resend";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Email";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Password";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Name";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Close";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Profile";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Security";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Linked Accounts";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Name";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Email";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Add password";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Change password";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Sign Out";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Delete Account";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "Forgotten password?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verify that it's you";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "Delete account?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "This will erase all data associated with your account, and can't be undone. You will need to sign in again to complete this action";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "This will erase all data associated with your account, and can't be undone. Are you sure that you want to delete your account?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Delete";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Delete account";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "This action can't be undone";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Unlink";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Linked account";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "Unlink account?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "You will no longer be able to sign in using your account";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Unlink account";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "To change email address associated with your account, you will need to sign in again.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "In order to change your password, you first need to enter your current password.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Edit email";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Edit name";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "To add a password to your account, you will need to sign in again.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "To change your account's password, you will need to sign in again.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "In order to change your password, you first need to enter your current password.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Add password";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Change password";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Email";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Sign in with %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Enter your name";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Enter your email";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Enter your password";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "New password";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Choose password";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "Trouble signing in?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirm email";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Signed in!";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "Trouble getting emails?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Try these common fixes: \n – Check whether the email was marked as spam or filtered.\n – Check your internet connection.\n – Check that you did not misspell your email.\n – Check that your inbox space is not running out, or for other inbox settings-related issues.\n If the steps above didn't work, you can resend the email. Note that this will deactivate the link in the older email.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "A sign-in email with additional instructions was sent to %@. Check your email to complete sign-in.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Sign-in email sent";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Welcome";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Sign in with email";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Enter your email";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "Incorrect email address.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "This type of account isn't supported by this app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "You already have an account";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "You've already used %@. Sign in with %@ to continue.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Sign in";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Enter your password";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "Password cannot be empty.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "The email and password that you entered don't match.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "That email address doesn't match an existing account.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "That email address is for an account that has been disabled.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "You've entered an incorrect password too many times. Try again in a few minutes.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "Can't find provider for %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Emails don't match";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recover password";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Receive instructions to this email that explain how to reset your password";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Check your email";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Follow the instructions sent to %@ to recover your password.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Create account";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "First name & surname";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Choose password";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Terms of Service";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Privacy Policy";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "By continuing, you are indicating that you accept our %@ and %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "The email address is already in use by another account.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Strong passwords have at least 6 characters and a mix of letters and numbers.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Too many account requests are coming from your IP address. Try again in a few minutes.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "You've already used %@ to sign in. Enter your password for that account.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "OK";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancel";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Back";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Next";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Save";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Send";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Resend";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Email";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Password";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Name";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Close";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Profile";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Security";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Linked Accounts";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Name";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Email";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Add password";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Change password";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Sign Out";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Delete Account";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "Forgotten password?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verify that it's you";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "Delete account?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "This will erase all data associated with your account, and can't be undone. You will need to sign in again to complete this action";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "This will erase all data associated with your account, and can't be undone. Are you sure that you want to delete your account?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Delete";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Delete account";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "This action can't be undone";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Unlink";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Linked account";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "Unlink account?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "You will no longer be able to sign in using your account";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Unlink account";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "To change email address associated with your account, you will need to sign in again.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "In order to change your password, you first need to enter your current password.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Edit email";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Edit name";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "To add a password to your account, you will need to sign in again.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "To change your account's password, you will need to sign in again.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "In order to change your password, you first need to enter your current password.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Add password";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Change password";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Email";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Sign in with %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Enter your name";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Enter your email";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Enter your password";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "New password";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Choose password";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "Trouble signing in?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirm email";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Signed in!";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "Trouble getting emails?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Try these common fixes: \n – Check whether the email was marked as spam or filtered.\n – Check your internet connection.\n – Check that you did not misspell your email.\n – Check that your inbox space is not running out, or for other inbox settings-related issues.\n If the steps above didn't work, you can resend the email. Note that this will deactivate the link in the older email.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "A sign-in email with additional instructions was sent to %@. Check your email to complete sign-in.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Sign-in email sent";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Welcome";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Sign in with email";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Enter your email";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "Incorrect email address.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "This type of account isn't supported by this app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "You already have an account";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "You've already used %@. Sign in with %@ to continue.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Sign in";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Enter your password";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "Password cannot be empty.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "The email and password that you entered don't match.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "That email address doesn't match an existing account.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "That email address is for an account that has been disabled.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "You've entered an incorrect password too many times. Try again in a few minutes.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "Can't find provider for %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Emails don't match";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recover password";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Receive instructions to this email that explain how to reset your password";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Check your email";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Follow the instructions sent to %@ to recover your password.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Create account";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "First name & surname";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Choose password";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Terms of Service";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Privacy Policy";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "By continuing, you are indicating that you accept our %@ and %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "The email address is already in use by another account.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Strong passwords have at least 6 characters and a mix of letters and numbers.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Too many account requests are coming from your IP address. Try again in a few minutes.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "You've already used %@ to sign in. Enter your password for that account.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "OK";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancel";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Back";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Next";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Save";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Send";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Resend";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Email";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Password";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Name";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Close";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Profile";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Security";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Linked Accounts";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Name";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Email";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Add password";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Change password";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Sign Out";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Delete Account";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "Forgotten password?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verify that it's you";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "Delete account?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "This will erase all data associated with your account, and can't be undone. You will need to sign in again to complete this action";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "This will erase all data associated with your account, and can't be undone. Are you sure that you want to delete your account?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Delete";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Delete account";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "This action can't be undone";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Unlink";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Linked account";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "Unlink account?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "You will no longer be able to sign in using your account";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Unlink account";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "To change email address associated with your account, you will need to sign in again.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "In order to change your password, you first need to enter your current password.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Edit email";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Edit name";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "To add a password to your account, you will need to sign in again.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "To change your account's password, you will need to sign in again.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "In order to change your password, you first need to enter your current password.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Add password";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Change password";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Email";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Sign in with %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Enter your name";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Enter your email";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Enter your password";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "New password";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Choose password";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "Trouble signing in?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirm email";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Signed in!";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "Trouble getting emails?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Try these common fixes: \n – Check whether the email was marked as spam or filtered.\n – Check your internet connection.\n – Check that you did not misspell your email.\n – Check that your inbox space is not running out, or for other inbox settings-related issues.\n If the steps above didn't work, you can resend the email. Note that this will deactivate the link in the older email.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "A sign-in email with additional instructions was sent to %@. Check your email to complete sign-in.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Sign-in email sent";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Welcome";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Sign in with email";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Enter your email";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "Incorrect email address.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "This type of account isn't supported by this app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "You already have an account";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "You've already used %@. Sign in with %@ to continue.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Sign in";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Enter your password";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "Password cannot be empty.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "The email and password that you entered don't match.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "That email address doesn't match an existing account.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "That email address is for an account that has been disabled.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "You've entered an incorrect password too many times. Try again in a few minutes.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "Can't find provider for %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Emails don't match";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recover password";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Receive instructions to this email that explain how to reset your password";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Check your email";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Follow the instructions sent to %@ to recover your password.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Create account";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "First name & surname";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Choose password";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Terms of Service";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Privacy Policy";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "By continuing, you are indicating that you accept our %@ and %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "The email address is already in use by another account.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Strong passwords have at least 6 characters and a mix of letters and numbers.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Too many account requests are coming from your IP address. Try again in a few minutes.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "You've already used %@ to sign in. Enter your password for that account.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "OK";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancel";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Back";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Next";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Save";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Send";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Resend";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Email";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Password";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Name";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Close";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Profile";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Security";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Linked Accounts";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Name";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Email";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Add password";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Change password";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Sign Out";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Delete Account";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "Forgotten password?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verify that it's you";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "Delete account?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "This will erase all data associated with your account, and can't be undone. You will need to sign in again to complete this action";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "This will erase all data associated with your account, and can't be undone. Are you sure that you want to delete your account?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Delete";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Delete account";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "This action can't be undone";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Unlink";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Linked account";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "Unlink account?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "You will no longer be able to sign in using your account";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Unlink account";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "To change email address associated with your account, you will need to sign in again.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "In order to change your password, you first need to enter your current password.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Edit email";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Edit name";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "To add a password to your account, you will need to sign in again.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "To change your account's password, you will need to sign in again.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "In order to change your password, you first need to enter your current password.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Add password";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Change password";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Email";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Sign in with %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Enter your name";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Enter your email";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Enter your password";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "New password";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Choose password";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "Trouble signing in?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirm email";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Signed in!";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "Trouble getting emails?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Try these common fixes: \n – Check whether the email was marked as spam or filtered.\n – Check your internet connection.\n – Check that you did not misspell your email.\n – Check that your inbox space is not running out, or for other inbox settings-related issues.\n If the steps above didn't work, you can resend the email. Note that this will deactivate the link in the older email.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "A sign-in email with additional instructions was sent to %@. Check your email to complete sign-in.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Sign-in email sent";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Welcome";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Sign in with email";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Enter your email";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "That email address isn't correct.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "This type of account isn't supported by this app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "You already have an account";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "You’ve already used %@. Sign in with %@ to continue.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Sign in";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Enter your password";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "Password cannot be empty.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "The email and password you entered don't match.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "That email address doesn’t match an existing account.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "That email address is for an account that has been disabled.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "You’ve entered an incorrect password too many times. Try again in a few minutes.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "Can't find provider for %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Emails don't match";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recover password";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Get instructions sent to this email that explain how to reset your password.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Check your email";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Follow the instructions sent to %@ to recover your password.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Create account";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "First & last name";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Choose password";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Terms of Service";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Privacy Policy";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "By continuing, you are indicating that you accept our %@ and %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "The email address is already in use by another account.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Password must be at least 6 characters long.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Too many account requests are coming from your IP address. Try again in a few minutes.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "You’ve already used %@ to sign in. Enter your password for that account.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "OK";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancel";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Back";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Next";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Save";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Send";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Resend";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Email";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Password";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Name";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Close";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Profile";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Security";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Linked Accounts";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Name";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Email";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Add password";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Change password";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Sign Out";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Delete Account";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "Forgot password?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verify it's you";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "Delete Account?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "This will erase all data associated with your account, and can't be undone You will need to sign in again to complete this action";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "This will erase all data associated with your account, and can't be undone. Are you sure you want to delete your account?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Delete";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Delete account";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "This action can't be undone";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Unlink";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Linked account";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "Unlink account?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "You will no longer be able to sign in using your account";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Unlink account";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "To change email address associated with your account, you will need to sign in again.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "In order to change your password, you first need to enter your current password.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Edit email";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Edit name";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "To add password to your account, you will need to sign in again.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "To change password to your account, you will need to sign in again.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "In order to change your password, you first need to enter your current password.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Add password";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Change password";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Email";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Sign in with %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Enter your name";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Enter your email";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Enter your password";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "New password";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Choose password";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "Trouble signing in?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirm Email";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Signed in!";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "Trouble getting emails?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Try these common fixes: \n - Check if the email was marked as spam or filtered.\n - Check your internet connection.\n - Check that you did not misspell your email.\n - Check that your inbox space is not running out or other inbox settings related issues.\n If the steps above didn't work, you can resend the email. Note that this will deactivate the link in the older email.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "A sign-in email with additional instructions was sent to %@. Check your email to complete sign-in.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Sign-in email Sent";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Te damos la bienvenida";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Acceder con el correo electrónico";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "La dirección de correo electrónico es incorrecta.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "El tipo de cuenta no es compatible con esta app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Ya tienes una cuenta";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Ya usaste %@. Accede con %@ para continuar.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Acceder";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "El campo de contraseña no puede estar vacío.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "El correo electrónico y la contraseña que ingresaste no coinciden.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "La dirección de correo electrónico no coincide con una cuenta existente.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "La dirección de correo electrónico corresponde a una cuenta que se inhabilitó.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Ingresaste una contraseña incorrecta demasiadas veces. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "No se encuentra ningún proveedor de %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Los correos electrónicos no coinciden";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recuperar contraseña";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Recibe un correo electrónico con instrucciones para cambiar la contraseña.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Revisa tu correo electrónico";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Sigue las instrucciones que se enviaron a %@ para restablecer la contraseña.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Crear cuenta";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Nombre y apellido";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Condiciones del servicio";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Política de Privacidad";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Si continúas, indicas que aceptas nuestras %@ y %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Otra cuenta ya usa esta dirección de correo electrónico.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Las contraseñas seguras deben tener al menos 6 caracteres, además de incluir letras y números.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Recibimos demasiadas solicitudes de cuenta desde tu dirección IP. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Ya usaste %@ para acceder. Ingresa la contraseña correspondiente.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "Aceptar";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancelar";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Atrás";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Siguiente";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Guardar";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Enviar";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Reenviar";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Correo electrónico";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Contraseña";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Nombre";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Cerrar";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Perfil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Seguridad";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Cuentas vinculadas";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Nombre";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Correo electrónico";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Agregar contraseña";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Cambiar contraseña";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Salir";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Borrar cuenta";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "¿Olvidaste la contraseña?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verifica tu identidad";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "¿Quieres borrar la cuenta?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. Debes acceder de nuevo para realizarla.";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. ¿Estás seguro de que quieres borrar tu cuenta?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Borrar";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Borrar cuenta";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Esta acción no se puede deshacer";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Desvincular";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Cuenta vinculada";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "¿Quieres desvincular la cuenta?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Ya no podrás acceder con tu cuenta";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Desvincular cuenta";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Para cambiar la dirección de correo electrónico asociada con tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Editar correo electrónico";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Editar nombre";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Para agregar una contraseña a tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Para cambiar la contraseña de tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Agregar contraseña";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Cambiar contraseña";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Correo electrónico";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Acceder con %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Ingresa tu nombre";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Nueva contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "¿Tienes problemas para acceder?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirmar correo electrónico";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Accediste";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "¿Tienes problemas para recibir correos electrónicos?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Prueba estas soluciones comunes: \n- Verifica si el correo electrónico se marcó como spam o se filtró.\n- Comprueba tu conexión a Internet.\n- Verifica que escribiste bien tu correo electrónico.\n- Verifica que tu bandeja de entrada no esté llena o revisa cualquier otro problema relacionado con la configuración de la bandeja de entrada.\nSi los pasos anteriores no funcionaron, reenvía el correo electrónico. Ten en cuenta que esta acción desactivará el vínculo en el correo electrónico anterior.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Se envió un correo electrónico de acceso con instrucciones adicionales a %@. Revisa tu bandeja de entrada para completar el proceso.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Se envió el correo electrónico de acceso";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Te damos la bienvenida";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Acceder con el correo electrónico";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "La dirección de correo electrónico es incorrecta.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "El tipo de cuenta no es compatible con esta app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Ya tienes una cuenta";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Ya usaste %@. Accede con %@ para continuar.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Acceder";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "El campo de contraseña no puede estar vacío.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "El correo electrónico y la contraseña que ingresaste no coinciden.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "La dirección de correo electrónico no coincide con una cuenta existente.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "La dirección de correo electrónico corresponde a una cuenta que se inhabilitó.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Ingresaste una contraseña incorrecta demasiadas veces. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "No se encuentra ningún proveedor de %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Los correos electrónicos no coinciden";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recuperar contraseña";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Recibe un correo electrónico con instrucciones para cambiar la contraseña.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Revisa tu correo electrónico";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Sigue las instrucciones que se enviaron a %@ para restablecer la contraseña.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Crear cuenta";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Nombre y apellido";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Condiciones del servicio";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Política de Privacidad";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Si continúas, indicas que aceptas nuestras %@ y %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Otra cuenta ya usa esta dirección de correo electrónico.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Las contraseñas seguras deben tener al menos 6 caracteres, además de incluir letras y números.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Recibimos demasiadas solicitudes de cuenta desde tu dirección IP. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Ya usaste %@ para acceder. Ingresa la contraseña correspondiente.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "Aceptar";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancelar";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Atrás";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Siguiente";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Guardar";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Enviar";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Reenviar";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Correo electrónico";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Contraseña";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Nombre";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Cerrar";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Perfil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Seguridad";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Cuentas vinculadas";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Nombre";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Correo electrónico";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Agregar contraseña";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Cambiar contraseña";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Salir";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Borrar cuenta";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "¿Olvidaste la contraseña?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verifica tu identidad";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "¿Quieres borrar la cuenta?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. Debes acceder de nuevo para realizarla.";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. ¿Estás seguro de que quieres borrar tu cuenta?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Borrar";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Borrar cuenta";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Esta acción no se puede deshacer";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Desvincular";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Cuenta vinculada";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "¿Quieres desvincular la cuenta?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Ya no podrás acceder con tu cuenta";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Desvincular cuenta";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Para cambiar la dirección de correo electrónico asociada con tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Editar correo electrónico";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Editar nombre";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Para agregar una contraseña a tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Para cambiar la contraseña de tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Agregar contraseña";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Cambiar contraseña";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Correo electrónico";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Acceder con %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Ingresa tu nombre";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Nueva contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "¿Tienes problemas para acceder?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirmar correo electrónico";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Accediste";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "¿Tienes problemas para recibir correos electrónicos?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Prueba estas soluciones comunes: \n- Verifica si el correo electrónico se marcó como spam o se filtró.\n- Comprueba tu conexión a Internet.\n- Verifica que escribiste bien tu correo electrónico.\n- Verifica que tu bandeja de entrada no esté llena o revisa cualquier otro problema relacionado con la configuración de la bandeja de entrada.\nSi los pasos anteriores no funcionaron, reenvía el correo electrónico. Ten en cuenta que esta acción desactivará el vínculo en el correo electrónico anterior.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Se envió un correo electrónico de acceso con instrucciones adicionales a %@. Revisa tu bandeja de entrada para completar el proceso.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Se envió el correo electrónico de acceso";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Te damos la bienvenida";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Acceder con el correo electrónico";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "La dirección de correo electrónico es incorrecta.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "El tipo de cuenta no es compatible con esta app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Ya tienes una cuenta";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Ya usaste %@. Accede con %@ para continuar.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Acceder";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "El campo de contraseña no puede estar vacío.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "El correo electrónico y la contraseña que ingresaste no coinciden.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "La dirección de correo electrónico no coincide con una cuenta existente.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "La dirección de correo electrónico corresponde a una cuenta que se inhabilitó.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Ingresaste una contraseña incorrecta demasiadas veces. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "No se encuentra ningún proveedor de %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Los correos electrónicos no coinciden";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recuperar contraseña";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Recibe un correo electrónico con instrucciones para cambiar la contraseña.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Revisa tu correo electrónico";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Sigue las instrucciones que se enviaron a %@ para restablecer la contraseña.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Crear cuenta";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Nombre y apellido";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Condiciones del servicio";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Política de Privacidad";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Si continúas, indicas que aceptas nuestras %@ y %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Otra cuenta ya usa esta dirección de correo electrónico.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Las contraseñas seguras deben tener al menos 6 caracteres, además de incluir letras y números.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Recibimos demasiadas solicitudes de cuenta desde tu dirección IP. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Ya usaste %@ para acceder. Ingresa la contraseña correspondiente.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "Aceptar";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancelar";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Atrás";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Siguiente";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Guardar";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Enviar";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Reenviar";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Correo electrónico";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Contraseña";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Nombre";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Cerrar";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Perfil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Seguridad";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Cuentas vinculadas";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Nombre";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Correo electrónico";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Agregar contraseña";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Cambiar contraseña";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Salir";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Borrar cuenta";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "¿Olvidaste la contraseña?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verifica tu identidad";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "¿Quieres borrar la cuenta?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. Debes acceder de nuevo para realizarla.";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. ¿Estás seguro de que quieres borrar tu cuenta?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Borrar";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Borrar cuenta";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Esta acción no se puede deshacer";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Desvincular";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Cuenta vinculada";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "¿Quieres desvincular la cuenta?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Ya no podrás acceder con tu cuenta";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Desvincular cuenta";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Para cambiar la dirección de correo electrónico asociada con tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Editar correo electrónico";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Editar nombre";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Para agregar una contraseña a tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Para cambiar la contraseña de tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Agregar contraseña";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Cambiar contraseña";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Correo electrónico";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Acceder con %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Ingresa tu nombre";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Nueva contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "¿Tienes problemas para acceder?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirmar correo electrónico";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Accediste";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "¿Tienes problemas para recibir correos electrónicos?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Prueba estas soluciones comunes: \n- Verifica si el correo electrónico se marcó como spam o se filtró.\n- Comprueba tu conexión a Internet.\n- Verifica que escribiste bien tu correo electrónico.\n- Verifica que tu bandeja de entrada no esté llena o revisa cualquier otro problema relacionado con la configuración de la bandeja de entrada.\nSi los pasos anteriores no funcionaron, reenvía el correo electrónico. Ten en cuenta que esta acción desactivará el vínculo en el correo electrónico anterior.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Se envió un correo electrónico de acceso con instrucciones adicionales a %@. Revisa tu bandeja de entrada para completar el proceso.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Se envió el correo electrónico de acceso";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Te damos la bienvenida";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Acceder con el correo electrónico";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "La dirección de correo electrónico es incorrecta.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "El tipo de cuenta no es compatible con esta app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Ya tienes una cuenta";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Ya usaste %@. Accede con %@ para continuar.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Acceder";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "El campo de contraseña no puede estar vacío.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "El correo electrónico y la contraseña que ingresaste no coinciden.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "La dirección de correo electrónico no coincide con una cuenta existente.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "La dirección de correo electrónico corresponde a una cuenta que se inhabilitó.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Ingresaste una contraseña incorrecta demasiadas veces. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "No se encuentra ningún proveedor de %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Los correos electrónicos no coinciden";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recuperar contraseña";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Recibe un correo electrónico con instrucciones para cambiar la contraseña.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Revisa tu correo electrónico";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Sigue las instrucciones que se enviaron a %@ para restablecer la contraseña.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Crear cuenta";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Nombre y apellido";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Condiciones del servicio";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Política de Privacidad";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Si continúas, indicas que aceptas nuestras %@ y %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Otra cuenta ya usa esta dirección de correo electrónico.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Las contraseñas seguras deben tener al menos 6 caracteres, además de incluir letras y números.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Recibimos demasiadas solicitudes de cuenta desde tu dirección IP. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Ya usaste %@ para acceder. Ingresa la contraseña correspondiente.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "Aceptar";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancelar";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Atrás";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Siguiente";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Guardar";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Enviar";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Reenviar";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Correo electrónico";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Contraseña";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Nombre";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Cerrar";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Perfil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Seguridad";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Cuentas vinculadas";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Nombre";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Correo electrónico";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Agregar contraseña";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Cambiar contraseña";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Salir";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Borrar cuenta";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "¿Olvidaste la contraseña?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verifica tu identidad";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "¿Quieres borrar la cuenta?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. Debes acceder de nuevo para realizarla.";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. ¿Estás seguro de que quieres borrar tu cuenta?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Borrar";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Borrar cuenta";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Esta acción no se puede deshacer";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Desvincular";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Cuenta vinculada";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "¿Quieres desvincular la cuenta?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Ya no podrás acceder con tu cuenta";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Desvincular cuenta";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Para cambiar la dirección de correo electrónico asociada con tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Editar correo electrónico";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Editar nombre";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Para agregar una contraseña a tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Para cambiar la contraseña de tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Agregar contraseña";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Cambiar contraseña";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Correo electrónico";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Acceder con %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Ingresa tu nombre";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Nueva contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "¿Tienes problemas para acceder?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirmar correo electrónico";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Accediste";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "¿Tienes problemas para recibir correos electrónicos?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Prueba estas soluciones comunes: \n- Verifica si el correo electrónico se marcó como spam o se filtró.\n- Comprueba tu conexión a Internet.\n- Verifica que escribiste bien tu correo electrónico.\n- Verifica que tu bandeja de entrada no esté llena o revisa cualquier otro problema relacionado con la configuración de la bandeja de entrada.\nSi los pasos anteriores no funcionaron, reenvía el correo electrónico. Ten en cuenta que esta acción desactivará el vínculo en el correo electrónico anterior.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Se envió un correo electrónico de acceso con instrucciones adicionales a %@. Revisa tu bandeja de entrada para completar el proceso.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Se envió el correo electrónico de acceso";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Te damos la bienvenida";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Acceder con el correo electrónico";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "La dirección de correo electrónico es incorrecta.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "El tipo de cuenta no es compatible con esta app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Ya tienes una cuenta";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Ya usaste %@. Accede con %@ para continuar.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Acceder";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "El campo de contraseña no puede estar vacío.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "El correo electrónico y la contraseña que ingresaste no coinciden.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "La dirección de correo electrónico no coincide con una cuenta existente.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "La dirección de correo electrónico corresponde a una cuenta que se inhabilitó.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Ingresaste una contraseña incorrecta demasiadas veces. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "No se encuentra ningún proveedor de %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Los correos electrónicos no coinciden";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recuperar contraseña";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Recibe un correo electrónico con instrucciones para cambiar la contraseña.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Revisa tu correo electrónico";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Sigue las instrucciones que se enviaron a %@ para restablecer la contraseña.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Crear cuenta";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Nombre y apellido";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Condiciones del servicio";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Política de Privacidad";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Si continúas, indicas que aceptas nuestras %@ y %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Otra cuenta ya usa esta dirección de correo electrónico.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Las contraseñas seguras deben tener al menos 6 caracteres, además de incluir letras y números.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Recibimos demasiadas solicitudes de cuenta desde tu dirección IP. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Ya usaste %@ para acceder. Ingresa la contraseña correspondiente.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "Aceptar";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancelar";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Atrás";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Siguiente";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Guardar";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Enviar";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Reenviar";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Correo electrónico";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Contraseña";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Nombre";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Cerrar";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Perfil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Seguridad";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Cuentas vinculadas";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Nombre";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Correo electrónico";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Agregar contraseña";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Cambiar contraseña";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Salir";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Borrar cuenta";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "¿Olvidaste la contraseña?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verifica tu identidad";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "¿Quieres borrar la cuenta?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. Debes acceder de nuevo para realizarla.";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. ¿Estás seguro de que quieres borrar tu cuenta?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Borrar";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Borrar cuenta";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Esta acción no se puede deshacer";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Desvincular";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Cuenta vinculada";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "¿Quieres desvincular la cuenta?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Ya no podrás acceder con tu cuenta";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Desvincular cuenta";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Para cambiar la dirección de correo electrónico asociada con tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Editar correo electrónico";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Editar nombre";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Para agregar una contraseña a tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Para cambiar la contraseña de tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Agregar contraseña";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Cambiar contraseña";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Correo electrónico";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Acceder con %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Ingresa tu nombre";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Nueva contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "¿Tienes problemas para acceder?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirmar correo electrónico";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Accediste";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "¿Tienes problemas para recibir correos electrónicos?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Prueba estas soluciones comunes: \n- Verifica si el correo electrónico se marcó como spam o se filtró.\n- Comprueba tu conexión a Internet.\n- Verifica que escribiste bien tu correo electrónico.\n- Verifica que tu bandeja de entrada no esté llena o revisa cualquier otro problema relacionado con la configuración de la bandeja de entrada.\nSi los pasos anteriores no funcionaron, reenvía el correo electrónico. Ten en cuenta que esta acción desactivará el vínculo en el correo electrónico anterior.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Se envió un correo electrónico de acceso con instrucciones adicionales a %@. Revisa tu bandeja de entrada para completar el proceso.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Se envió el correo electrónico de acceso";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Te damos la bienvenida";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Acceder con el correo electrónico";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "La dirección de correo electrónico es incorrecta.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "El tipo de cuenta no es compatible con esta app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Ya tienes una cuenta";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Ya usaste %@. Accede con %@ para continuar.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Acceder";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "El campo de contraseña no puede estar vacío.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "El correo electrónico y la contraseña que ingresaste no coinciden.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "La dirección de correo electrónico no coincide con una cuenta existente.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "La dirección de correo electrónico corresponde a una cuenta que se inhabilitó.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Ingresaste una contraseña incorrecta demasiadas veces. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "No se encuentra ningún proveedor de %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Los correos electrónicos no coinciden";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recuperar contraseña";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Recibe un correo electrónico con instrucciones para cambiar la contraseña.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Revisa tu correo electrónico";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Sigue las instrucciones que se enviaron a %@ para restablecer la contraseña.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Crear cuenta";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Nombre y apellido";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Condiciones del servicio";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Política de Privacidad";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Si continúas, indicas que aceptas nuestras %@ y %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Otra cuenta ya usa esta dirección de correo electrónico.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Las contraseñas seguras deben tener al menos 6 caracteres, además de incluir letras y números.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Recibimos demasiadas solicitudes de cuenta desde tu dirección IP. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Ya usaste %@ para acceder. Ingresa la contraseña correspondiente.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "Aceptar";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancelar";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Atrás";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Siguiente";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Guardar";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Enviar";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Reenviar";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Correo electrónico";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Contraseña";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Nombre";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Cerrar";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Perfil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Seguridad";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Cuentas vinculadas";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Nombre";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Correo electrónico";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Agregar contraseña";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Cambiar contraseña";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Salir";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Borrar cuenta";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "¿Olvidaste la contraseña?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verifica tu identidad";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "¿Quieres borrar la cuenta?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. Debes acceder de nuevo para realizarla.";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. ¿Estás seguro de que quieres borrar tu cuenta?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Borrar";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Borrar cuenta";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Esta acción no se puede deshacer";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Desvincular";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Cuenta vinculada";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "¿Quieres desvincular la cuenta?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Ya no podrás acceder con tu cuenta";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Desvincular cuenta";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Para cambiar la dirección de correo electrónico asociada con tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Editar correo electrónico";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Editar nombre";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Para agregar una contraseña a tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Para cambiar la contraseña de tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Agregar contraseña";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Cambiar contraseña";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Correo electrónico";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Acceder con %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Ingresa tu nombre";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Nueva contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "¿Tienes problemas para acceder?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirmar correo electrónico";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Accediste";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "¿Tienes problemas para recibir correos electrónicos?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Prueba estas soluciones comunes: \n- Verifica si el correo electrónico se marcó como spam o se filtró.\n- Comprueba tu conexión a Internet.\n- Verifica que escribiste bien tu correo electrónico.\n- Verifica que tu bandeja de entrada no esté llena o revisa cualquier otro problema relacionado con la configuración de la bandeja de entrada.\nSi los pasos anteriores no funcionaron, reenvía el correo electrónico. Ten en cuenta que esta acción desactivará el vínculo en el correo electrónico anterior.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Se envió un correo electrónico de acceso con instrucciones adicionales a %@. Revisa tu bandeja de entrada para completar el proceso.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Se envió el correo electrónico de acceso";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Te damos la bienvenida";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Acceder con el correo electrónico";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "La dirección de correo electrónico es incorrecta.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "El tipo de cuenta no es compatible con esta app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Ya tienes una cuenta";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Ya usaste %@. Accede con %@ para continuar.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Acceder";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "El campo de contraseña no puede estar vacío.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "El correo electrónico y la contraseña que ingresaste no coinciden.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "La dirección de correo electrónico no coincide con una cuenta existente.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "La dirección de correo electrónico corresponde a una cuenta que se inhabilitó.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Ingresaste una contraseña incorrecta demasiadas veces. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "No se encuentra ningún proveedor de %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Los correos electrónicos no coinciden";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recuperar contraseña";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Recibe un correo electrónico con instrucciones para cambiar la contraseña.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Revisa tu correo electrónico";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Sigue las instrucciones que se enviaron a %@ para restablecer la contraseña.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Crear cuenta";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Nombre y apellido";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Condiciones del servicio";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Política de Privacidad";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Si continúas, indicas que aceptas nuestras %@ y %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Otra cuenta ya usa esta dirección de correo electrónico.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Las contraseñas seguras deben tener al menos 6 caracteres, además de incluir letras y números.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Recibimos demasiadas solicitudes de cuenta desde tu dirección IP. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Ya usaste %@ para acceder. Ingresa la contraseña correspondiente.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "Aceptar";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancelar";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Atrás";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Siguiente";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Guardar";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Enviar";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Reenviar";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Correo electrónico";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Contraseña";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Nombre";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Cerrar";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Perfil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Seguridad";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Cuentas vinculadas";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Nombre";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Correo electrónico";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Agregar contraseña";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Cambiar contraseña";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Salir";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Borrar cuenta";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "¿Olvidaste la contraseña?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verifica tu identidad";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "¿Quieres borrar la cuenta?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. Debes acceder de nuevo para realizarla.";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. ¿Estás seguro de que quieres borrar tu cuenta?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Borrar";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Borrar cuenta";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Esta acción no se puede deshacer";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Desvincular";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Cuenta vinculada";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "¿Quieres desvincular la cuenta?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Ya no podrás acceder con tu cuenta";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Desvincular cuenta";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Para cambiar la dirección de correo electrónico asociada con tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Editar correo electrónico";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Editar nombre";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Para agregar una contraseña a tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Para cambiar la contraseña de tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Agregar contraseña";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Cambiar contraseña";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Correo electrónico";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Acceder con %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Ingresa tu nombre";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Nueva contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "¿Tienes problemas para acceder?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirmar correo electrónico";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Accediste";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "¿Tienes problemas para recibir correos electrónicos?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Prueba estas soluciones comunes: \n- Verifica si el correo electrónico se marcó como spam o se filtró.\n- Comprueba tu conexión a Internet.\n- Verifica que escribiste bien tu correo electrónico.\n- Verifica que tu bandeja de entrada no esté llena o revisa cualquier otro problema relacionado con la configuración de la bandeja de entrada.\nSi los pasos anteriores no funcionaron, reenvía el correo electrónico. Ten en cuenta que esta acción desactivará el vínculo en el correo electrónico anterior.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Se envió un correo electrónico de acceso con instrucciones adicionales a %@. Revisa tu bandeja de entrada para completar el proceso.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Se envió el correo electrónico de acceso";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Te damos la bienvenida";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Acceder con el correo electrónico";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "La dirección de correo electrónico es incorrecta.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "El tipo de cuenta no es compatible con esta app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Ya tienes una cuenta";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Ya usaste %@. Accede con %@ para continuar.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Acceder";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "El campo de contraseña no puede estar vacío.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "El correo electrónico y la contraseña que ingresaste no coinciden.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "La dirección de correo electrónico no coincide con una cuenta existente.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "La dirección de correo electrónico corresponde a una cuenta que se inhabilitó.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Ingresaste una contraseña incorrecta demasiadas veces. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "No se encuentra ningún proveedor de %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Los correos electrónicos no coinciden";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recuperar contraseña";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Recibe un correo electrónico con instrucciones para cambiar la contraseña.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Revisa tu correo electrónico";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Sigue las instrucciones que se enviaron a %@ para restablecer la contraseña.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Crear cuenta";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Nombre y apellido";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Condiciones del servicio";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Política de Privacidad";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Si continúas, indicas que aceptas nuestras %@ y %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Otra cuenta ya usa esta dirección de correo electrónico.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Las contraseñas seguras deben tener al menos 6 caracteres, además de incluir letras y números.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Recibimos demasiadas solicitudes de cuenta desde tu dirección IP. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Ya usaste %@ para acceder. Ingresa la contraseña correspondiente.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "Aceptar";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancelar";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Atrás";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Siguiente";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Guardar";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Enviar";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Reenviar";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Correo electrónico";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Contraseña";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Nombre";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Cerrar";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Perfil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Seguridad";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Cuentas vinculadas";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Nombre";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Correo electrónico";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Agregar contraseña";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Cambiar contraseña";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Salir";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Borrar cuenta";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "¿Olvidaste la contraseña?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verifica tu identidad";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "¿Quieres borrar la cuenta?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. Debes acceder de nuevo para realizarla.";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. ¿Estás seguro de que quieres borrar tu cuenta?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Borrar";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Borrar cuenta";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Esta acción no se puede deshacer";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Desvincular";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Cuenta vinculada";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "¿Quieres desvincular la cuenta?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Ya no podrás acceder con tu cuenta";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Desvincular cuenta";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Para cambiar la dirección de correo electrónico asociada con tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Editar correo electrónico";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Editar nombre";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Para agregar una contraseña a tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Para cambiar la contraseña de tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Agregar contraseña";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Cambiar contraseña";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Correo electrónico";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Acceder con %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Ingresa tu nombre";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Nueva contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "¿Tienes problemas para acceder?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirmar correo electrónico";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Accediste";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "¿Tienes problemas para recibir correos electrónicos?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Prueba estas soluciones comunes: \n- Verifica si el correo electrónico se marcó como spam o se filtró.\n- Comprueba tu conexión a Internet.\n- Verifica que escribiste bien tu correo electrónico.\n- Verifica que tu bandeja de entrada no esté llena o revisa cualquier otro problema relacionado con la configuración de la bandeja de entrada.\nSi los pasos anteriores no funcionaron, reenvía el correo electrónico. Ten en cuenta que esta acción desactivará el vínculo en el correo electrónico anterior.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Se envió un correo electrónico de acceso con instrucciones adicionales a %@. Revisa tu bandeja de entrada para completar el proceso.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Se envió el correo electrónico de acceso";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Te damos la bienvenida";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Acceder con el correo electrónico";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "La dirección de correo electrónico es incorrecta.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "El tipo de cuenta no es compatible con esta app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Ya tienes una cuenta";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Ya usaste %@. Accede con %@ para continuar.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Acceder";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "El campo de contraseña no puede estar vacío.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "El correo electrónico y la contraseña que ingresaste no coinciden.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "La dirección de correo electrónico no coincide con una cuenta existente.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "La dirección de correo electrónico corresponde a una cuenta que se inhabilitó.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Ingresaste una contraseña incorrecta demasiadas veces. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "No se encuentra ningún proveedor de %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Los correos electrónicos no coinciden";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recuperar contraseña";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Recibe un correo electrónico con instrucciones para cambiar la contraseña.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Revisa tu correo electrónico";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Sigue las instrucciones que se enviaron a %@ para restablecer la contraseña.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Crear cuenta";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Nombre y apellido";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Condiciones del servicio";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Política de Privacidad";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Si continúas, indicas que aceptas nuestras %@ y %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Otra cuenta ya usa esta dirección de correo electrónico.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Las contraseñas seguras deben tener al menos 6 caracteres, además de incluir letras y números.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Recibimos demasiadas solicitudes de cuenta desde tu dirección IP. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Ya usaste %@ para acceder. Ingresa la contraseña correspondiente.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "Aceptar";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancelar";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Atrás";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Siguiente";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Guardar";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Enviar";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Reenviar";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Correo electrónico";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Contraseña";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Nombre";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Cerrar";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Perfil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Seguridad";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Cuentas vinculadas";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Nombre";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Correo electrónico";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Agregar contraseña";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Cambiar contraseña";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Salir";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Borrar cuenta";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "¿Olvidaste la contraseña?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verifica tu identidad";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "¿Quieres borrar la cuenta?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. Debes acceder de nuevo para realizarla.";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. ¿Estás seguro de que quieres borrar tu cuenta?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Borrar";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Borrar cuenta";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Esta acción no se puede deshacer";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Desvincular";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Cuenta vinculada";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "¿Quieres desvincular la cuenta?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Ya no podrás acceder con tu cuenta";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Desvincular cuenta";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Para cambiar la dirección de correo electrónico asociada con tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Editar correo electrónico";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Editar nombre";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Para agregar una contraseña a tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Para cambiar la contraseña de tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Agregar contraseña";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Cambiar contraseña";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Correo electrónico";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Acceder con %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Ingresa tu nombre";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Nueva contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "¿Tienes problemas para acceder?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirmar correo electrónico";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Accediste";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "¿Tienes problemas para recibir correos electrónicos?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Prueba estas soluciones comunes: \n- Verifica si el correo electrónico se marcó como spam o se filtró.\n- Comprueba tu conexión a Internet.\n- Verifica que escribiste bien tu correo electrónico.\n- Verifica que tu bandeja de entrada no esté llena o revisa cualquier otro problema relacionado con la configuración de la bandeja de entrada.\nSi los pasos anteriores no funcionaron, reenvía el correo electrónico. Ten en cuenta que esta acción desactivará el vínculo en el correo electrónico anterior.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Se envió un correo electrónico de acceso con instrucciones adicionales a %@. Revisa tu bandeja de entrada para completar el proceso.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Se envió el correo electrónico de acceso";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Te damos la bienvenida";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Acceder con el correo electrónico";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "La dirección de correo electrónico es incorrecta.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "El tipo de cuenta no es compatible con esta app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Ya tienes una cuenta";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Ya usaste %@. Accede con %@ para continuar.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Acceder";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "El campo de contraseña no puede estar vacío.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "El correo electrónico y la contraseña que ingresaste no coinciden.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "La dirección de correo electrónico no coincide con una cuenta existente.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "La dirección de correo electrónico corresponde a una cuenta que se inhabilitó.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Ingresaste una contraseña incorrecta demasiadas veces. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "No se encuentra ningún proveedor de %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Los correos electrónicos no coinciden";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recuperar contraseña";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Recibe un correo electrónico con instrucciones para cambiar la contraseña.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Revisa tu correo electrónico";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Sigue las instrucciones que se enviaron a %@ para restablecer la contraseña.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Crear cuenta";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Nombre y apellido";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Condiciones del servicio";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Política de Privacidad";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Si continúas, indicas que aceptas nuestras %@ y %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Otra cuenta ya usa esta dirección de correo electrónico.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Las contraseñas seguras deben tener al menos 6 caracteres, además de incluir letras y números.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Recibimos demasiadas solicitudes de cuenta desde tu dirección IP. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Ya usaste %@ para acceder. Ingresa la contraseña correspondiente.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "Aceptar";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancelar";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Atrás";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Siguiente";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Guardar";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Enviar";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Reenviar";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Correo electrónico";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Contraseña";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Nombre";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Cerrar";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Perfil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Seguridad";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Cuentas vinculadas";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Nombre";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Correo electrónico";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Agregar contraseña";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Cambiar contraseña";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Salir";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Borrar cuenta";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "¿Olvidaste la contraseña?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verifica tu identidad";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "¿Quieres borrar la cuenta?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. Debes acceder de nuevo para realizarla.";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. ¿Estás seguro de que quieres borrar tu cuenta?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Borrar";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Borrar cuenta";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Esta acción no se puede deshacer";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Desvincular";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Cuenta vinculada";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "¿Quieres desvincular la cuenta?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Ya no podrás acceder con tu cuenta";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Desvincular cuenta";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Para cambiar la dirección de correo electrónico asociada con tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Editar correo electrónico";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Editar nombre";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Para agregar una contraseña a tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Para cambiar la contraseña de tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Agregar contraseña";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Cambiar contraseña";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Correo electrónico";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Acceder con %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Ingresa tu nombre";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Nueva contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "¿Tienes problemas para acceder?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirmar correo electrónico";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Accediste";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "¿Tienes problemas para recibir correos electrónicos?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Prueba estas soluciones comunes: \n- Verifica si el correo electrónico se marcó como spam o se filtró.\n- Comprueba tu conexión a Internet.\n- Verifica que escribiste bien tu correo electrónico.\n- Verifica que tu bandeja de entrada no esté llena o revisa cualquier otro problema relacionado con la configuración de la bandeja de entrada.\nSi los pasos anteriores no funcionaron, reenvía el correo electrónico. Ten en cuenta que esta acción desactivará el vínculo en el correo electrónico anterior.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Se envió un correo electrónico de acceso con instrucciones adicionales a %@. Revisa tu bandeja de entrada para completar el proceso.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Se envió el correo electrónico de acceso";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Te damos la bienvenida";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Acceder con el correo electrónico";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "La dirección de correo electrónico es incorrecta.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "El tipo de cuenta no es compatible con esta app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Ya tienes una cuenta";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Ya usaste %@. Accede con %@ para continuar.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Acceder";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "El campo de contraseña no puede estar vacío.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "El correo electrónico y la contraseña que ingresaste no coinciden.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "La dirección de correo electrónico no coincide con una cuenta existente.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "La dirección de correo electrónico corresponde a una cuenta que se inhabilitó.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Ingresaste una contraseña incorrecta demasiadas veces. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "No se encuentra ningún proveedor de %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Los correos electrónicos no coinciden";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recuperar contraseña";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Recibe un correo electrónico con instrucciones para cambiar la contraseña.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Revisa tu correo electrónico";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Sigue las instrucciones que se enviaron a %@ para restablecer la contraseña.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Crear cuenta";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Nombre y apellido";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Condiciones del servicio";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Política de Privacidad";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Si continúas, indicas que aceptas nuestras %@ y %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Otra cuenta ya usa esta dirección de correo electrónico.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Las contraseñas seguras deben tener al menos 6 caracteres, además de incluir letras y números.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Recibimos demasiadas solicitudes de cuenta desde tu dirección IP. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Ya usaste %@ para acceder. Ingresa la contraseña correspondiente.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "Aceptar";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancelar";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Atrás";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Siguiente";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Guardar";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Enviar";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Reenviar";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Correo electrónico";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Contraseña";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Nombre";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Cerrar";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Perfil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Seguridad";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Cuentas vinculadas";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Nombre";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Correo electrónico";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Agregar contraseña";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Cambiar contraseña";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Salir";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Borrar cuenta";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "¿Olvidaste la contraseña?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verifica tu identidad";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "¿Quieres borrar la cuenta?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. Debes acceder de nuevo para realizarla.";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. ¿Estás seguro de que quieres borrar tu cuenta?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Borrar";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Borrar cuenta";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Esta acción no se puede deshacer";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Desvincular";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Cuenta vinculada";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "¿Quieres desvincular la cuenta?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Ya no podrás acceder con tu cuenta";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Desvincular cuenta";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Para cambiar la dirección de correo electrónico asociada con tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Editar correo electrónico";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Editar nombre";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Para agregar una contraseña a tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Para cambiar la contraseña de tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Agregar contraseña";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Cambiar contraseña";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Correo electrónico";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Acceder con %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Ingresa tu nombre";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Nueva contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "¿Tienes problemas para acceder?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirmar correo electrónico";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Accediste";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "¿Tienes problemas para recibir correos electrónicos?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Prueba estas soluciones comunes: \n- Verifica si el correo electrónico se marcó como spam o se filtró.\n- Comprueba tu conexión a Internet.\n- Verifica que escribiste bien tu correo electrónico.\n- Verifica que tu bandeja de entrada no esté llena o revisa cualquier otro problema relacionado con la configuración de la bandeja de entrada.\nSi los pasos anteriores no funcionaron, reenvía el correo electrónico. Ten en cuenta que esta acción desactivará el vínculo en el correo electrónico anterior.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Se envió un correo electrónico de acceso con instrucciones adicionales a %@. Revisa tu bandeja de entrada para completar el proceso.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Se envió el correo electrónico de acceso";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Te damos la bienvenida";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Acceder con el correo electrónico";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "La dirección de correo electrónico es incorrecta.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "El tipo de cuenta no es compatible con esta app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Ya tienes una cuenta";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Ya usaste %@. Accede con %@ para continuar.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Acceder";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "El campo de contraseña no puede estar vacío.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "El correo electrónico y la contraseña que ingresaste no coinciden.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "La dirección de correo electrónico no coincide con una cuenta existente.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "La dirección de correo electrónico corresponde a una cuenta que se inhabilitó.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Ingresaste una contraseña incorrecta demasiadas veces. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "No se encuentra ningún proveedor de %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Los correos electrónicos no coinciden";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recuperar contraseña";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Recibe un correo electrónico con instrucciones para cambiar la contraseña.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Revisa tu correo electrónico";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Sigue las instrucciones que se enviaron a %@ para restablecer la contraseña.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Crear cuenta";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Nombre y apellido";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Condiciones del servicio";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Política de Privacidad";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Si continúas, indicas que aceptas nuestras %@ y %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Otra cuenta ya usa esta dirección de correo electrónico.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Las contraseñas seguras deben tener al menos 6 caracteres, además de incluir letras y números.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Recibimos demasiadas solicitudes de cuenta desde tu dirección IP. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Ya usaste %@ para acceder. Ingresa la contraseña correspondiente.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "Aceptar";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancelar";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Atrás";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Siguiente";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Guardar";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Enviar";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Reenviar";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Correo electrónico";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Contraseña";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Nombre";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Cerrar";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Perfil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Seguridad";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Cuentas vinculadas";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Nombre";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Correo electrónico";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Agregar contraseña";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Cambiar contraseña";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Salir";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Borrar cuenta";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "¿Olvidaste la contraseña?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verifica tu identidad";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "¿Quieres borrar la cuenta?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. Debes acceder de nuevo para realizarla.";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. ¿Estás seguro de que quieres borrar tu cuenta?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Borrar";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Borrar cuenta";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Esta acción no se puede deshacer";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Desvincular";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Cuenta vinculada";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "¿Quieres desvincular la cuenta?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Ya no podrás acceder con tu cuenta";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Desvincular cuenta";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Para cambiar la dirección de correo electrónico asociada con tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Editar correo electrónico";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Editar nombre";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Para agregar una contraseña a tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Para cambiar la contraseña de tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Agregar contraseña";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Cambiar contraseña";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Correo electrónico";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Acceder con %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Ingresa tu nombre";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Nueva contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "¿Tienes problemas para acceder?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirmar correo electrónico";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Accediste";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "¿Tienes problemas para recibir correos electrónicos?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Prueba estas soluciones comunes: \n- Verifica si el correo electrónico se marcó como spam o se filtró.\n- Comprueba tu conexión a Internet.\n- Verifica que escribiste bien tu correo electrónico.\n- Verifica que tu bandeja de entrada no esté llena o revisa cualquier otro problema relacionado con la configuración de la bandeja de entrada.\nSi los pasos anteriores no funcionaron, reenvía el correo electrónico. Ten en cuenta que esta acción desactivará el vínculo en el correo electrónico anterior.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Se envió un correo electrónico de acceso con instrucciones adicionales a %@. Revisa tu bandeja de entrada para completar el proceso.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Se envió el correo electrónico de acceso";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Te damos la bienvenida";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Acceder con el correo electrónico";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "La dirección de correo electrónico es incorrecta.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "El tipo de cuenta no es compatible con esta app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Ya tienes una cuenta";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Ya usaste %@. Accede con %@ para continuar.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Acceder";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "El campo de contraseña no puede estar vacío.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "El correo electrónico y la contraseña que ingresaste no coinciden.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "La dirección de correo electrónico no coincide con una cuenta existente.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "La dirección de correo electrónico corresponde a una cuenta que se inhabilitó.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Ingresaste una contraseña incorrecta demasiadas veces. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "No se encuentra ningún proveedor de %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Los correos electrónicos no coinciden";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recuperar contraseña";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Recibe un correo electrónico con instrucciones para cambiar la contraseña.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Revisa tu correo electrónico";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Sigue las instrucciones que se enviaron a %@ para restablecer la contraseña.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Crear cuenta";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Nombre y apellido";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Condiciones del servicio";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Política de Privacidad";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Si continúas, indicas que aceptas nuestras %@ y %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Otra cuenta ya usa esta dirección de correo electrónico.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Las contraseñas seguras deben tener al menos 6 caracteres, además de incluir letras y números.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Recibimos demasiadas solicitudes de cuenta desde tu dirección IP. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Ya usaste %@ para acceder. Ingresa la contraseña correspondiente.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "Aceptar";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancelar";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Atrás";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Siguiente";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Guardar";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Enviar";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Reenviar";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Correo electrónico";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Contraseña";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Nombre";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Cerrar";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Perfil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Seguridad";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Cuentas vinculadas";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Nombre";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Correo electrónico";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Agregar contraseña";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Cambiar contraseña";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Salir";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Borrar cuenta";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "¿Olvidaste la contraseña?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verifica tu identidad";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "¿Quieres borrar la cuenta?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. Debes acceder de nuevo para realizarla.";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. ¿Estás seguro de que quieres borrar tu cuenta?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Borrar";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Borrar cuenta";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Esta acción no se puede deshacer";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Desvincular";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Cuenta vinculada";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "¿Quieres desvincular la cuenta?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Ya no podrás acceder con tu cuenta";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Desvincular cuenta";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Para cambiar la dirección de correo electrónico asociada con tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Editar correo electrónico";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Editar nombre";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Para agregar una contraseña a tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Para cambiar la contraseña de tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Agregar contraseña";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Cambiar contraseña";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Correo electrónico";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Acceder con %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Ingresa tu nombre";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Nueva contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "¿Tienes problemas para acceder?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirmar correo electrónico";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Accediste";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "¿Tienes problemas para recibir correos electrónicos?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Prueba estas soluciones comunes: \n- Verifica si el correo electrónico se marcó como spam o se filtró.\n- Comprueba tu conexión a Internet.\n- Verifica que escribiste bien tu correo electrónico.\n- Verifica que tu bandeja de entrada no esté llena o revisa cualquier otro problema relacionado con la configuración de la bandeja de entrada.\nSi los pasos anteriores no funcionaron, reenvía el correo electrónico. Ten en cuenta que esta acción desactivará el vínculo en el correo electrónico anterior.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Se envió un correo electrónico de acceso con instrucciones adicionales a %@. Revisa tu bandeja de entrada para completar el proceso.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Se envió el correo electrónico de acceso";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Te damos la bienvenida";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Acceder con el correo electrónico";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "La dirección de correo electrónico es incorrecta.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "El tipo de cuenta no es compatible con esta app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Ya tienes una cuenta";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Ya usaste %@. Accede con %@ para continuar.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Acceder";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "El campo de contraseña no puede estar vacío.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "El correo electrónico y la contraseña que ingresaste no coinciden.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "La dirección de correo electrónico no coincide con una cuenta existente.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "La dirección de correo electrónico corresponde a una cuenta que se inhabilitó.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Ingresaste una contraseña incorrecta demasiadas veces. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "No se encuentra ningún proveedor de %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Los correos electrónicos no coinciden";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recuperar contraseña";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Recibe un correo electrónico con instrucciones para cambiar la contraseña.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Revisa tu correo electrónico";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Sigue las instrucciones que se enviaron a %@ para restablecer la contraseña.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Crear cuenta";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Nombre y apellido";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Condiciones del servicio";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Política de Privacidad";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Si continúas, indicas que aceptas nuestras %@ y %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Otra cuenta ya usa esta dirección de correo electrónico.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Las contraseñas seguras deben tener al menos 6 caracteres, además de incluir letras y números.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Recibimos demasiadas solicitudes de cuenta desde tu dirección IP. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Ya usaste %@ para acceder. Ingresa la contraseña correspondiente.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "Aceptar";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancelar";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Atrás";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Siguiente";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Guardar";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Enviar";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Reenviar";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Correo electrónico";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Contraseña";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Nombre";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Cerrar";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Perfil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Seguridad";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Cuentas vinculadas";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Nombre";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Correo electrónico";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Agregar contraseña";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Cambiar contraseña";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Salir";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Borrar cuenta";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "¿Olvidaste la contraseña?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verifica tu identidad";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "¿Quieres borrar la cuenta?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. Debes acceder de nuevo para realizarla.";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. ¿Estás seguro de que quieres borrar tu cuenta?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Borrar";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Borrar cuenta";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Esta acción no se puede deshacer";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Desvincular";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Cuenta vinculada";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "¿Quieres desvincular la cuenta?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Ya no podrás acceder con tu cuenta";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Desvincular cuenta";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Para cambiar la dirección de correo electrónico asociada con tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Editar correo electrónico";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Editar nombre";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Para agregar una contraseña a tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Para cambiar la contraseña de tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Agregar contraseña";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Cambiar contraseña";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Correo electrónico";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Acceder con %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Ingresa tu nombre";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Nueva contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "¿Tienes problemas para acceder?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirmar correo electrónico";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Accediste";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "¿Tienes problemas para recibir correos electrónicos?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Prueba estas soluciones comunes: \n- Verifica si el correo electrónico se marcó como spam o se filtró.\n- Comprueba tu conexión a Internet.\n- Verifica que escribiste bien tu correo electrónico.\n- Verifica que tu bandeja de entrada no esté llena o revisa cualquier otro problema relacionado con la configuración de la bandeja de entrada.\nSi los pasos anteriores no funcionaron, reenvía el correo electrónico. Ten en cuenta que esta acción desactivará el vínculo en el correo electrónico anterior.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Se envió un correo electrónico de acceso con instrucciones adicionales a %@. Revisa tu bandeja de entrada para completar el proceso.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Se envió el correo electrónico de acceso";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Te damos la bienvenida";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Acceder con el correo electrónico";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "La dirección de correo electrónico es incorrecta.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "El tipo de cuenta no es compatible con esta app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Ya tienes una cuenta";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Ya usaste %@. Accede con %@ para continuar.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Acceder";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "El campo de contraseña no puede estar vacío.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "El correo electrónico y la contraseña que ingresaste no coinciden.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "La dirección de correo electrónico no coincide con una cuenta existente.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "La dirección de correo electrónico corresponde a una cuenta que se inhabilitó.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Ingresaste una contraseña incorrecta demasiadas veces. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "No se encuentra ningún proveedor de %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Los correos electrónicos no coinciden";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recuperar contraseña";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Recibe un correo electrónico con instrucciones para cambiar la contraseña.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Revisa tu correo electrónico";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Sigue las instrucciones que se enviaron a %@ para restablecer la contraseña.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Crear cuenta";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Nombre y apellido";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Condiciones del servicio";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Política de Privacidad";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Si continúas, indicas que aceptas nuestras %@ y %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Otra cuenta ya usa esta dirección de correo electrónico.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Las contraseñas seguras deben tener al menos 6 caracteres, además de incluir letras y números.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Recibimos demasiadas solicitudes de cuenta desde tu dirección IP. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Ya usaste %@ para acceder. Ingresa la contraseña correspondiente.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "Aceptar";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancelar";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Atrás";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Siguiente";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Guardar";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Enviar";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Reenviar";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Correo electrónico";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Contraseña";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Nombre";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Cerrar";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Perfil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Seguridad";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Cuentas vinculadas";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Nombre";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Correo electrónico";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Agregar contraseña";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Cambiar contraseña";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Salir";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Borrar cuenta";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "¿Olvidaste la contraseña?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verifica tu identidad";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "¿Quieres borrar la cuenta?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. Debes acceder de nuevo para realizarla.";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. ¿Estás seguro de que quieres borrar tu cuenta?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Borrar";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Borrar cuenta";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Esta acción no se puede deshacer";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Desvincular";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Cuenta vinculada";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "¿Quieres desvincular la cuenta?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Ya no podrás acceder con tu cuenta";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Desvincular cuenta";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Para cambiar la dirección de correo electrónico asociada con tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Editar correo electrónico";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Editar nombre";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Para agregar una contraseña a tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Para cambiar la contraseña de tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Agregar contraseña";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Cambiar contraseña";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Correo electrónico";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Acceder con %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Ingresa tu nombre";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Nueva contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "¿Tienes problemas para acceder?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirmar correo electrónico";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Accediste";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "¿Tienes problemas para recibir correos electrónicos?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Prueba estas soluciones comunes: \n- Verifica si el correo electrónico se marcó como spam o se filtró.\n- Comprueba tu conexión a Internet.\n- Verifica que escribiste bien tu correo electrónico.\n- Verifica que tu bandeja de entrada no esté llena o revisa cualquier otro problema relacionado con la configuración de la bandeja de entrada.\nSi los pasos anteriores no funcionaron, reenvía el correo electrónico. Ten en cuenta que esta acción desactivará el vínculo en el correo electrónico anterior.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Se envió un correo electrónico de acceso con instrucciones adicionales a %@. Revisa tu bandeja de entrada para completar el proceso.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Se envió el correo electrónico de acceso";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Te damos la bienvenida";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Acceder con el correo electrónico";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "La dirección de correo electrónico es incorrecta.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "El tipo de cuenta no es compatible con esta app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Ya tienes una cuenta";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Ya usaste %@. Accede con %@ para continuar.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Acceder";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "El campo de contraseña no puede estar vacío.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "El correo electrónico y la contraseña que ingresaste no coinciden.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "La dirección de correo electrónico no coincide con una cuenta existente.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "La dirección de correo electrónico corresponde a una cuenta que se inhabilitó.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Ingresaste una contraseña incorrecta demasiadas veces. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "No se encuentra ningún proveedor de %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Los correos electrónicos no coinciden";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recuperar contraseña";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Recibe un correo electrónico con instrucciones para cambiar la contraseña.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Revisa tu correo electrónico";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Sigue las instrucciones que se enviaron a %@ para restablecer la contraseña.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Crear cuenta";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Nombre y apellido";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Condiciones del servicio";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Política de Privacidad";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Si continúas, indicas que aceptas nuestras %@ y %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Otra cuenta ya usa esta dirección de correo electrónico.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Las contraseñas seguras deben tener al menos 6 caracteres, además de incluir letras y números.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Recibimos demasiadas solicitudes de cuenta desde tu dirección IP. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Ya usaste %@ para acceder. Ingresa la contraseña correspondiente.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "Aceptar";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancelar";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Atrás";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Siguiente";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Guardar";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Enviar";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Reenviar";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Correo electrónico";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Contraseña";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Nombre";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Cerrar";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Perfil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Seguridad";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Cuentas vinculadas";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Nombre";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Correo electrónico";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Agregar contraseña";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Cambiar contraseña";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Salir";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Borrar cuenta";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "¿Olvidaste la contraseña?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verifica tu identidad";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "¿Quieres borrar la cuenta?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. Debes acceder de nuevo para realizarla.";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. ¿Estás seguro de que quieres borrar tu cuenta?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Borrar";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Borrar cuenta";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Esta acción no se puede deshacer";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Desvincular";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Cuenta vinculada";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "¿Quieres desvincular la cuenta?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Ya no podrás acceder con tu cuenta";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Desvincular cuenta";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Para cambiar la dirección de correo electrónico asociada con tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Editar correo electrónico";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Editar nombre";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Para agregar una contraseña a tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Para cambiar la contraseña de tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Agregar contraseña";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Cambiar contraseña";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Correo electrónico";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Acceder con %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Ingresa tu nombre";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Nueva contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "¿Tienes problemas para acceder?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirmar correo electrónico";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Accediste";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "¿Tienes problemas para recibir correos electrónicos?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Prueba estas soluciones comunes: \n- Verifica si el correo electrónico se marcó como spam o se filtró.\n- Comprueba tu conexión a Internet.\n- Verifica que escribiste bien tu correo electrónico.\n- Verifica que tu bandeja de entrada no esté llena o revisa cualquier otro problema relacionado con la configuración de la bandeja de entrada.\nSi los pasos anteriores no funcionaron, reenvía el correo electrónico. Ten en cuenta que esta acción desactivará el vínculo en el correo electrónico anterior.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Se envió un correo electrónico de acceso con instrucciones adicionales a %@. Revisa tu bandeja de entrada para completar el proceso.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Se envió el correo electrónico de acceso";
|
||||
@@ -0,0 +1,269 @@
|
||||
/* Title for auth picker screen. */
|
||||
"AuthPickerTitle" = "Te damos la bienvenida";
|
||||
|
||||
/* Sign in with email button label. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"SignInWithEmail" = "Acceder con el correo electrónico";
|
||||
|
||||
/* Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EnterYourEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"InvalidEmailError" = "La dirección de correo electrónico es incorrecta.";
|
||||
|
||||
/* Error message displayed when the app cannot authenticate user's account. */
|
||||
"CannotAuthenticateError" = "El tipo de cuenta no es compatible con esta app";
|
||||
|
||||
/* Title of an alert shown to an existing user coming back to the app. */
|
||||
"ExistingAccountTitle" = "Ya tienes una cuenta";
|
||||
|
||||
/* Alert message to let user know what identity provider (second placeholder, ex. Google) was used previously for the email address (first placeholder). */
|
||||
"ProviderUsedPreviouslyMessage" = "Ya usaste %@. Accede con %@ para continuar.";
|
||||
|
||||
/* Title for sign in screen and sign in button. */
|
||||
"SignInTitle" = "Acceder";
|
||||
|
||||
/* Password text field placeholder. */
|
||||
"EnterYourPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Error message displayed when user enters an empty password. */
|
||||
"InvalidPasswordError" = "El campo de contraseña no puede estar vacío.";
|
||||
|
||||
/* Error message displayed when the email and password don't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"WrongPasswordError" = "El correo electrónico y la contraseña que ingresaste no coinciden.";
|
||||
|
||||
/* Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UserNotFoundError" = "La dirección de correo electrónico no coincide con una cuenta existente.";
|
||||
|
||||
/* Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AccountDisabledError" = "La dirección de correo electrónico corresponde a una cuenta que se inhabilitó.";
|
||||
|
||||
/* Error message displayed after user trying to sign in too many times. */
|
||||
"SignInTooManyTimesError" = "Ingresaste una contraseña incorrecta demasiadas veces. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Error message displayed when FUIAuth is not configured with third party provider. Parameter is value of provider (e g Google, Facebook etc) */
|
||||
"CantFindProvider" = "No se encuentra ningún proveedor de %@.";
|
||||
|
||||
/* Error message displayed when after re-authorization current user's email and re-authorized user's email doesn't match. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailsDontMatch" = "Los correos electrónicos no coinciden";
|
||||
|
||||
/* Title for password recovery screen. */
|
||||
"PasswordRecoveryTitle" = "Recuperar contraseña";
|
||||
|
||||
/* Explanation on how the password of an account can be recovered. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryMessage" = "Recibe un correo electrónico con instrucciones para cambiar la contraseña.";
|
||||
|
||||
/* Title of a message displayed when the email for password recovery has been sent. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PasswordRecoveryEmailSentTitle" = "Revisa tu correo electrónico";
|
||||
|
||||
/* Message displayed when the email for password recovery has been sent. */
|
||||
"PasswordRecoveryEmailSentMessage" = "Sigue las instrucciones que se enviaron a %@ para restablecer la contraseña.";
|
||||
|
||||
/* Title for sign up screen. */
|
||||
"SignUpTitle" = "Crear cuenta";
|
||||
|
||||
/* Name text field placeholder. */
|
||||
"FirstAndLastName" = "Nombre y apellido";
|
||||
|
||||
/* Placeholder for the password text field in a sign up form. */
|
||||
"ChoosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Text linked to a web page with the Terms of Service content. */
|
||||
"TermsOfService" = "Condiciones del servicio";
|
||||
|
||||
/* Text linked to a web page with the Privacy Policy content. */
|
||||
"PrivacyPolicy" = "Política de Privacidad";
|
||||
|
||||
/* A message displayed when the first log in screen is displayed. The first placeholder is the terms of service agreement link, the second place holder is the privacy policy agreement link. */
|
||||
"TermsOfServiceMessage" = "Si continúas, indicas que aceptas nuestras %@ y %@.";
|
||||
|
||||
/* Error message displayed when the email address is already in use. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EmailAlreadyInUseError" = "Otra cuenta ya usa esta dirección de correo electrónico.";
|
||||
|
||||
/* Error message displayed when the password is too weak. */
|
||||
"WeakPasswordError" = "Las contraseñas seguras deben tener al menos 6 caracteres, además de incluir letras y números.";
|
||||
|
||||
/* Error message displayed when many accounts have been created from same IP address. */
|
||||
"SignUpTooManyTimesError" = "Recibimos demasiadas solicitudes de cuenta desde tu dirección IP. Vuelve a intentarlo en unos minutos.";
|
||||
|
||||
/* Message to explain to the user that password is needed for an account with this email address. */
|
||||
"PasswordVerificationMessage" = "Ya usaste %@ para acceder. Ingresa la contraseña correspondiente.";
|
||||
|
||||
/* OK button title. */
|
||||
"OK" = "Aceptar";
|
||||
|
||||
/* Cancel button title. */
|
||||
"Cancel" = "Cancelar";
|
||||
|
||||
/* Back button title. */
|
||||
"Back" = "Atrás";
|
||||
|
||||
/* Next button title. */
|
||||
"Next" = "Siguiente";
|
||||
|
||||
/* Save button title. */
|
||||
"Save" = "Guardar";
|
||||
|
||||
/* Send button title. */
|
||||
"Send" = "Enviar";
|
||||
|
||||
/* Resend button title. */
|
||||
"Resend" = "Reenviar";
|
||||
|
||||
/* Label next to a email text field. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"Email" = "Correo electrónico";
|
||||
|
||||
/* Label next to a password text field. */
|
||||
"Password" = "Contraseña";
|
||||
|
||||
/* Label next to a name text field. */
|
||||
"Name" = "Nombre";
|
||||
|
||||
/* Alert title Error. */
|
||||
"Error" = "Error";
|
||||
|
||||
/* Alert button title Close. */
|
||||
"Close" = "Cerrar";
|
||||
|
||||
/* Account Settings section title Profile. */
|
||||
"AS_SectionProfile" = "Perfil";
|
||||
|
||||
/* Account Settings section title Security. */
|
||||
"AS_SectionSecurity" = "Seguridad";
|
||||
|
||||
/* Account Settings section title Linked Accounts. */
|
||||
"AS_SectionLinkedAccounts" = "Cuentas vinculadas";
|
||||
|
||||
/* Account Settings cell title Name. */
|
||||
"AS_Name" = "Nombre";
|
||||
|
||||
/* Account Settings cell title Email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"AS_Email" = "Correo electrónico";
|
||||
|
||||
/* Account Settings cell title Add Password. */
|
||||
"AS_AddPassword" = "Agregar contraseña";
|
||||
|
||||
/* Account Settings cell title Change Password. */
|
||||
"AS_ChangePassword" = "Cambiar contraseña";
|
||||
|
||||
/* Account Settings cell title Sign Out. */
|
||||
"AS_SignOut" = "Salir";
|
||||
|
||||
/* Account Settings cell title Delete Account. */
|
||||
"AS_DeleteAccount" = "Borrar cuenta";
|
||||
|
||||
/* Button text for 'Forgot Password' action. */
|
||||
"ForgotPassword" = "¿Olvidaste la contraseña?";
|
||||
|
||||
/* Alert message title show for re-authorization. */
|
||||
"VerifyItsYou" = "Verifica tu identidad";
|
||||
|
||||
/* Alert message title shown to confirm account deletion action. */
|
||||
"DeleteAccountConfirmationTitle" = "¿Quieres borrar la cuenta?";
|
||||
|
||||
/* Alert message body shown to confirm account deletion action. */
|
||||
"DeleteAccountBody" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. Debes acceder de nuevo para realizarla.";
|
||||
|
||||
/* Explanation message shown before deleting account. */
|
||||
"DeleteAccountConfirmationMessage" = "Esta acción borrará todos los datos asociados con tu cuenta y no se puede deshacer. ¿Estás seguro de que quieres borrar tu cuenta?";
|
||||
|
||||
/* Text of Delete action button. */
|
||||
"Delete" = "Borrar";
|
||||
|
||||
/* Title of Controller shown before deleting account */
|
||||
"DeleteAccountControllerTitle" = "Borrar cuenta";
|
||||
|
||||
/* Alert message shown before account deletion. */
|
||||
"ActionCantBeUndone" = "Esta acción no se puede deshacer";
|
||||
|
||||
/* Button title for unlinking account action. */
|
||||
"UnlinkAction" = "Desvincular";
|
||||
|
||||
/* Controller title shown for unlinking account action. */
|
||||
"UnlinkTitle" = "Cuenta vinculada";
|
||||
|
||||
/* Alert title shown before unlinking action. */
|
||||
"UnlinkConfirmationTitle" = "¿Quieres desvincular la cuenta?";
|
||||
|
||||
/* Alert message shown before unlinking action. */
|
||||
"UnlinkConfirmationMessage" = "Ya no podrás acceder con tu cuenta";
|
||||
|
||||
/* Alert action title shown before unlinking action. */
|
||||
"UnlinkConfirmationActionTitle" = "Desvincular cuenta";
|
||||
|
||||
/* Alert action message shown before updating email action. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"UpdateEmailAlertMessage" = "Para cambiar la dirección de correo electrónico asociada con tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert action message shown before confirmation of updating email action. */
|
||||
"UpdateEmailVerificationAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when editing account email. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"EditEmailTitle" = "Editar correo electrónico";
|
||||
|
||||
/* Controller title shown when editing account name. */
|
||||
"EditNameTitle" = "Editar nombre";
|
||||
|
||||
/* Alert message shown when adding account password. */
|
||||
"AddPasswordAlertMessage" = "Para agregar una contraseña a tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when editing account password. */
|
||||
"EditPasswordAlertMessage" = "Para cambiar la contraseña de tu cuenta, debes acceder de nuevo.";
|
||||
|
||||
/* Alert message shown when re-authenticating before editing account password. */
|
||||
"ReauthenticateEditPasswordAlertMessage" = "Para cambiar tu contraseña, primero debes ingresar la contraseña actual.";
|
||||
|
||||
/* Controller title shown when adding password to account. */
|
||||
"AddPasswordTitle" = "Agregar contraseña";
|
||||
|
||||
/* Controller title shown when editing password to account. */
|
||||
"EditPasswordTitle" = "Cambiar contraseña";
|
||||
|
||||
/* Title of Password/Email provider. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"ProviderTitlePassword" = "Correo electrónico";
|
||||
|
||||
/* Title of Google provider */
|
||||
"ProviderTitleGoogle" = "Google";
|
||||
|
||||
/* Title of Facebook provider */
|
||||
"ProviderTitleFacebook" = "Facebook";
|
||||
|
||||
/* Title of Twitter provider */
|
||||
"ProviderTitleTwitter" = "Twitter";
|
||||
|
||||
/* Sign in with provider button label. */
|
||||
"SignInWithProvider" = "Acceder con %@";
|
||||
|
||||
/* Placeholder of input cell when user changes name. */
|
||||
"PlaceholderEnterName" = "Ingresa tu nombre";
|
||||
|
||||
/* Placeholder of input cell when user changes name. Use short/abbreviated translation for 'email' which is less than 15 chars. */
|
||||
"PlaceholderEnterEmail" = "Ingresa tu correo electrónico";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderEnterPassword" = "Ingresa la contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user confirms password. */
|
||||
"PlaceholderNewPassword" = "Nueva contraseña";
|
||||
|
||||
/* Placeholder of secret input cell when user changes password. */
|
||||
"PlaceholderChosePassword" = "Elegir contraseña";
|
||||
|
||||
/* Title of forgot password button. */
|
||||
"ForgotPasswordTitle" = "¿Tienes problemas para acceder?";
|
||||
|
||||
/* Title of confirm email label. */
|
||||
"ConfirmEmail" = "Confirmar correo electrónico";
|
||||
|
||||
/* Title of successfully signed in label. */
|
||||
"SignedIn" = "Accediste";
|
||||
|
||||
/* Title used in trouble getting email alert view. */
|
||||
"TroubleGettingEmailTitle" = "¿Tienes problemas para recibir correos electrónicos?";
|
||||
|
||||
/* Alert message displayed when user having trouble getting email. */
|
||||
"TroubleGettingEmailMessage" = "Prueba estas soluciones comunes: \n- Verifica si el correo electrónico se marcó como spam o se filtró.\n- Comprueba tu conexión a Internet.\n- Verifica que escribiste bien tu correo electrónico.\n- Verifica que tu bandeja de entrada no esté llena o revisa cualquier otro problema relacionado con la configuración de la bandeja de entrada.\nSi los pasos anteriores no funcionaron, reenvía el correo electrónico. Ten en cuenta que esta acción desactivará el vínculo en el correo electrónico anterior.";
|
||||
|
||||
/* Message displayed after email is sent. The placeholder is the email address that the email is sent to. */
|
||||
"EmailSentConfirmationMessage" = "Se envió un correo electrónico de acceso con instrucciones adicionales a %@. Revisa tu bandeja de entrada para completar el proceso.";
|
||||
|
||||
/* Message displayed after the email of sign-in link is sent. */
|
||||
"SignInEmailSent" = "Se envió el correo electrónico de acceso";
|
||||