Commit fb41e828 authored by Yuwei Huang's avatar Yuwei Huang Committed by Commit Bot

[CRD iOS] Add more texts to be localized for the client

This CL moves some hardcoded texts into remoting_string.grd so that
they can be localized.

Bug: 747091
Change-Id: Id9f57bd7d48338635d2c7d0567df1b8e24a83b0b
Reviewed-on: https://chromium-review.googlesource.com/578949
Commit-Queue: Yuwei Huang <yuweih@chromium.org>
Reviewed-by: default avatarScott Nichols <nicholss@chromium.org>
Cr-Commit-Position: refs/heads/master@{#488479}
parent bade4480
......@@ -8,10 +8,6 @@
#import "remoting/ios/app/app_delegate.h"
#include "base/logging.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/resource/resource_bundle.h"
#import "remoting/ios/app/app_view_controller.h"
#import "remoting/ios/app/first_launch_view_presenter.h"
#import "remoting/ios/app/help_and_feedback.h"
......@@ -21,6 +17,11 @@
#import "remoting/ios/app/web_view_controller.h"
#import "remoting/ios/facade/remoting_oauth_authentication.h"
#include "base/logging.h"
#include "remoting/base/string_resources.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/resource/resource_bundle.h"
@interface AppDelegate ()<FirstLaunchViewControllerDelegate> {
AppViewController* _appViewController;
FirstLaunchViewPresenter* _firstLaunchViewPresenter;
......@@ -116,7 +117,8 @@ static NSString* const kFAQsUrl =
- (void)navigateToFAQs:(UINavigationController*)navigationController {
WebViewController* viewController =
[[WebViewController alloc] initWithUrl:kFAQsUrl title:@"FAQs"];
[[WebViewController alloc] initWithUrl:kFAQsUrl
title:l10n_util::GetNSString(IDS_FAQS)];
[navigationController pushViewController:viewController animated:YES];
}
......
......@@ -24,7 +24,9 @@
#import "remoting/ios/session/remoting_client.h"
#include "base/strings/sys_string_conversions.h"
#include "remoting/base/string_resources.h"
#include "remoting/protocol/client_authentication_config.h"
#include "ui/base/l10n/l10n_util.h"
static const CGFloat kIconRadius = 30.f;
static const CGFloat kActivityIndicatorStrokeWidth = 3.f;
......@@ -78,7 +80,8 @@ static const CGFloat kKeyboardAnimationTime = 0.3;
// TODO(yuweih): This logic may be reused by other views.
UIButton* cancelButton = [UIButton buttonWithType:UIButtonTypeSystem];
[cancelButton setTitle:@"CANCEL" forState:UIControlStateNormal];
[cancelButton setTitle:l10n_util::GetNSString(IDS_CANCEL).uppercaseString
forState:UIControlStateNormal];
[cancelButton
setImage:[RemotingTheme
.backIcon imageFlippedForRightToLeftLayoutDirection]
......@@ -408,7 +411,7 @@ static const CGFloat kKeyboardAnimationTime = 0.3;
- (void)showConnectingState {
[_pinEntryView endEditing:YES];
_statusLabel.text =
[NSString stringWithFormat:@"Connecting to %@", _remoteHostName];
[self stringWithHostNameForId:IDS_CONNECTING_TO_HOST_MESSAGE];
_pinEntryView.hidden = YES;
......@@ -439,7 +442,7 @@ static const CGFloat kKeyboardAnimationTime = 0.3;
- (void)showConnectedState {
[_pinEntryView endEditing:YES];
_statusLabel.text =
[NSString stringWithFormat:@"Connected to %@", _remoteHostName];
[self stringWithHostNameForId:IDS_CONNECTED_TO_HOST_MESSAGE];
_pinEntryView.hidden = YES;
[_pinEntryView clearPinEntry];
......@@ -463,7 +466,7 @@ static const CGFloat kKeyboardAnimationTime = 0.3;
- (void)showReconnect {
_statusLabel.text =
[NSString stringWithFormat:@"Connection closed for %@", _remoteHostName];
[self stringWithHostNameForId:IDS_CONNECTION_CLOSED_FOR_HOST_MESSAGE];
[_activityIndicator stopAnimating];
_activityIndicator.hidden = YES;
......@@ -473,12 +476,14 @@ static const CGFloat kKeyboardAnimationTime = 0.3;
[self.navigationController popToViewController:self animated:YES];
[MDCSnackbarManager
showMessage:[MDCSnackbarMessage messageWithText:@"Connection Closed."]];
showMessage:[MDCSnackbarMessage
messageWithText:l10n_util::GetNSString(
IDS_MESSAGE_SESSION_FINISHED)]];
}
- (void)showError {
_statusLabel.text =
[NSString stringWithFormat:@"Error connecting to %@", _remoteHostName];
[self stringWithHostNameForId:IDS_ERROR_CONNECTING_TO_HOST_MESSAGE];
_pinEntryView.hidden = YES;
......@@ -490,6 +495,7 @@ static const CGFloat kKeyboardAnimationTime = 0.3;
_reconnectView.hidden = NO;
// TODO(yuweih): I18N
MDCSnackbarMessage* message = nil;
switch (_lastError) {
case SessionErrorOk:
......@@ -614,4 +620,9 @@ static const CGFloat kKeyboardAnimationTime = 0.3;
}];
}
- (NSString*)stringWithHostNameForId:(int)messageId {
return l10n_util::GetNSStringF(messageId,
base::SysNSStringToUTF16(_remoteHostName));
}
@end
......@@ -22,7 +22,9 @@ static NSString* const kCreditsUrlString =
@implementation HelpViewController
- (instancetype)init {
if (self = [super initWithUrl:kHelpCenterUrl title:@"Help Center"]) {
if (self = [super
initWithUrl:kHelpCenterUrl
title:l10n_util::GetNSString(IDS_ACTIONBAR_HELP_TITLE)]) {
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]
initWithTitle:l10n_util::GetNSString(IDS_CREDITS)
style:UIBarButtonItemStylePlain
......
......@@ -14,6 +14,10 @@
#import "remoting/ios/app/remoting_theme.h"
#import "remoting/ios/domain/host_info.h"
#include "base/strings/sys_string_conversions.h"
#include "remoting/base/string_resources.h"
#include "ui/base/l10n/l10n_util.h"
static const CGFloat kLinePadding = 2.f;
static const CGFloat kHostCardIconInset = 10.f;
static const CGFloat kHostCardPadding = 4.f;
......@@ -133,11 +137,15 @@ static const CGFloat kHostCardIconSize = 45.f;
if ([_hostInfo.status isEqualToString:@"ONLINE"]) {
_imageView.backgroundColor = RemotingTheme.onlineHostColor;
_statusLabel.text = @"Online";
_statusLabel.text = l10n_util::GetNSString(IDS_HOST_ONLINE_SUBTITLE);
} else {
_imageView.backgroundColor = RemotingTheme.offlineHostColor;
_statusLabel.text =
[NSString stringWithFormat:@"Last online: %@", hostInfo.updatedTime];
hostInfo.updatedTime
? l10n_util::GetNSStringF(
IDS_LAST_ONLINE_SUBTITLE,
base::SysNSStringToUTF16(hostInfo.updatedTime))
: l10n_util::GetNSString(IDS_HOST_OFFLINE_SUBTITLE);
}
}
......
......@@ -14,6 +14,9 @@
#import "ios/third_party/material_components_ios/src/components/ShadowLayer/src/MaterialShadowLayer.h"
#import "remoting/ios/app/host_collection_header_view.h"
#include "remoting/base/string_resources.h"
#include "ui/base/l10n/l10n_util.h"
static NSString* const kReusableIdentifierItem =
@"remotingHostCollectionViewControllerItem";
......@@ -87,7 +90,7 @@ static CGFloat kHostCollectionHeaderViewHeight = 25.f;
withReuseIdentifier:kind
forIndexPath:indexPath];
if ([kind isEqualToString:UICollectionElementKindSectionHeader]) {
supplementaryView.text = @"Remote devices";
supplementaryView.text = l10n_util::GetNSString(IDS_REMOTE_DEVICES_TITLE);
}
return supplementaryView;
}
......
......@@ -23,9 +23,11 @@
#import "remoting/ios/session/remoting_client.h"
#include "base/strings/sys_string_conversions.h"
#include "remoting/base/string_resources.h"
#include "remoting/client/chromoting_client_runtime.h"
#include "remoting/client/gesture_interpreter.h"
#include "remoting/client/input/keyboard_interpreter.h"
#include "ui/base/l10n/l10n_util.h"
static const CGFloat kFabInset = 15.f;
static const CGFloat kKeyboardAnimationTime = 0.3;
......@@ -287,7 +289,7 @@ static const CGFloat kKeyboardAnimationTime = 0.3;
// modal window option selector. Replace this with a real menu later.
UIAlertController* alert = [UIAlertController
alertControllerWithTitle:@"Remote Settings"
alertControllerWithTitle:nil
message:nil
preferredStyle:UIAlertControllerStyleActionSheet];
......@@ -296,7 +298,8 @@ static const CGFloat kKeyboardAnimationTime = 0.3;
[self hideKeyboard];
[_actionImageView setActive:NO animated:YES];
};
[alert addAction:[UIAlertAction actionWithTitle:@"Hide Keyboard"
[alert addAction:[UIAlertAction actionWithTitle:l10n_util::GetNSString(
IDS_HIDE_KEYBOARD)
style:UIAlertActionStyleDefault
handler:hideKeyboardHandler]];
} else {
......@@ -304,17 +307,18 @@ static const CGFloat kKeyboardAnimationTime = 0.3;
[self showKeyboard];
[_actionImageView setActive:NO animated:YES];
};
[alert addAction:[UIAlertAction actionWithTitle:@"Show Keyboard"
[alert addAction:[UIAlertAction actionWithTitle:l10n_util::GetNSString(
IDS_SHOW_KEYBOARD)
style:UIAlertActionStyleDefault
handler:showKeyboardHandler]];
}
remoting::GestureInterpreter::InputMode currentInputMode =
_client.gestureInterpreter->GetInputMode();
NSString* switchInputModeTitle =
NSString* switchInputModeTitle = l10n_util::GetNSString(
currentInputMode == remoting::GestureInterpreter::DIRECT_INPUT_MODE
? @"Trackpad Mode"
: @"Touch Mode";
? IDS_SELECT_TRACKPAD_MODE
: IDS_SELECT_TOUCH_MODE);
void (^switchInputModeHandler)(UIAlertAction*) = ^(UIAlertAction*) {
switch (currentInputMode) {
case remoting::GestureInterpreter::DIRECT_INPUT_MODE:
......@@ -336,9 +340,11 @@ static const CGFloat kKeyboardAnimationTime = 0.3;
[self.navigationController popToRootViewControllerAnimated:YES];
[_actionImageView setActive:NO animated:YES];
};
[alert addAction:[UIAlertAction actionWithTitle:@"Disconnect"
style:UIAlertActionStyleDefault
handler:disconnectHandler]];
[alert
addAction:[UIAlertAction actionWithTitle:l10n_util::GetNSString(
IDS_DISCONNECT_MYSELF_BUTTON)
style:UIAlertActionStyleDefault
handler:disconnectHandler]];
__weak HostViewController* weakSelf = self;
void (^settingsHandler)(UIAlertAction*) = ^(UIAlertAction*) {
......@@ -351,7 +357,8 @@ static const CGFloat kKeyboardAnimationTime = 0.3;
[weakSelf presentViewController:navController animated:YES completion:nil];
[_actionImageView setActive:NO animated:YES];
};
[alert addAction:[UIAlertAction actionWithTitle:@"Settings"
[alert addAction:[UIAlertAction actionWithTitle:l10n_util::GetNSString(
IDS_SETTINGS_BUTTON)
style:UIAlertActionStyleDefault
handler:settingsHandler]];
......@@ -360,9 +367,10 @@ static const CGFloat kKeyboardAnimationTime = 0.3;
[weakAlert dismissViewControllerAnimated:YES completion:nil];
[_actionImageView setActive:NO animated:YES];
};
[alert addAction:[UIAlertAction actionWithTitle:@"Cancel"
style:UIAlertActionStyleCancel
handler:cancelHandler]];
[alert addAction:[UIAlertAction
actionWithTitle:l10n_util::GetNSString(IDS_CANCEL)
style:UIAlertActionStyleCancel
handler:cancelHandler]];
alert.popoverPresentationController.sourceView = self.view;
// Target the alert menu at the top middle of the FAB.
......
......@@ -11,6 +11,9 @@
#import "ios/third_party/material_components_ios/src/components/Buttons/src/MaterialButtons.h"
#import "remoting/ios/app/remoting_theme.h"
#include "remoting/base/string_resources.h"
#include "ui/base/l10n/l10n_util.h"
static const CGFloat kMargin = 5.f;
static const CGFloat kPadding = 8.f;
static const CGFloat kLineSpace = 12.f;
......@@ -46,7 +49,8 @@ static const int kMinPinLength = 6;
_pairingLabel.textColor =
[UIColor colorWithRed:1.f green:1.f blue:1.f alpha:0.5];
_pairingLabel.font = [UIFont systemFontOfSize:12.f];
_pairingLabel.text = @"Remember my PIN on this device.";
_pairingLabel.text =
l10n_util::GetNSString(IDS_REMEMBER_PIN_ON_THIS_DEVICE);
_pairingLabel.translatesAutoresizingMaskIntoConstraints = NO;
[self addSubview:_pairingLabel];
......@@ -68,9 +72,8 @@ static const int kMinPinLength = 6;
_pinEntry.textColor = [UIColor whiteColor];
_pinEntry.secureTextEntry = YES;
_pinEntry.keyboardType = UIKeyboardTypeNumberPad;
// TODO(nicholss): L18N this.
_pinEntry.attributedPlaceholder = [[NSAttributedString alloc]
initWithString:@"Enter PIN"
initWithString:l10n_util::GetNSString(IDS_ENTER_PIN)
attributes:@{
NSForegroundColorAttributeName :
[UIColor colorWithRed:1.f green:1.f blue:1.f alpha:0.5]
......
......@@ -17,6 +17,8 @@
#include "base/strings/stringprintf.h"
#include "google_apis/google_api_keys.h"
#include "net/base/escape.h"
#include "remoting/base/string_resources.h"
#include "ui/base/l10n/l10n_util.h"
// TODO(nicholss): This should be generated from a remoting/base class:
......@@ -76,7 +78,7 @@ std::string GetAuthorizationCodeUri() {
- (id)init {
self = [super init];
if (self) {
self.title = @"Settings";
self.title = l10n_util::GetNSString(IDS_SETTINGS_BUTTON);
_appBar = [[MDCAppBar alloc] init];
[self addChildViewController:_appBar.headerViewController];
......@@ -116,7 +118,10 @@ std::string GetAuthorizationCodeUri() {
self.styler.cellStyle = MDCCollectionViewCellStyleCard;
_content = [NSMutableArray array];
[_content addObject:@[ @"Login", @"Logout" ]];
[_content addObject:@[
l10n_util::GetNSString(IDS_SIGN_IN_BUTTON),
l10n_util::GetNSString(IDS_SIGN_OUT_BUTTON)
]];
}
#pragma mark - UICollectionViewDataSource
......@@ -151,7 +156,8 @@ std::string GetAuthorizationCodeUri() {
cell.accessoryView = accessCodeButton;
} else if (indexPath.section == 0 && indexPath.item == 1) {
MDCRaisedButton* logoutButton = [[MDCRaisedButton alloc] init];
[logoutButton setTitle:@"Logout" forState:UIControlStateNormal];
[logoutButton setTitle:l10n_util::GetNSString(IDS_SIGN_OUT_BUTTON)
forState:UIControlStateNormal];
[logoutButton sizeToFit];
[logoutButton addTarget:self
action:@selector(didTapLogout:)
......
......@@ -15,6 +15,8 @@
#import "remoting/ios/app/settings/setting_option.h"
#include "base/logging.h"
#include "remoting/base/string_resources.h"
#include "ui/base/l10n/l10n_util.h"
static NSString* const kReusableIdentifierItem = @"remotingSettingsVCItem";
static NSString* const kFeedbackContext = @"InSessionFeedbackContext";
......@@ -76,7 +78,10 @@ static NSString* const kFeedbackContext = @"InSessionFeedbackContext";
// TODO(nicholss): All of these strings need to be setup for l18n.
_sections = @[
@"Display options", @"Mouse options", @"Keyboard controls", @"Support"
l10n_util::GetNSString(IDS_DISPLAY_OPTIONS),
l10n_util::GetNSString(IDS_MOUSE_OPTIONS),
l10n_util::GetNSString(IDS_KEYBOARD_OPTIONS),
l10n_util::GetNSString(IDS_SUPPORT_MENU),
];
self.styler.cellStyle = MDCCollectionViewCellStyleCard;
}
......@@ -229,9 +234,9 @@ static NSString* const kFeedbackContext = @"InSessionFeedbackContext";
__weak RemotingSettingsViewController* weakSelf = self;
SettingOption* shrinkOption = [[SettingOption alloc] init];
shrinkOption.title = @"Shrink to fit";
shrinkOption.title = l10n_util::GetNSString(IDS_SHRINK_TO_FIT);
// TODO(nicholss): I think this text changes based on value. Confirm.
shrinkOption.subtext = @"Don't change resolution to match window";
shrinkOption.subtext = l10n_util::GetNSString(IDS_SHRINK_TO_FIT_SUBTITLE);
shrinkOption.style = OptionCheckbox;
shrinkOption.checked = NO;
__weak SettingOption* weakShrinkOption = shrinkOption;
......@@ -242,9 +247,9 @@ static NSString* const kFeedbackContext = @"InSessionFeedbackContext";
};
SettingOption* resizeOption = [[SettingOption alloc] init];
resizeOption.title = @"Resize to fit";
resizeOption.title = l10n_util::GetNSString(IDS_RESIZE_TO_CLIENT);
// TODO(nicholss): I think this text changes based on value. Confirm.
resizeOption.subtext = @"Update remote resolution to match window";
resizeOption.subtext = l10n_util::GetNSString(IDS_RESIZE_TO_CLIENT_SUBTITLE);
resizeOption.style = OptionCheckbox;
resizeOption.checked = YES;
__weak SettingOption* weakResizeOption = resizeOption;
......@@ -257,7 +262,7 @@ static NSString* const kFeedbackContext = @"InSessionFeedbackContext";
[_content addObject:@[ shrinkOption, resizeOption ]];
SettingOption* directMode = [[SettingOption alloc] init];
directMode.title = @"Touch mode";
directMode.title = l10n_util::GetNSString(IDS_SELECT_TOUCH_MODE);
// TODO(nicholss): I think this text changes based on value. Confirm.
directMode.subtext = @"Screen acts like a touch screen";
directMode.style = OptionSelector;
......@@ -270,7 +275,7 @@ static NSString* const kFeedbackContext = @"InSessionFeedbackContext";
};
SettingOption* trackpadMode = [[SettingOption alloc] init];
trackpadMode.title = @"Trackpad mode";
trackpadMode.title = l10n_util::GetNSString(IDS_SELECT_TRACKPAD_MODE);
// TODO(nicholss): I think this text changes based on value. Confirm.
trackpadMode.subtext = @"Screen acts like a trackpad";
trackpadMode.style = OptionSelector;
......@@ -286,7 +291,7 @@ static NSString* const kFeedbackContext = @"InSessionFeedbackContext";
[_content addObject:@[ directMode, trackpadMode ]];
SettingOption* ctrlAltDelOption = [[SettingOption alloc] init];
ctrlAltDelOption.title = @"Press \"Ctrl+Alt+Del\"";
ctrlAltDelOption.title = l10n_util::GetNSString(IDS_SEND_CTRL_ALT_DEL);
ctrlAltDelOption.style = FlatButton;
ctrlAltDelOption.action = ^{
if ([weakSelf.delegate respondsToSelector:@selector(sendCtrAltDel)]) {
......@@ -295,7 +300,7 @@ static NSString* const kFeedbackContext = @"InSessionFeedbackContext";
};
SettingOption* printScreenOption = [[SettingOption alloc] init];
printScreenOption.title = @"Press \"Print Screen\"";
printScreenOption.title = l10n_util::GetNSString(IDS_SEND_PRINT_SCREEN);
printScreenOption.style = FlatButton;
printScreenOption.action = ^{
if ([weakSelf.delegate respondsToSelector:@selector(sendPrintScreen)]) {
......@@ -306,7 +311,7 @@ static NSString* const kFeedbackContext = @"InSessionFeedbackContext";
[_content addObject:@[ ctrlAltDelOption, printScreenOption ]];
SettingOption* helpCenterOption = [[SettingOption alloc] init];
helpCenterOption.title = @"Help center";
helpCenterOption.title = l10n_util::GetNSString(IDS_HELP_CENTER);
helpCenterOption.style = FlatButton;
helpCenterOption.action = ^{
[AppDelegate.instance navigateToHelpCenter:weakSelf.navigationController];
......@@ -314,7 +319,7 @@ static NSString* const kFeedbackContext = @"InSessionFeedbackContext";
};
SettingOption* faqsOption = [[SettingOption alloc] init];
faqsOption.title = @"FAQs";
faqsOption.title = l10n_util::GetNSString(IDS_FAQS);
faqsOption.style = FlatButton;
faqsOption.action = ^{
[AppDelegate.instance navigateToFAQs:weakSelf.navigationController];
......@@ -324,7 +329,8 @@ static NSString* const kFeedbackContext = @"InSessionFeedbackContext";
// TODO(yuweih): Currently the EAGLView is not captured by the feedback tool.
// To get it working we need to override renderInContext in CAEAGLLayer.
SettingOption* sendFeedbackOption = [[SettingOption alloc] init];
sendFeedbackOption.title = @"Send feedback";
sendFeedbackOption.title =
l10n_util::GetNSString(IDS_ACTIONBAR_SEND_FEEDBACK);
sendFeedbackOption.style = FlatButton;
sendFeedbackOption.action = ^{
// Dismiss self so that it can capture the screenshot of HostView.
......
......@@ -12,6 +12,10 @@
#import "remoting/ios/facade/remoting_authentication.h"
#import "remoting/ios/facade/remoting_service.h"
#include "base/strings/sys_string_conversions.h"
#include "remoting/base/string_resources.h"
#include "ui/base/l10n/l10n_util.h"
@interface UserStatusPresenter () {
BOOL _isStarted;
}
......@@ -74,8 +78,8 @@
return;
}
MDCSnackbarMessage* message = [[MDCSnackbarMessage alloc] init];
message.text =
[NSString stringWithFormat:@"Currently signed in as %@.", user.userEmail];
message.text = l10n_util::GetNSStringF(
IDS_LOG_IN_ACCOUNT_DESCRIPTION, base::SysNSStringToUTF16(user.userEmail));
[MDCSnackbarManager showMessage:message];
}
......
......@@ -586,6 +586,12 @@
<message desc="Button to show or hide the on-screen keyboard." name="IDS_SHOW_HIDE_KEYBOARD" formatter_data="android_java">
Show/hide keyboard.
</message>
<message desc="Button to show the on-screen keyboard." name="IDS_SHOW_KEYBOARD">
Show keyboard
</message>
<message desc="Button to show the on-screen keyboard." name="IDS_HIDE_KEYBOARD">
Hide keyboard
</message>
<message desc="Menu item to select the Touch input mode. In this mode, there is no visible mouse pointer and the user must tap on the screen to simulate a left-click." name="IDS_SELECT_TOUCH_MODE" formatter_data="android_java">
Touch mode
</message>
......@@ -681,14 +687,68 @@ For information about privacy, please see the Google Privacy Policy (http://goo.
<message desc="Initial screen's subtitle, with a short description of the app" name="IDS_SHORT_DESCRIPTION">
Access your computer securely over the Internet
</message>
<message desc="Subtitle shown in the host list when host is offline, and for which no last-online status is available." name ="IDS_HOST_OFFLINE_SUBTITLE">
offline
</message>
<message desc="Subtitle shown in the host list when host is offline. Indicates when host was last seen online." name ="IDS_LAST_ONLINE_SUBTITLE">
last online <ph name="DATE">$1<ex>1/6/13</ex></ph>
</message>
</if> <!-- is_ios -->
<message desc="Title for a list of devices that an be accessed remotely." name="IDS_REMOTE_DEVICES_TITLE">
Remote devices
</message>
<message desc="Subtitle shown in the host list when host is online." name ="IDS_HOST_ONLINE_SUBTITLE">
Online
</message>
<message desc="Subtitle shown in the host list when host is offline, and for which no last-online status is available." name="IDS_HOST_OFFLINE_SUBTITLE">
Offline
</message>
<message desc="Subtitle shown in the host list when host is offline. Indicates when host was last seen online." name="IDS_LAST_ONLINE_SUBTITLE">
Last online: <ph name="DATE">$1<ex>1/6/13</ex></ph>
</message>
<message desc="Title for the button that brings up a settings menu." name="IDS_SETTINGS_BUTTON">
Settings
</message>
<message desc="Short placeholder text on a text box to prompt the user to enter the PIN." name="IDS_ENTER_PIN">
Enter PIN
</message>
<message desc="Text displayed while the client is connecting to a host" name="IDS_CONNECTING_TO_HOST_MESSAGE">
Connecting to <ph name="HOSTNAME">$1<ex>My Linux desktop</ex></ph>
</message>
<message desc="Text displayed when the client is successfully connected to a host" name="IDS_CONNECTED_TO_HOST_MESSAGE">
Connected to <ph name="HOSTNAME">$1<ex>My Linux desktop</ex></ph>
</message>
<message desc="Text displayed when the client's connection to a host is closed" name="IDS_CONNECTION_CLOSED_FOR_HOST_MESSAGE">
Connection closed for <ph name="HOSTNAME">$1<ex>My Linux desktop</ex></ph>
</message>
<message desc="Text displayed when the client failed to connect to a host" name="IDS_ERROR_CONNECTING_TO_HOST_MESSAGE">
Error connecting to <ph name="HOSTNAME">$1<ex>My Linux desktop</ex></ph>
</message>
<message desc="Title for an options menu for configuring how the remote host screen should be displayed in the window." name="IDS_DISPLAY_OPTIONS">
Display options
</message>
<message desc="Title for an options menu for configuring how mouse inputs should be injected to the remote host." name="IDS_MOUSE_OPTIONS">
Mouse options
</message>
<message desc="Title for an options menu for configuring how keyboard inputs should be injected to the remote host." name="IDS_KEYBOARD_OPTIONS">
Keyboard options
</message>
<message desc="Title for the support menu with options like FAQs and Help Center." name="IDS_SUPPORT_MENU">
Support
</message>
<message desc="Title for the button that brings up the help center page." name="IDS_HELP_CENTER">
Help Center
</message>
<message desc="Title for the button that brings up the frequently asked questions page." name="IDS_FAQS">
FAQs
</message>
<message desc="Subtitle (description) of the option controlling whether or not the remote desktop is scaled down if it is too large to fit in the window." name="IDS_SHRINK_TO_FIT_SUBTITLE">
Keep whole remote desktop visible
</message>
<message desc="Subtitle (description) of the option controlling whether or not the remote desktop is resized to match the window size as closely as possible." name="IDS_RESIZE_TO_CLIENT_SUBTITLE">
Update remote resolution to match window
</message>
<!-- This is a verbatim transcription for the description. See also IDS_REMEMBER_PIN. -->
<message desc="Check-box displayed when the user enters their PIN to connect to a host, avoiding the need to enter the PIN each time." name="IDS_REMEMBER_PIN_ON_THIS_DEVICE">
Remember my PIN on this device.
</message>
<message desc="Label for the access code entry box. This is where the client user enters the code that permits access to the host." name="IDS_ACCESS_CODE">
Access code
</message>
......@@ -928,6 +988,10 @@ For information about privacy, please see the Google Privacy Policy (http://goo.
OK
</message>
<if expr="is_android">
<!-- Android uses a different format for placeholder -->
<message desc="Message that is spoken (for accessibility) whenever the user selects an account from a list displayed in the application." name="IDS_LOG_IN_ACCOUNT_DESCRIPTION" formatter_data="android_java">
Signed in as <ph name="EMAIL_ADDRESS">%1$s<ex>test@gmail.com</ex></ph>.
</message>
<message desc="This string represents a host status line, which is shown below the host name for offline hosts. The status line consists of 1) a host offline status (i.e. a specific 'Host failed to read the policy.' or 'Invalid host owner.' or a generic 'Host if offline.') and 2) statement when the host was last seen online (i.e. 'Last seen online 20 minutes ago.')."
name="IDS_HOST_STATUS_LINE" formatter_data="android_java">
<ph name="OPTIONAL_OFFLINE_REASON">%2$s<ex>Host failed to read the policy.</ex></ph> Last seen online <ph name="RELATIVE_TIMESTAMP">%1$s<ex>yesterday</ex></ph>.
......@@ -942,6 +1006,9 @@ For information about privacy, please see the Google Privacy Policy (http://goo.
</message>
</if>
<if expr="not is_android">
<message desc="Short message being popped up whenever the user selects an account from a list displayed in the application." name="IDS_LOG_IN_ACCOUNT_DESCRIPTION">
Signed in as <ph name="EMAIL_ADDRESS">$1<ex>test@gmail.com</ex></ph>.
</message>
<message desc="Modified version of the host name shown for hosts that are not currently accessible and for which no last-online status is available." name="IDS_OFFLINE">
<ph name="HOSTNAME">$1<ex>My Linux desktop</ex></ph> (offline)
</message>
......@@ -1172,9 +1239,6 @@ For information about privacy, please see the Google Privacy Policy (http://goo.
<message desc="Menu option to open a new window." name="IDS_NEW_WINDOW">
New window…
</message>
<message desc="Message that is spoken (for accessibility) whenever the user selects an account from a list displayed in the application." name="IDS_LOG_IN_ACCOUNT_DESCRIPTION" formatter_data="android_java">
Signed in as <ph name="EMAIL_ADDRESS">%1$s<ex>test@gmail.com</ex></ph>.
</message>
<message desc="Label for the Feedback button displayed in the Android Help screen. Pressing this button causes the Feedback screen to be shown." name="IDS_ACTIONBAR_FEEDBACK" formatter_data="android_java">
Feedback
</message>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment