[NTP Next] Use new WebUI string system for new tab strings (#30816)

This commit is contained in:
Kevin Smith
2025-10-23 18:16:38 -04:00
committed by GitHub
parent e7e8c2e555
commit 0c52f01eba
24 changed files with 259 additions and 559 deletions
@@ -6,7 +6,7 @@
import * as React from 'react'
import Icon from '@brave/leo/react/icon'
import formatMessage from '$web-common/formatMessage'
import { formatString } from '$web-common/locale'
import { Link } from '../common/link'
import { getString } from '../../lib/strings'
import { BraveBackground, SponsoredImageBackground } from '../../state/background_state'
@@ -46,7 +46,7 @@ function BraveBackgroundCredits(props: BraveBackgroundCreditsProps) {
}
return (
<Link className='photo-credits' url={link}>
{formatMessage(getString('photoCreditsText'), [author])}
{formatString(getString(S.NEW_TAB_PHOTO_CREDITS_TEXT), [author])}
</Link>
)
}
@@ -68,8 +68,8 @@ export function SearchBox(props: Props) {
type='text'
placeholder={
engineHost === braveSearchHost
? getString('searchBoxPlaceholderTextBrave')
: getString('searchBoxPlaceholderText')
? getString(S.NEW_TAB_SEARCH_BOX_PLACEHOLDER_TEXT_BRAVE)
: getString(S.NEW_TAB_SEARCH_BOX_PLACEHOLDER_TEXT)
}
tabIndex={1}
value={inputState.query}
@@ -47,7 +47,7 @@ export function SearchEnginePicker(props: Props) {
onClick={props.onCustomizeClick}
data-customize='customize'
>
{getString('searchCustomizeEngineListText')}
{getString(S.NEW_TAB_SEARCH_CUSTOMIZE_ENGINE_LIST_TEXT)}
</leo-menu-item>
</ButtonMenu>
</div>
@@ -91,9 +91,9 @@ export function SearchResults(props: Props) {
}
return (
<div className='suggestions-prompt'>
<h4>{getString('searchSuggestionsPromptTitle')}</h4>
<h4>{getString(S.NEW_TAB_SEARCH_SUGGESTIONS_PROMPT_TITLE)}</h4>
<p>
{getString('searchSuggestionsPromptText')}
{getString(S.NEW_TAB_SEARCH_SUGGESTIONS_PROMPT_TEXT)}
</p>
<div className='actions'>
<Button
@@ -102,7 +102,7 @@ export function SearchResults(props: Props) {
props.onSearchSuggestionsEnabled()
}}
>
{getString('searchSuggestionsEnableButtonLabel')}
{getString(S.NEW_TAB_SEARCH_SUGGESTIONS_ENABLE_BUTTON_LABEL)}
</Button>
<Button
kind='plain-faint'
@@ -110,7 +110,7 @@ export function SearchResults(props: Props) {
actions.setSearchSuggestionsPromptDismissed(true)
}}
>
{getString('searchSuggestionsDismissButtonLabel')}
{getString(S.NEW_TAB_SEARCH_SUGGESTIONS_DISMISS_BUTTON_LABEL)}
</Button>
</div>
</div>
@@ -14,7 +14,7 @@ import { getString } from '../../lib/strings'
import { inlineCSSVars } from '../../lib/inline_css_vars'
import { BackgroundTypePanel } from './background_type_panel'
import { Link } from '../common/link'
import formatMessage from '$web-common/formatMessage'
import { formatString } from '$web-common/locale'
import { settingsURL } from '../../../../../components/brave_rewards/resources/shared/lib/rewards_urls'
import {
@@ -81,7 +81,7 @@ export function BackgroundPanel() {
return (
<div className='preview upload'>
{uploading ? <ProgressRing /> : <Icon name='upload' />}
{getString('uploadBackgroundLabel')}
{getString(S.NEW_TAB_UPLOAD_BACKGROUND_LABEL)}
</div>
)
}
@@ -144,7 +144,7 @@ export function BackgroundPanel() {
return (
<div data-css-scope={style.scope}>
<div className='control-row'>
<label>{getString('showBackgroundsLabel')}</label>
<label>{getString(S.NEW_TAB_SHOW_BACKGROUNDS_LABEL)}</label>
<Toggle
size='small'
checked={backgroundsEnabled}
@@ -155,23 +155,21 @@ export function BackgroundPanel() {
backgroundsEnabled && rewardsFeatureEnabled &&
<div className='control-row'>
<label>
{getString('showSponsoredImagesLabel')}
{getString(S.NEW_TAB_SHOW_SPONSORED_IMAGES_LABEL)}
<div className='subtext'>
{
!rewardsEnabled && formatMessage(
getString('showSponsoredImagesEarningText'),
!rewardsEnabled && formatString(
getString(S.NEW_TAB_SHOW_SPONSORED_IMAGES_EARNING_TEXT),
{
tags: {
$1: (content) => (
<Link
key='learn-more'
url={settingsURL}
openInNewTab
>
{content}
</Link>
)
}
$1: (content) => (
<Link
key='learn-more'
url={settingsURL}
openInNewTab
>
{content}
</Link>
)
})
}
</div>
@@ -191,7 +189,7 @@ export function BackgroundPanel() {
<div className='background-option'>
<button onClick={onCustomPreviewClick}>
{renderTypePreview(SelectedBackgroundType.kCustom)}
{getString('customBackgroundLabel')}
{getString(S.NEW_TAB_CUSTOM_BACKGROUND_LABEL)}
</button>
</div>
<div className='background-option'>
@@ -201,13 +199,13 @@ export function BackgroundPanel() {
}}
>
{renderTypePreview(SelectedBackgroundType.kBrave)}
{getString('braveBackgroundLabel')}
{getString(S.NEW_TAB_BRAVE_BACKGROUND_LABEL)}
</button>
</div>
<div className='background-option'>
<button onClick={() => setPanel(SelectedBackgroundType.kSolid)}>
{renderTypePreview(SelectedBackgroundType.kSolid)}
{getString('solidBackgroundLabel')}
{getString(S.NEW_TAB_SOLID_BACKGROUND_LABEL)}
</button>
</div>
<div className='background-option'>
@@ -215,7 +213,7 @@ export function BackgroundPanel() {
onClick={() => setPanel(SelectedBackgroundType.kGradient)}
>
{renderTypePreview(SelectedBackgroundType.kGradient)}
{getString('gradientBackgroundLabel')}
{getString(S.NEW_TAB_GRADIENT_BACKGROUND_LABEL)}
</button>
</div>
</div>
@@ -40,11 +40,11 @@ export function BackgroundTypePanel(props: Props) {
function panelTitle() {
switch (type) {
case SelectedBackgroundType.kCustom:
return getString('customBackgroundTitle')
return getString(S.NEW_TAB_CUSTOM_BACKGROUND_LABEL)
case SelectedBackgroundType.kGradient:
return getString('gradientBackgroundTitle')
return getString(S.NEW_TAB_GRADIENT_BACKGROUND_LABEL)
case SelectedBackgroundType.kSolid:
return getString('solidBackgroundTitle')
return getString(S.NEW_TAB_SOLID_BACKGROUND_LABEL)
default:
return ''
}
@@ -86,7 +86,7 @@ export function BackgroundTypePanel(props: Props) {
</button>
</h4>
<div className='control-row'>
<label>{getString('randomizeBackgroundLabel')}</label>
<label>{getString(S.NEW_TAB_RANDOMIZE_BACKGROUND_LABEL)}</label>
<Toggle
size='small'
checked={selectedBackground.type === type && !selectedBackground.value}
@@ -10,7 +10,7 @@ import Toggle from '@brave/leo/react/toggle'
import { useNewTabState, useNewTabActions } from '../../context/new_tab_context'
import { ClockFormat } from '../../state/new_tab_state'
import { getString } from '../../lib/strings'
import formatMessage from '$web-common/formatMessage'
import { formatString } from '$web-common/locale'
import { style } from './clock_panel.style'
@@ -23,13 +23,15 @@ export function ClockPanel() {
function formatOptionText(format: ClockFormat) {
switch (format) {
case ClockFormat.k12:
return getString('clockFormatOption12HourText')
return getString(S.NEW_TAB_CLOCK_FORMAT_OPTION12HOUR_TEXT)
case ClockFormat.k24:
return getString('clockFormatOption24HourText')
return getString(S.NEW_TAB_CLOCK_FORMAT_OPTION24HOUR_TEXT)
default:
return formatMessage(getString('clockFormatOptionAutomaticText'), [
new Intl.DateTimeFormat(undefined).resolvedOptions().locale
]).join('')
return formatString(
getString(S.NEW_TAB_CLOCK_FORMAT_OPTION_AUTOMATIC_TEXT), [
new Intl.DateTimeFormat(undefined).resolvedOptions().locale
]
)
}
}
@@ -42,7 +44,7 @@ export function ClockPanel() {
return (
<div data-css-scope={style.scope}>
<div className='control-row'>
<label>{getString('showClockLabel')}</label>
<label>{getString(S.NEW_TAB_SHOW_CLOCK_LABEL)}</label>
<Toggle
size='small'
checked={showClock}
@@ -50,7 +52,7 @@ export function ClockPanel() {
/>
</div>
<div className='control-row'>
<label>{getString('clockFormatLabel')}</label>
<label>{getString(S.NEW_TAB_CLOCK_FORMAT_LABEL)}</label>
<DropDown
value={String(clockFormat)}
positionStrategy='fixed'
@@ -25,7 +25,7 @@ export function SearchPanel() {
return (
<div data-css-scope={style.scope}>
<div className='control-row'>
<label>{getString('showSearchBoxLabel')}</label>
<label>{getString(S.NEW_TAB_SHOW_SEARCH_BOX_LABEL)}</label>
<Toggle
size='small'
checked={showSearchBox}
@@ -35,7 +35,7 @@ export function SearchPanel() {
{
showSearchBox &&
<div className='search-engines'>
<h4>{getString('enabledSearchEnginesLabel')}</h4>
<h4>{getString(S.NEW_TAB_ENABLED_SEARCH_ENGINES_LABEL)}</h4>
<div className='search-engine-list'>
{
searchEngines.map((engine) => (
@@ -57,7 +57,7 @@ export function SearchPanel() {
className='customize-link'
url='chrome://settings/searchEngines'
>
{getString('customizeSearchEnginesLink')}
{getString(S.NEW_TAB_CUSTOMIZE_SEARCH_ENGINES_LINK)}
<Icon name='launch' />
</Link>
</div>
@@ -79,12 +79,12 @@ export function SettingsModal(props: Props) {
function getNavItemText(view: SettingsView) {
switch (view) {
case 'background': return getString('backgroundSettingsTitle')
case 'search': return getString('searchSettingsTitle')
case 'top-sites': return getString('topSitesSettingsTitle')
case 'news': return getString('newsSettingsTitle')
case 'clock': return getString('clockSettingsTitle')
case 'widgets': return getString('widgetSettingsTitle')
case 'background': return getString(S.NEW_TAB_BACKGROUND_SETTINGS_TITLE)
case 'search': return getString(S.NEW_TAB_SEARCH_SETTINGS_TITLE)
case 'top-sites': return getString(S.NEW_TAB_TOP_SITES_SETTINGS_TITLE)
case 'news': return getString(S.BRAVE_NEWS_SETTINGS_TITLE)
case 'clock': return getString(S.NEW_TAB_CLOCK_SETTINGS_TITLE)
case 'widgets': return getString(S.NEW_TAB_WIDGET_SETTINGS_TITLE)
}
}
@@ -129,7 +129,7 @@ export function SettingsModal(props: Props) {
backdropClickCloses={!braveNews.customizePage}
>
<h3>
{getString('settingsTitle')}
{getString(S.NEW_TAB_SETTINGS_TITLE)}
</h3>
<div className='panel-body'>
<nav>
@@ -34,7 +34,7 @@ export function TopSitesPanel() {
return (
<div data-css-scope={style.scope}>
<div className='control-row'>
<label>{getString('showTopSitesLabel')}</label>
<label>{getString(S.NEW_TAB_SHOW_TOP_SITES_LABEL)}</label>
<Toggle
size='small'
checked={showTopSites}
@@ -56,8 +56,8 @@ export function TopSitesPanel() {
<div className='list-view-image'>
{renderSelectedMarker(TopSitesListKind.kCustom)}
</div>
<h4>{getString('topSitesCustomOptionTitle')}</h4>
<p>{getString('topSitesCustomOptionText')}</p>
<h4>{getString(S.NEW_TAB_TOP_SITES_CUSTOM_OPTION_TITLE)}</h4>
<p>{getString(S.NEW_TAB_TOP_SITES_CUSTOM_OPTION_TEXT)}</p>
</button>
<button
className={classNames({
@@ -71,8 +71,12 @@ export function TopSitesPanel() {
<div className='list-view-image'>
{renderSelectedMarker(TopSitesListKind.kMostVisited)}
</div>
<h4>{getString('topSitesMostVisitedOptionTitle')}</h4>
<p>{getString('topSitesMostVisitedOptionText')}</p>
<h4>
{getString(S.NEW_TAB_TOP_SITES_MOST_VISITED_OPTION_TITLE)}
</h4>
<p>
{getString(S.NEW_TAB_TOP_SITES_MOST_VISITED_OPTION_TEXT)}
</p>
</button>
</div>
)
@@ -29,7 +29,7 @@ export function WidgetsPanel() {
return (
<div data-css-scope={style.scope}>
<div className='control-row'>
<label>{getString('showStatsLabel')}</label>
<label>{getString(S.NEW_TAB_SHOW_STATS_LABEL)}</label>
<Toggle
size='small'
checked={showStats}
@@ -41,7 +41,7 @@ export function WidgetsPanel() {
{
vpnFeatureEnabled &&
<div className='control-row'>
<label>{getString('showVpnWidgetLabel')}</label>
<label>{getString(S.NEW_TAB_SHOW_VPN_WIDGET_LABEL)}</label>
<Toggle
size='small'
checked={showVpnWidget}
@@ -54,7 +54,7 @@ export function WidgetsPanel() {
{
rewardsFeatureEnabled &&
<div className='control-row'>
<label>{getString('showRewardsWidgetLabel')}</label>
<label>{getString(S.NEW_TAB_SHOW_REWARDS_WIDGET_LABEL)}</label>
<Toggle
size='small'
checked={showRewardsWidget}
@@ -67,7 +67,7 @@ export function WidgetsPanel() {
{
talkFeatureEnabled &&
<div className='control-row'>
<label>{getString('showTalkWidgetLabel')}</label>
<label>{getString(S.NEW_TAB_SHOW_TALK_WIDGET_LABEL)}</label>
<Toggle
size='small'
checked={showTalkWidget}
@@ -46,10 +46,10 @@ export function RemoveToast(props: Props) {
>
<Icon name='info-filled' />
<div className='text'>
<p>{getString('topSiteRemovedText')}</p>
<p>{getString(S.NEW_TAB_TOP_SITE_REMOVED_TEXT)}</p>
</div>
<Button onClick={props.onUndo}>
{getString('undoButtonLabel')}
{getString(S.NEW_TAB_UNDO_BUTTON_LABEL)}
</Button>
<button className='close' onClick={props.onClose}>
<Icon name='close' />
@@ -73,22 +73,26 @@ export function TopSiteEditModal(props: Props) {
<div data-css-scope={style.scope} onKeyDown={maybeSubmitOnKeyDown}>
<h4>
{props.topSite ?
getString('editTopSiteTitle') :
getString('addTopSiteTitle')
getString(S.NEW_TAB_EDIT_TOP_SITE_TITLE) :
getString(S.NEW_TAB_ADD_TOP_SITE_TITLE)
}
</h4>
<Input value={title} onInput={(detail) => setTitle(detail.value)}>
<span className='label'>{getString('topSitesTitleLabel')}</span>
<span className='label'>
{getString(S.NEW_TAB_TOP_SITES_TITLE_LABEL)}
</span>
</Input>
<Input value={url} onInput={(detail) => setURL(detail.value)}>
<span className='label'>{getString('topSitesURLLabel')}</span>
<span className='label'>
{getString(S.NEW_TAB_TOP_SITES_URL_LABEL)}
</span>
</Input>
<div className='actions'>
<Button kind='outline' onClick={props.onClose}>
{getString('cancelButtonLabel')}
{getString(S.NEW_TAB_CANCEL_BUTTON_LABEL)}
</Button>
<Button type='submit' isDisabled={!isValidInput()} onClick={onSubmit}>
{getString('saveChangesButtonLabel')}
{getString(S.NEW_TAB_SAVE_CHANGES_BUTTON_LABEL)}
</Button>
</div>
</div>
@@ -101,7 +101,7 @@ export function TopSites() {
listKind === TopSitesListKind.kCustom &&
<button onClick={topSitesMenuAction(onAddTopSite)}>
<Icon name='browser-add' />
{getString('addTopSiteLabel')}
{getString(S.NEW_TAB_ADD_TOP_SITE_LABEL)}
</button>
}
{
@@ -112,8 +112,8 @@ export function TopSites() {
<Icon name={expanded ? 'contract' : 'expand' } />
{
expanded
? getString('topSitesShowLessLabel')
: getString('topSitesShowMoreLabel')
? getString(S.NEW_TAB_TOP_SITES_SHOW_LESS_LABEL)
: getString(S.NEW_TAB_TOP_SITES_SHOW_MORE_LABEL)
}
</button>
}
@@ -124,13 +124,13 @@ export function TopSites() {
actions.setTopSitesListKind(TopSitesListKind.kMostVisited))
}>
<Icon name='history' />
{getString('topSitesShowMostVisitedLabel')}
{getString(S.NEW_TAB_TOP_SITES_SHOW_MOST_VISITED_LABEL)}
</button> :
<button onClick={topSitesMenuAction(() =>
actions.setTopSitesListKind(TopSitesListKind.kCustom))
}>
<Icon name='star-outline' />
{getString('topSitesShowCustomLabel')}
{getString(S.NEW_TAB_TOP_SITES_SHOW_CUSTOM_LABEL)}
</button>
}
<div className='menu-divider' />
@@ -138,7 +138,7 @@ export function TopSites() {
actions.setShowTopSites(false))
}>
<Icon name='eye-off' />
{getString('hideTopSitesLabel')}
{getString(S.NEW_TAB_HIDE_TOP_SITES_LABEL)}
</button>
</div>
</Popover>
@@ -156,7 +156,7 @@ export function TopSites() {
setContextMenuSite(null)
}}>
<Icon name='edit-pencil' />
{getString('editTopSiteLabel')}
{getString(S.NEW_TAB_EDIT_TOP_SITE_LABEL)}
</button>
}
<button onClick={() => {
@@ -167,7 +167,7 @@ export function TopSites() {
}
}}>
<Icon name='trash' />
{getString('removeTopSiteLabel')}
{getString(S.NEW_TAB_REMOVE_TOP_SITE_LABEL)}
</button>
</div>
</Popover>
@@ -141,7 +141,7 @@ export function TopSitesGrid(props: Props) {
<Icon name='plus-add' />
</span>
<span className='top-site-title'>
{getString('addTopSiteLabel')}
{getString(S.NEW_TAB_ADD_TOP_SITE_LABEL)}
</span>
</button>
:
@@ -27,20 +27,17 @@ export function NewsWidget() {
{
braveNews.isOptInPrefEnabled &&
<leo-menu-item onClick={() => braveNews.setCustomizePage('news')}>
<Icon name='tune' /> {getString('newsCustomizeButtonLabel')}
<Icon name='tune' />
{getString(S.NEW_TAB_NEWS_CUSTOMIZE_BUTTON_LABEL)}
</leo-menu-item>
}
<leo-menu-item onClick={() => braveNews.toggleBraveNewsOnNTP(false)}>
<Icon name='disable-outline' />
{
braveNews.isOptInPrefEnabled
? getString('newsDisableButtonLabel')
: getString('newsHideButtonLabel')
}
{getString(S.NEW_TAB_NEWS_DISABLE_BUTTON_LABEL)}
</leo-menu-item>
</WidgetMenu>
<div className='title'>
{getString('newsWidgetTitle')}
{getString(S.NEW_TAB_NEWS_WIDGET_TITLE)}
</div>
{braveNews.isOptInPrefEnabled ? <PeekItem /> : <OptIn />}
</div>
@@ -96,14 +93,14 @@ function OptIn() {
<div className='opt-in'>
<div className='graphic' />
<div className='text'>
{getString('newsEnableText')}
{getString(S.BRAVE_NEWS_INTRO_TITLE)}
</div>
<div className='actions'>
<Button
size='small'
onClick={() => { braveNews.toggleBraveNewsOnNTP(true) }}
>
{getString('newsEnableButtonLabel')}
{getString(S.BRAVE_NEWS_OPT_IN_ACTION_LABEL)}
</Button>
</div>
</div>
@@ -17,6 +17,7 @@ import { Link, openLink } from '../common/link'
import { WalletProviderIcon } from '../../../../../components/brave_rewards/resources/shared/components/icons/wallet_provider_icon'
import { getExternalWalletProviderName } from '../../../../../components/brave_rewards/resources/shared/lib/external_wallet'
import { getProviderPayoutStatus } from '../../../../../components/brave_rewards/resources/shared/lib/provider_payout_status'
import { formatString } from '$web-common/locale'
import formatMessage from '$web-common/formatMessage'
import * as urls from '../../../../../components/brave_rewards/resources/shared/lib/rewards_urls'
@@ -68,7 +69,8 @@ export function RewardsWidget() {
return (
<RewardsWidgetContainer className='onboarding'>
<div className='title'>
<Icon name='product-bat-color' /> {getString('rewardsWidgetTitle')}
<Icon name='product-bat-color' />
{getString(S.NEW_TAB_REWARDS_WIDGET_TITLE)}
</div>
<div className='content'>
<div className='text'>
@@ -86,10 +88,10 @@ export function RewardsWidget() {
size='small'
onClick={() => openLink(urls.settingsURL)}
>
{getString('rewardsOnboardingButtonLabel')}
{getString(S.NEW_TAB_REWARDS_ONBOARDING_BUTTON_LABEL)}
</Button>
<Link url={urls.rewardsTourURL}>
{getString('rewardsOnboardingLink')}
{getString(S.NEW_TAB_REWARDS_ONBOARDING_LINK)}
</Link>
</div>
</div>
@@ -101,16 +103,16 @@ export function RewardsWidget() {
return (
<RewardsWidgetContainer className='unconnected'>
<div className='title'>
{getString('rewardsWidgetTitle')}
{getString(S.NEW_TAB_REWARDS_WIDGET_TITLE)}
</div>
<div className='content'>
<div className='connect-graphic' />
<div className='text'>
<div className='header'>
{getString('rewardsConnectTitle')}
{getString(S.NEW_TAB_REWARDS_CONNECT_TITLE)}
</div>
<div>
{getString('rewardsConnectText')}
{getString(S.NEW_TAB_REWARDS_CONNECT_TEXT)}
</div>
</div>
<div className='actions'>
@@ -118,7 +120,7 @@ export function RewardsWidget() {
size='small'
onClick={() => openLink(urls.connectURL)}
>
{getString('rewardsConnectButtonLabel')}
{getString(S.NEW_TAB_REWARDS_CONNECT_BUTTON_LABEL)}
</Button>
</div>
</div>
@@ -133,17 +135,17 @@ export function RewardsWidget() {
return (
<RewardsWidgetContainer className='login'>
<div className='title'>
{getString('rewardsWidgetTitle')}
{getString(S.NEW_TAB_REWARDS_WIDGET_TITLE)}
</div>
<div className='content'>
<Icon name='bat-color' />
<div className='text'>
<div className='header'>
{getString('rewardsLoginTitle')}
{getString(S.NEW_TAB_REWARDS_LOGIN_TITLE)}
</div>
<div>
{
formatMessage(getString('rewardsLoginText'), [
formatString(getString(S.NEW_TAB_REWARDS_LOGIN_TEXT), [
getExternalWalletProviderName(externalWallet.provider)
])
}
@@ -157,7 +159,7 @@ export function RewardsWidget() {
<span slot='icon-before'>
<WalletProviderIcon provider={externalWallet.provider} />
</span>
{getString('rewardsLoginButtonLabel')}
{getString(S.NEW_TAB_REWARDS_LOGIN_BUTTON_LABEL)}
</Button>
</div>
</div>
@@ -169,7 +171,7 @@ export function RewardsWidget() {
return (
<RewardsWidgetContainer className='login'>
<div className='title'>
{getString('rewardsWidgetTitle')}
{getString(S.NEW_TAB_REWARDS_WIDGET_TITLE)}
</div>
<div className='content'>
<div className='text'>
@@ -203,7 +205,7 @@ export function RewardsWidget() {
return (
<div className='payout-status'>
{
formatMessage(getString('rewardsPayoutCompletedText'), [
formatString(getString('rewardsPayoutCompletedText'), [
getPayoutMonth()
])
}
@@ -214,12 +216,12 @@ export function RewardsWidget() {
return (
<div className='payout-status'>
{
formatMessage(getString('rewardsPayoutProcessingText'), [
formatString(getString('rewardsPayoutProcessingText'), [
getPayoutMonth()
])
}
<Link url={urls.payoutStatusURL}>
{getString('rewardsPayoutDetailsLink')}
{getString(S.NEW_TAB_REWARDS_PAYOUT_DETAILS_LINK)}
</Link>
</div>
)
@@ -234,6 +236,8 @@ export function RewardsWidget() {
return (
<div className='ads-viewed'>
{
// `adsViewedString` uses the tagged placeholder format understood by
// the `formatMessage` API.
formatMessage(adsViewedString, {
tags: {
$1: (content) => (
@@ -296,13 +300,13 @@ export function RewardsWidget() {
return (
<RewardsWidgetContainer className='connected'>
<div className='title'>
{getString('rewardsWidgetTitle')}
{getString(S.NEW_TAB_REWARDS_WIDGET_TITLE)}
</div>
<div className='content'>
<div className='coin-graphic' />
<div className='text'>
<div className='header'>
{getString('rewardsBalanceTitle')}
{getString(S.NEW_TAB_REWARDS_BALANCE_TITLE)}
</div>
{renderBalance()}
{renderPayoutStatus() || renderAdsViewed()}
@@ -323,7 +327,8 @@ function RewardsWidgetContainer(props: ContainerProps) {
<div data-css-scope={style.scope} className={props.className}>
<WidgetMenu>
<leo-menu-item onClick={() => actions.setShowRewardsWidget(false)}>
<Icon name='eye-off' /> {getString('hideRewardsWidgetLabel')}
<Icon name='eye-off' />
{getString(S.NEW_TAB_HIDE_REWARDS_WIDGET_LABEL)}
</leo-menu-item>
</WidgetMenu>
{props.children}
@@ -39,11 +39,11 @@ export function StatsWidget() {
<div data-css-scope={style.scope}>
<WidgetMenu>
<leo-menu-item onClick={() => actions.setShowShieldsStats(false)}>
<Icon name='eye-off' /> {getString('hideStatsWidgetLabel')}
<Icon name='eye-off' /> {getString(S.NEW_TAB_HIDE_STATS_WIDGET_LABEL)}
</leo-menu-item>
</WidgetMenu>
<div className='title'>
{getString('statsTitle')}
{getString(S.NEW_TAB_STATS_TITLE)}
</div>
<div className='data'>
<div>
@@ -51,20 +51,20 @@ export function StatsWidget() {
<div className='value'>
{stats && adsBlockedFormatter.format(stats.adsBlocked)}
</div>
{getString('statsAdsBlockedText')}
{getString(S.NEW_TAB_STATS_ADS_BLOCKED_TEXT)}
</div>
<div className='bandwidth-saved'>
<div className='value'>
{stats && renderUnits(formatBandwidth(stats.bandwidthSavedBytes))}
</div>
{getString('statsBandwidthSavedText')}
{getString(S.NEW_TAB_STATS_BANDWIDTH_SAVED_TEXT)}
</div>
<div className='time-saved'>
<div className='value'>
{stats &&
renderUnits(formatTimeSaved(getTimeSaved(stats.adsBlocked)))}
</div>
{getString('statsTimeSavedText')}
{getString(S.NEW_TAB_STATS_TIME_SAVED_TEXT)}
</div>
</div>
</div>
@@ -20,20 +20,20 @@ export function TalkWidget() {
<div data-css-scope={style.scope}>
<WidgetMenu>
<leo-menu-item onClick={() => actions.setShowTalkWidget(false)}>
<Icon name='eye-off' /> {getString('hideTalkWidgetLabel')}
<Icon name='eye-off' /> {getString(S.NEW_TAB_HIDE_TALK_WIDGET_LABEL)}
</leo-menu-item>
</WidgetMenu>
<div className='title'>
{getString('talkWidgetTitle')}
{getString(S.NEW_TAB_TALK_WIDGET_TITLE)}
</div>
<div className='content'>
<div className='graphic' />
<div className='text'>
<div className='header'>
{getString('talkDescriptionTitle')}
{getString(S.NEW_TAB_TALK_DESCRIPTION_TITLE)}
</div>
<div>
{getString('talkDescriptionText')}
{getString(S.NEW_TAB_TALK_DESCRIPTION_TEXT)}
</div>
</div>
<div className='actions'>
@@ -41,10 +41,10 @@ export function TalkWidget() {
size='small'
onClick={() => openLink('https://talk.brave.com/widget')}
>
{getString('talkStartCallLabel')}
{getString(S.NEW_TAB_TALK_START_CALL_LABEL)}
</Button>
<Link url='https://brave.com/privacy/browser/#brave-talk-learn'>
{getString('talkAboutDataLink')}
{getString(S.NEW_TAB_TALK_ABOUT_DATA_LINK)}
</Link>
</div>
</div>
@@ -33,25 +33,26 @@ export function VpnWidget() {
<div className='title'>
<span>
<Icon name='product-vpn' />
{getString('vpnWidgetTitle')}
{getString(S.NEW_TAB_VPN_WIDGET_TITLE)}
</span>
<span className='provider'>
{getString('vpnPoweredByText')} <img src={guardianLogoURL} />
{getString(S.NEW_TAB_VPN_POWERED_BY_TEXT)}
<img src={guardianLogoURL} />
</span>
</div>
<div className='content'>
<div className='features'>
<div>
<Icon name='shield-done' />
<span>{getString('vpnFeatureText1')}</span>
<span>{getString(S.NEW_TAB_VPN_FEATURE_TEXT1)}</span>
</div>
<div>
<Icon name='shield-done' />
<span>{getString('vpnFeatureText2')}</span>
<span>{getString(S.NEW_TAB_VPN_FEATURE_TEXT2)}</span>
</div>
<div>
<Icon name='shield-done' />
<span>{getString('vpnFeatureText3')}</span>
<span>{getString(S.NEW_TAB_VPN_FEATURE_TEXT3)}</span>
</div>
</div>
<div className='purchase-actions'>
@@ -59,13 +60,13 @@ export function VpnWidget() {
size='small'
onClick={() => actions.startVpnTrial()}
>
{getString('vpnStartTrialLabel')}
{getString(S.NEW_TAB_VPN_START_TRIAL_LABEL)}
</Button>
<button
className='restore'
onClick={() => actions.restoreVpnPurchase()}
>
{getString('vpnRestorePurchaseLabel')}
{getString(S.NEW_TAB_VPN_RESTORE_PURCHASE_LABEL)}
</button>
</div>
</div>
@@ -84,13 +85,13 @@ export function VpnWidget() {
function connectionStateText() {
switch (connectionState) {
case ConnectionState.CONNECTED:
return getString('vpnStatusConnected')
return getString(S.NEW_TAB_VPN_STATUS_CONNECTED)
case ConnectionState.DISCONNECTED:
return getString('vpnStatusDisconnected')
return getString(S.NEW_TAB_VPN_STATUS_DISCONNECTED)
case ConnectionState.CONNECTING:
return getString('vpnStatusConnecting')
return getString(S.NEW_TAB_VPN_STATUS_CONNECTING)
case ConnectionState.DISCONNECTING:
return getString('vpnStatusDisconnecting')
return getString(S.NEW_TAB_VPN_STATUS_DISCONNECTING)
default:
console.error('Unhandled ConnectionState', connectionState)
return ''
@@ -107,13 +108,13 @@ export function VpnWidget() {
<div className='country'>
{region.country}
<button onClick={() => actions.openVpnPanel()}>
{getString('vpnChangeRegionLabel')}
{getString(S.NEW_TAB_VPN_CHANGE_REGION_LABEL)}
</button>
</div>
<div>
{
region.namePretty === region.country
? getString('vpnOptimalText')
? getString(S.NEW_TAB_VPN_OPTIMAL_TEXT)
: region.namePretty
}
</div>
@@ -127,7 +128,7 @@ export function VpnWidget() {
return (
<VpnWidgetContainer>
<div className='title'>{getString('vpnWidgetTitle')}</div>
<div className='title'>{getString(S.NEW_TAB_VPN_WIDGET_TITLE)}</div>
<div
className={classNames({
'content': true,
@@ -160,7 +161,7 @@ function VpnWidgetContainer(props: React.PropsWithChildren) {
<div data-css-scope={style.scope}>
<WidgetMenu>
<leo-menu-item onClick={() => actions.setShowVpnWidget(false)}>
<Icon name='eye-off' /> {getString('hideVpnWidgetLabel')}
<Icon name='eye-off' /> {getString(S.NEW_TAB_HIDE_VPN_WIDGET_LABEL)}
</leo-menu-item>
</WidgetMenu>
{props.children}
@@ -4,121 +4,30 @@
* You can obtain one at https://mozilla.org/MPL/2.0/. */
import { getLocale } from '$web-common/locale'
import '$web-common/strings'
import { BraveNewsStrings } from 'gen/components/grit/brave_components_webui_strings'
import { BraveNewTabPageStrings } from 'gen/components/grit/brave_components_webui_strings'
declare global {
interface Strings {
BraveNewTabPageStrings: typeof BraveNewTabPageStrings
}
}
export type StringKey =
'addTopSiteLabel' |
'addTopSiteTitle' |
'backgroundSettingsTitle' |
'braveBackgroundLabel' |
'cancelButtonLabel' |
'clockFormatLabel' |
'clockFormatOption12HourText' |
'clockFormatOption24HourText' |
'clockFormatOptionAutomaticText' |
'clockSettingsTitle' |
'customBackgroundLabel' |
'customBackgroundTitle' |
'customizeSearchEnginesLink' |
'editTopSiteLabel' |
'editTopSiteTitle' |
'enabledSearchEnginesLabel' |
'gradientBackgroundLabel' |
'gradientBackgroundTitle' |
'hideRewardsWidgetLabel' |
'hideStatsWidgetLabel' |
'hideTalkWidgetLabel' |
'hideTopSitesLabel' |
'hideVpnWidgetLabel' |
'newsCustomizeButtonLabel' |
'newsDisableButtonLabel' |
'newsEnableButtonLabel' |
'newsEnableText' |
'newsHideButtonLabel' |
'newsSettingsTitle' |
'newsWidgetTitle' |
'photoCreditsText' |
'randomizeBackgroundLabel' |
'removeTopSiteLabel' |
'rewardsAdsViewedTooltip' |
'rewardsBalanceTitle' |
'rewardsConnectButtonLabel' |
'rewardsConnectText' |
'rewardsConnectTitle' |
'rewardsFeatureText1' |
'rewardsFeatureText2' |
'rewardsLoginButtonLabel' |
'rewardsLoginText' |
'rewardsLoginTitle' |
'rewardsOnboardingButtonLabel' |
'rewardsOnboardingLink' |
'rewardsPayoutCompletedText' |
'rewardsPayoutDetailsLink' |
'rewardsPayoutProcessingText' |
'rewardsTosUpdateButtonLabel' |
'rewardsTosUpdateText' |
'rewardsTosUpdateTitle' |
'rewardsWidgetTitle' |
'saveChangesButtonLabel' |
'searchAskLeoDescription' |
'searchBoxPlaceholderText' |
'searchBoxPlaceholderTextBrave' |
'searchCustomizeEngineListText' |
'searchSettingsTitle' |
'searchSuggestionsDismissButtonLabel' |
'searchSuggestionsEnableButtonLabel' |
'searchSuggestionsPromptText' |
'searchSuggestionsPromptTitle' |
'settingsTitle' |
'showBackgroundsLabel' |
'showClockLabel' |
'showRewardsWidgetLabel' |
'showSearchBoxLabel' |
'showSponsoredImagesEarningText' |
'showSponsoredImagesLabel' |
'showStatsLabel' |
'showTalkWidgetLabel' |
'showTopSitesLabel' |
'showVpnWidgetLabel' |
'solidBackgroundLabel' |
'solidBackgroundTitle' |
'statsAdsBlockedText' |
'statsBandwidthSavedText' |
'statsTimeSavedText' |
'statsTitle' |
'talkAboutDataLink' |
'talkDescriptionText' |
'talkDescriptionTitle' |
'talkStartCallLabel' |
'talkWidgetTitle' |
'topSiteRemovedText' |
'topSitesCustomOptionText' |
'topSitesCustomOptionTitle' |
'topSitesMostVisitedOptionText' |
'topSitesMostVisitedOptionTitle' |
'topSitesSettingsTitle' |
'topSitesShowCustomLabel' |
'topSitesShowLessLabel' |
'topSitesShowMoreLabel' |
'topSitesShowMostVisitedLabel' |
'topSitesTitleLabel' |
'topSitesURLLabel' |
'undoButtonLabel' |
'uploadBackgroundLabel' |
'vpnChangeRegionLabel' |
'vpnFeatureText1' |
'vpnFeatureText2' |
'vpnFeatureText3' |
'vpnOptimalText' |
'vpnPoweredByText' |
'vpnRestorePurchaseLabel' |
'vpnStartTrialLabel' |
'vpnStatusConnected' |
'vpnStatusConnecting' |
'vpnStatusDisconnected' |
'vpnStatusDisconnecting' |
'vpnWidgetTitle' |
'widgetSettingsTitle'
'searchAskLeoDescription'
export function getString(key: StringKey) {
export function getString(
key: StringKey | BraveNewTabPageStrings | BraveNewsStrings
) {
return getLocale(key)
}
@@ -8,118 +8,15 @@ import { provideStrings } from '../../../../.storybook/locale'
import { StringKey } from '../lib/strings'
const localeStrings: Record<StringKey, string> = {
addTopSiteLabel: 'Add site',
addTopSiteTitle: 'Add site',
backgroundSettingsTitle: 'Background Image',
braveBackgroundLabel: 'Brave backgrounds',
cancelButtonLabel: 'Cancel',
clockFormatLabel: 'Format',
clockFormatOption12HourText: '12-hour clock',
clockFormatOption24HourText: '24-hour clock',
clockFormatOptionAutomaticText: 'Automatic ($1)',
clockSettingsTitle: 'Clock',
customBackgroundLabel: 'Use your own',
customBackgroundTitle: 'Use your own',
customizeSearchEnginesLink: 'Customize available engines',
editTopSiteLabel: 'Edit site',
editTopSiteTitle: 'Edit site',
enabledSearchEnginesLabel: 'Enabled search engines',
gradientBackgroundLabel: 'Gradients',
gradientBackgroundTitle: 'Gradients',
hideRewardsWidgetLabel: 'Hide Rewards card',
hideStatsWidgetLabel: 'Hide stats card',
hideTalkWidgetLabel: 'Hide Talk card',
hideTopSitesLabel: 'Hide top sites',
hideVpnWidgetLabel: 'Hide VPN card',
newsCustomizeButtonLabel: 'Customize News',
newsDisableButtonLabel: 'Disable News',
newsEnableButtonLabel: 'Turn on Brave News',
newsEnableText: 'Turn on Brave News, and never miss a story',
newsHideButtonLabel: 'Hide News',
newsSettingsTitle: 'Brave News',
newsWidgetTitle: 'NEWS',
photoCreditsText: 'Photo by $1',
randomizeBackgroundLabel: 'Refresh on every new tab',
removeTopSiteLabel: 'Remove',
rewardsAdsViewedTooltip: 'This shows the number of Brave Ads you\'ve seen this month that qualify for earning BAT.',
rewardsBalanceTitle: 'Rewards balance',
rewardsConnectButtonLabel: 'Connect',
rewardsConnectText: 'Connect a payout account',
rewardsConnectTitle: 'Ready to start earning?',
rewardsFeatureText1: 'Get paid for private ads you see in Brave',
rewardsFeatureText2: 'Get special benefits and discounts',
rewardsLoginButtonLabel: 'Log in',
rewardsLoginText: 'Log in to your $1 account to see your balance',
rewardsLoginTitle: 'Log in to see your balance',
rewardsOnboardingButtonLabel: 'Start using Brave Rewards',
rewardsOnboardingLink: 'How does it work?',
rewardsPayoutCompletedText: 'The payout for $1 rewards has completed.',
rewardsPayoutDetailsLink: 'Details',
rewardsPayoutProcessingText: 'The payout for $1 rewards is in progress.',
rewardsTosUpdateButtonLabel: 'Review Terms',
rewardsTosUpdateText: 'Weve updated our Terms of Service. To keep using Brave Rewards, please review and agree to the updated terms.',
rewardsTosUpdateText: 'We\'ve updated our Terms of Service. To keep using Brave Rewards, please review and agree to the updated terms.',
rewardsTosUpdateTitle: 'Updated Terms of Service',
rewardsWidgetTitle: 'REWARDS',
saveChangesButtonLabel: 'Save changes',
searchAskLeoDescription: 'Ask Leo',
searchBoxPlaceholderText: 'Search the web',
searchBoxPlaceholderTextBrave: 'Ask Brave Search',
searchCustomizeEngineListText: 'Customize list',
searchSettingsTitle: 'Search',
searchSuggestionsDismissButtonLabel: 'No thanks',
searchSuggestionsEnableButtonLabel: 'Enable',
searchSuggestionsPromptText: 'When you search, what you type will be sent to your search engine for better suggestions.',
searchSuggestionsPromptTitle: 'Enable search suggestions?',
settingsTitle: 'Customize New Tab Page',
showBackgroundsLabel: 'Show Background Images',
showClockLabel: 'Show clock',
showRewardsWidgetLabel: 'Brave Rewards',
showSearchBoxLabel: 'Show search widget in new tabs',
showSponsoredImagesEarningText: 'With $1Brave Rewards$2, you can earn for seeing new tab page ads.',
showSponsoredImagesLabel: 'Show new tab page ads',
showStatsLabel: 'Brave Stats',
showTalkWidgetLabel: 'Brave Talk',
showTopSitesLabel: 'Show top sites',
showVpnWidgetLabel: 'Brave VPN',
solidBackgroundLabel: 'Solid colors',
solidBackgroundTitle: 'Solid colors',
statsAdsBlockedText: 'Trackers & ads blocked',
statsBandwidthSavedText: 'Bandwidth saved',
statsTimeSavedText: 'Time saved',
statsTitle: 'STATS',
talkAboutDataLink: 'About your data',
talkDescriptionText: 'Encrypted video calls with Brave Talk',
talkDescriptionTitle: 'Privacy-First Calls',
talkStartCallLabel: 'Start call',
talkWidgetTitle: 'TALK',
topSiteRemovedText: 'Top site removed',
topSitesCustomOptionText: 'Top sites are curated by you',
topSitesCustomOptionTitle: 'Favorites',
topSitesMostVisitedOptionText: 'Top sites are suggested based on websites you visit often.',
topSitesMostVisitedOptionTitle: 'Frequently Visited',
topSitesSettingsTitle: 'Top Sites',
topSitesShowCustomLabel: 'Show favorites',
topSitesShowLessLabel: 'Show fewer items',
topSitesShowMoreLabel: 'Show more items',
topSitesShowMostVisitedLabel: 'Show frequently visited',
topSitesTitleLabel: 'Name',
topSitesURLLabel: 'URL',
undoButtonLabel: 'Undo',
uploadBackgroundLabel: 'Upload from device',
vpnChangeRegionLabel: 'Change',
vpnFeatureText1: 'Extra privacy & security online',
vpnFeatureText2: 'Hide your IP & change your location',
vpnFeatureText3: 'Protect every app on your device',
vpnRestorePurchaseLabel: 'Already purchased?',
vpnStartTrialLabel: 'Start free trial',
vpnOptimalText: 'Optimal',
vpnPoweredByText: 'Powered by',
vpnStatusConnected: 'Connected',
vpnStatusConnecting: 'Connecting',
vpnStatusDisconnected: 'Disconnected',
vpnStatusDisconnecting: 'Disconnecting',
vpnWidgetTitle: 'BRAVE VPN',
widgetSettingsTitle: 'Cards'
searchAskLeoDescription: 'Ask Leo'
}
provideStrings(localeStrings)
@@ -173,135 +173,18 @@ void NewTabPageInitializer::AddLoadTimeValues() {
void NewTabPageInitializer::AddStrings() {
static constexpr webui::LocalizedString kStrings[] = {
{"addTopSiteLabel", IDS_NEW_TAB_ADD_TOP_SITE_LABEL},
{"addTopSiteTitle", IDS_NEW_TAB_ADD_TOP_SITE_TITLE},
{"backgroundSettingsTitle", IDS_NEW_TAB_BACKGROUND_SETTINGS_TITLE},
{"braveBackgroundLabel", IDS_NEW_TAB_BRAVE_BACKGROUND_LABEL},
{"cancelButtonLabel", IDS_NEW_TAB_CANCEL_BUTTON_LABEL},
{"clockFormatLabel", IDS_NEW_TAB_CLOCK_FORMAT_LABEL},
{"clockFormatOption12HourText",
IDS_NEW_TAB_CLOCK_FORMAT_OPTION12HOUR_TEXT},
{"clockFormatOption24HourText",
IDS_NEW_TAB_CLOCK_FORMAT_OPTION24HOUR_TEXT},
{"clockFormatOptionAutomaticText",
IDS_NEW_TAB_CLOCK_FORMAT_OPTION_AUTOMATIC_TEXT},
{"clockSettingsTitle", IDS_NEW_TAB_CLOCK_SETTINGS_TITLE},
{"customBackgroundLabel", IDS_NEW_TAB_CUSTOM_BACKGROUND_LABEL},
{"customBackgroundTitle", IDS_NEW_TAB_CUSTOM_BACKGROUND_LABEL},
{"customizeSearchEnginesLink", IDS_NEW_TAB_CUSTOMIZE_SEARCH_ENGINES_LINK},
{"editTopSiteLabel", IDS_NEW_TAB_EDIT_TOP_SITE_LABEL},
{"editTopSiteTitle", IDS_NEW_TAB_EDIT_TOP_SITE_TITLE},
{"enabledSearchEnginesLabel", IDS_NEW_TAB_ENABLED_SEARCH_ENGINES_LABEL},
{"gradientBackgroundLabel", IDS_NEW_TAB_GRADIENT_BACKGROUND_LABEL},
{"gradientBackgroundTitle", IDS_NEW_TAB_GRADIENT_BACKGROUND_LABEL},
{"hideRewardsWidgetLabel", IDS_NEW_TAB_HIDE_REWARDS_WIDGET_LABEL},
{"hideStatsWidgetLabel", IDS_NEW_TAB_HIDE_STATS_WIDGET_LABEL},
{"hideTalkWidgetLabel", IDS_NEW_TAB_HIDE_TALK_WIDGET_LABEL},
{"hideTopSitesLabel", IDS_NEW_TAB_HIDE_TOP_SITES_LABEL},
{"hideVpnWidgetLabel", IDS_NEW_TAB_HIDE_VPN_WIDGET_LABEL},
{"newsCustomizeButtonLabel", IDS_NEW_TAB_NEWS_CUSTOMIZE_BUTTON_LABEL},
{"newsDisableButtonLabel", IDS_NEW_TAB_NEWS_DISABLE_BUTTON_LABEL},
{"hideTopSitesLabel", IDS_NEW_TAB_HIDE_TOP_SITES_LABEL},
{"newsEnableButtonLabel", IDS_BRAVE_NEWS_OPT_IN_ACTION_LABEL},
{"newsEnableText", IDS_BRAVE_NEWS_INTRO_TITLE},
{"newsHideButtonLabel", IDS_NEW_TAB_NEWS_HIDE_BUTTON_LABEL},
{"newsSettingsTitle", IDS_BRAVE_NEWS_SETTINGS_TITLE},
{"newsWidgetTitle", IDS_NEW_TAB_NEWS_WIDGET_TITLE},
{"photoCreditsText", IDS_NEW_TAB_PHOTO_CREDITS_TEXT},
{"randomizeBackgroundLabel", IDS_NEW_TAB_RANDOMIZE_BACKGROUND_LABEL},
{"removeTopSiteLabel", IDS_NEW_TAB_REMOVE_TOP_SITE_LABEL},
{"rewardsAdsViewedTooltip", IDS_REWARDS_ADS_VIEWED_TOOLTIP},
{"rewardsBalanceTitle", IDS_NEW_TAB_REWARDS_BALANCE_TITLE},
{"rewardsConnectButtonLabel", IDS_NEW_TAB_REWARDS_CONNECT_BUTTON_LABEL},
{"rewardsConnectText", IDS_NEW_TAB_REWARDS_CONNECT_TEXT},
{"rewardsConnectTitle", IDS_NEW_TAB_REWARDS_CONNECT_TITLE},
{"rewardsFeatureText1", IDS_REWARDS_ONBOARDING_TEXT_ITEM_1},
{"rewardsFeatureText2", IDS_REWARDS_ONBOARDING_TEXT_ITEM_2},
{"rewardsLoginButtonLabel", IDS_NEW_TAB_REWARDS_LOGIN_BUTTON_LABEL},
{"rewardsLoginText", IDS_NEW_TAB_REWARDS_LOGIN_TEXT},
{"rewardsLoginTitle", IDS_NEW_TAB_REWARDS_LOGIN_TITLE},
{"rewardsOnboardingButtonLabel",
IDS_NEW_TAB_REWARDS_ONBOARDING_BUTTON_LABEL},
{"rewardsOnboardingLink", IDS_NEW_TAB_REWARDS_ONBOARDING_LINK},
{"rewardsPayoutCompletedText", IDS_REWARDS_PAYMENT_COMPLETED},
{"rewardsPayoutDetailsLink", IDS_NEW_TAB_REWARDS_PAYOUT_DETAILS_LINK},
{"rewardsPayoutCompleteText", IDS_REWARDS_PAYMENT_COMPLETED},
{"rewardsPayoutProcessingText", IDS_REWARDS_PAYMENT_PROCESSING},
{"rewardsTosUpdateButtonLabel", IDS_REWARDS_TOS_UPDATE_NTP_BUTTON_LABEL},
{"rewardsTosUpdateText", IDS_REWARDS_TOS_UPDATE_NTP_TEXT},
{"rewardsTosUpdateTitle", IDS_REWARDS_TOS_UPDATE_HEADING},
{"rewardsWidgetTitle", IDS_NEW_TAB_REWARDS_WIDGET_TITLE},
{"saveChangesButtonLabel", IDS_NEW_TAB_SAVE_CHANGES_BUTTON_LABEL},
{"searchAskLeoDescription", IDS_OMNIBOX_ASK_LEO_DESCRIPTION},
{"searchBoxPlaceholderText", IDS_NEW_TAB_SEARCH_BOX_PLACEHOLDER_TEXT},
{"searchBoxPlaceholderTextBrave",
IDS_NEW_TAB_SEARCH_BOX_PLACEHOLDER_TEXT_BRAVE},
{"searchCustomizeEngineListText",
IDS_NEW_TAB_SEARCH_CUSTOMIZE_ENGINE_LIST_TEXT},
{"searchSettingsTitle", IDS_NEW_TAB_SEARCH_SETTINGS_TITLE},
{"searchSuggestionsDismissButtonLabel",
IDS_NEW_TAB_SEARCH_SUGGESTIONS_DISMISS_BUTTON_LABEL},
{"searchSuggestionsEnableButtonLabel",
IDS_NEW_TAB_SEARCH_SUGGESTIONS_ENABLE_BUTTON_LABEL},
{"searchSuggestionsPromptText",
IDS_NEW_TAB_SEARCH_SUGGESTIONS_PROMPT_TEXT},
{"searchSuggestionsPromptTitle",
IDS_NEW_TAB_SEARCH_SUGGESTIONS_PROMPT_TITLE},
{"settingsTitle", IDS_NEW_TAB_SETTINGS_TITLE},
{"showBackgroundsLabel", IDS_NEW_TAB_SHOW_BACKGROUNDS_LABEL},
{"showClockLabel", IDS_NEW_TAB_SHOW_CLOCK_LABEL},
{"showRewardsWidgetLabel", IDS_NEW_TAB_SHOW_REWARDS_WIDGET_LABEL},
{"showSearchBoxLabel", IDS_NEW_TAB_SHOW_SEARCH_BOX_LABEL},
{"showSponsoredImagesEarningText",
IDS_NEW_TAB_SHOW_SPONSORED_IMAGES_EARNING_TEXT},
{"showSponsoredImagesLabel", IDS_NEW_TAB_SHOW_SPONSORED_IMAGES_LABEL},
{"showStatsLabel", IDS_NEW_TAB_SHOW_STATS_LABEL},
{"showTalkWidgetLabel", IDS_NEW_TAB_SHOW_TALK_WIDGET_LABEL},
{"showTopSitesLabel", IDS_NEW_TAB_SHOW_TOP_SITES_LABEL},
{"showVpnWidgetLabel", IDS_NEW_TAB_SHOW_VPN_WIDGET_LABEL},
{"solidBackgroundLabel", IDS_NEW_TAB_SOLID_BACKGROUND_LABEL},
{"solidBackgroundTitle", IDS_NEW_TAB_SOLID_BACKGROUND_LABEL},
{"statsAdsBlockedText", IDS_NEW_TAB_STATS_ADS_BLOCKED_TEXT},
{"statsBandwidthSavedText", IDS_NEW_TAB_STATS_BANDWIDTH_SAVED_TEXT},
{"statsTimeSavedText", IDS_NEW_TAB_STATS_TIME_SAVED_TEXT},
{"statsTitle", IDS_NEW_TAB_STATS_TITLE},
{"talkAboutDataLink", IDS_NEW_TAB_TALK_ABOUT_DATA_LINK},
{"talkDescriptionText", IDS_NEW_TAB_TALK_DESCRIPTION_TEXT},
{"talkDescriptionTitle", IDS_NEW_TAB_TALK_DESCRIPTION_TITLE},
{"talkStartCallLabel", IDS_NEW_TAB_TALK_START_CALL_LABEL},
{"talkWidgetTitle", IDS_NEW_TAB_TALK_WIDGET_TITLE},
{"topSiteRemovedText", IDS_NEW_TAB_TOP_SITE_REMOVED_TEXT},
{"topSitesCustomOptionText", IDS_NEW_TAB_TOP_SITES_CUSTOM_OPTION_TEXT},
{"topSitesCustomOptionTitle", IDS_NEW_TAB_TOP_SITES_CUSTOM_OPTION_TITLE},
{"topSitesMostVisitedOptionText",
IDS_NEW_TAB_TOP_SITES_MOST_VISITED_OPTION_TEXT},
{"topSitesMostVisitedOptionTitle",
IDS_NEW_TAB_TOP_SITES_MOST_VISITED_OPTION_TITLE},
{"topSitesSettingsTitle", IDS_NEW_TAB_TOP_SITES_SETTINGS_TITLE},
{"topSitesShowCustomLabel", IDS_NEW_TAB_TOP_SITES_SHOW_CUSTOM_LABEL},
{"topSitesShowLessLabel", IDS_NEW_TAB_TOP_SITES_SHOW_LESS_LABEL},
{"topSitesShowMoreLabel", IDS_NEW_TAB_TOP_SITES_SHOW_MORE_LABEL},
{"topSitesShowMostVisitedLabel",
IDS_NEW_TAB_TOP_SITES_SHOW_MOST_VISITED_LABEL},
{"topSitesTitleLabel", IDS_NEW_TAB_TOP_SITES_TITLE_LABEL},
{"topSitesURLLabel", IDS_NEW_TAB_TOP_SITES_URL_LABEL},
{"undoButtonLabel", IDS_NEW_TAB_UNDO_BUTTON_LABEL},
{"uploadBackgroundLabel", IDS_NEW_TAB_UPLOAD_BACKGROUND_LABEL},
{"vpnChangeRegionLabel", IDS_NEW_TAB_VPN_CHANGE_REGION_LABEL},
{"vpnFeatureText1", IDS_NEW_TAB_VPN_FEATURE_TEXT1},
{"vpnFeatureText2", IDS_NEW_TAB_VPN_FEATURE_TEXT2},
{"vpnFeatureText3", IDS_NEW_TAB_VPN_FEATURE_TEXT3},
{"vpnRestorePurchaseLabel", IDS_NEW_TAB_VPN_RESTORE_PURCHASE_LABEL},
{"vpnStartTrialLabel", IDS_NEW_TAB_VPN_START_TRIAL_LABEL},
{"vpnOptimalText", IDS_NEW_TAB_VPN_OPTIMAL_TEXT},
{"vpnPoweredByText", IDS_NEW_TAB_VPN_POWERED_BY_TEXT},
{"vpnStatusConnected", IDS_NEW_TAB_VPN_STATUS_CONNECTED},
{"vpnStatusConnecting", IDS_NEW_TAB_VPN_STATUS_CONNECTING},
{"vpnStatusDisconnected", IDS_NEW_TAB_VPN_STATUS_DISCONNECTED},
{"vpnStatusDisconnecting", IDS_NEW_TAB_VPN_STATUS_DISCONNECTING},
{"vpnWidgetTitle", IDS_NEW_TAB_VPN_WIDGET_TITLE},
{"widgetSettingsTitle", IDS_NEW_TAB_WIDGET_SETTINGS_TITLE}};
{"searchAskLeoDescription", IDS_OMNIBOX_ASK_LEO_DESCRIPTION}};
source_->AddLocalizedStrings(kStrings);
source_->AddLocalizedStrings(webui::kBraveNewTabPageStrings);
source_->AddLocalizedStrings(webui::kBraveNewsStrings);
}
@@ -1,391 +1,391 @@
<?xml version="1.0" encoding="UTF-8"?>
<grit-part>
<message name="IDS_NEW_TAB_ADD_TOP_SITE_LABEL" desc="Label button that opens the Add Site dialog">
<message name="IDS_NEW_TAB_ADD_TOP_SITE_LABEL" desc="Label button that opens the Add Site dialog" formatter_data="webui=BraveNewTabPage">
Add site
</message>
<message name="IDS_NEW_TAB_ADD_TOP_SITE_TITLE" desc="Title of the Add Site dialog">
<message name="IDS_NEW_TAB_ADD_TOP_SITE_TITLE" desc="Title of the Add Site dialog" formatter_data="webui=BraveNewTabPage">
Add site
</message>
<message name="IDS_NEW_TAB_BACKGROUND_SETTINGS_TITLE" desc="Title for background image settings">
<message name="IDS_NEW_TAB_BACKGROUND_SETTINGS_TITLE" desc="Title for background image settings" formatter_data="webui=BraveNewTabPage">
Background Image
</message>
<message name="IDS_NEW_TAB_BRAVE_BACKGROUND_LABEL" desc="Label for Brave background option">
<message name="IDS_NEW_TAB_BRAVE_BACKGROUND_LABEL" desc="Label for Brave background option" formatter_data="webui=BraveNewTabPage">
Brave backgrounds
</message>
<message name="IDS_NEW_TAB_CANCEL_BUTTON_LABEL" desc="Label for cancel button">
<message name="IDS_NEW_TAB_CANCEL_BUTTON_LABEL" desc="Label for cancel button" formatter_data="webui=BraveNewTabPage">
Cancel
</message>
<message name="IDS_NEW_TAB_CLOCK_FORMAT_LABEL" desc="Label for the clock format drop-down on the settings dialog">
<message name="IDS_NEW_TAB_CLOCK_FORMAT_LABEL" desc="Label for the clock format drop-down on the settings dialog" formatter_data="webui=BraveNewTabPage">
Format
</message>
<message name="IDS_NEW_TAB_CLOCK_FORMAT_OPTION12HOUR_TEXT" desc="Text for the 12-hour clock format option">
<message name="IDS_NEW_TAB_CLOCK_FORMAT_OPTION12HOUR_TEXT" desc="Text for the 12-hour clock format option" formatter_data="webui=BraveNewTabPage">
12-hour clock
</message>
<message name="IDS_NEW_TAB_CLOCK_FORMAT_OPTION24HOUR_TEXT" desc="Text for the 24-hour clock format option">
<message name="IDS_NEW_TAB_CLOCK_FORMAT_OPTION24HOUR_TEXT" desc="Text for the 24-hour clock format option" formatter_data="webui=BraveNewTabPage">
24-hour clock
</message>
<message name="IDS_NEW_TAB_CLOCK_FORMAT_OPTION_AUTOMATIC_TEXT" desc="Text for the automatic clock format option">
<message name="IDS_NEW_TAB_CLOCK_FORMAT_OPTION_AUTOMATIC_TEXT" desc="Text for the automatic clock format option" formatter_data="webui=BraveNewTabPage">
Automatic (<ph name="LOCALE">$1<ex>en-US</ex></ph>)
</message>
<message name="IDS_NEW_TAB_CLOCK_SETTINGS_TITLE" desc="Title of the clock settings panel">
<message name="IDS_NEW_TAB_CLOCK_SETTINGS_TITLE" desc="Title of the clock settings panel" formatter_data="webui=BraveNewTabPage">
Clock
</message>
<message name="IDS_NEW_TAB_CUSTOM_BACKGROUND_LABEL" desc="Label for custom background option">
<message name="IDS_NEW_TAB_CUSTOM_BACKGROUND_LABEL" desc="Label for custom background option" formatter_data="webui=BraveNewTabPage">
Use your own
</message>
<message name="IDS_NEW_TAB_CUSTOMIZE_SEARCH_ENGINES_LINK" desc="Link text for customizing available search engines in settings">
<message name="IDS_NEW_TAB_CUSTOMIZE_SEARCH_ENGINES_LINK" desc="Link text for customizing available search engines in settings" formatter_data="webui=BraveNewTabPage">
Customize available engines
</message>
<message name="IDS_NEW_TAB_EDIT_TOP_SITE_LABEL" desc="Label for button that opens the Edit Site dialog">
<message name="IDS_NEW_TAB_EDIT_TOP_SITE_LABEL" desc="Label for button that opens the Edit Site dialog" formatter_data="webui=BraveNewTabPage">
Edit site
</message>
<message name="IDS_NEW_TAB_EDIT_TOP_SITE_TITLE" desc="Title of the Edit Site dialog">
<message name="IDS_NEW_TAB_EDIT_TOP_SITE_TITLE" desc="Title of the Edit Site dialog" formatter_data="webui=BraveNewTabPage">
Edit site
</message>
<message name="IDS_NEW_TAB_ENABLED_SEARCH_ENGINES_LABEL" desc="Label for the list of search engines">
<message name="IDS_NEW_TAB_ENABLED_SEARCH_ENGINES_LABEL" desc="Label for the list of search engines" formatter_data="webui=BraveNewTabPage">
Enabled search engines
</message>
<message name="IDS_NEW_TAB_GRADIENT_BACKGROUND_LABEL" desc="Gradient background colors title">
<message name="IDS_NEW_TAB_GRADIENT_BACKGROUND_LABEL" desc="Gradient background colors title" formatter_data="webui=BraveNewTabPage">
Gradients
</message>
<message name="IDS_NEW_TAB_HIDE_REWARDS_WIDGET_LABEL" desc="Label for button that hides the Rewards widget">
<message name="IDS_NEW_TAB_HIDE_REWARDS_WIDGET_LABEL" desc="Label for button that hides the Rewards widget" formatter_data="webui=BraveNewTabPage">
Hide Rewards card
</message>
<message name="IDS_NEW_TAB_HIDE_STATS_WIDGET_LABEL" desc="Label for button that hides the Rewards widget">
<message name="IDS_NEW_TAB_HIDE_STATS_WIDGET_LABEL" desc="Label for button that hides the Rewards widget" formatter_data="webui=BraveNewTabPage">
Hide stats card
</message>
<message name="IDS_NEW_TAB_HIDE_TALK_WIDGET_LABEL" desc="Label for button that hides the Talk widget">
<message name="IDS_NEW_TAB_HIDE_TALK_WIDGET_LABEL" desc="Label for button that hides the Talk widget" formatter_data="webui=BraveNewTabPage">
Hide Talk card
</message>
<message name="IDS_NEW_TAB_HIDE_TOP_SITES_LABEL" desc="Label for button that hides the top sites UI">
<message name="IDS_NEW_TAB_HIDE_TOP_SITES_LABEL" desc="Label for button that hides the top sites UI" formatter_data="webui=BraveNewTabPage">
Hide top sites
</message>
<message name="IDS_NEW_TAB_HIDE_VPN_WIDGET_LABEL" desc="Label for button that hides the VPN widget">
<message name="IDS_NEW_TAB_HIDE_VPN_WIDGET_LABEL" desc="Label for button that hides the VPN widget" formatter_data="webui=BraveNewTabPage">
Hide VPN card
</message>
<message name="IDS_NEW_TAB_NEWS_CUSTOMIZE_BUTTON_LABEL" desc="Label for button that opens the News settings modal">
<message name="IDS_NEW_TAB_NEWS_CUSTOMIZE_BUTTON_LABEL" desc="Label for button that opens the News settings modal" formatter_data="webui=BraveNewTabPage">
Customize News
</message>
<message name="IDS_NEW_TAB_NEWS_DISABLE_BUTTON_LABEL" desc="Label for button that disables News on the NTP">
<message name="IDS_NEW_TAB_NEWS_DISABLE_BUTTON_LABEL" desc="Label for button that disables News on the NTP" formatter_data="webui=BraveNewTabPage">
Disable News
</message>
<message name="IDS_NEW_TAB_NEWS_HIDE_BUTTON_LABEL" desc="Label for button that hides News on the NTP">
<message name="IDS_NEW_TAB_NEWS_HIDE_BUTTON_LABEL" desc="Label for button that hides News on the NTP" formatter_data="webui=BraveNewTabPage">
Hide News
</message>
<message name="IDS_NEW_TAB_NEWS_WIDGET_TITLE" desc="Title for Brave News widget">
<message name="IDS_NEW_TAB_NEWS_WIDGET_TITLE" desc="Title for Brave News widget" formatter_data="webui=BraveNewTabPage">
NEWS
</message>
<message name="IDS_NEW_TAB_PHOTO_CREDITS_TEXT" desc="Photographer credits for Brave background images">
<message name="IDS_NEW_TAB_PHOTO_CREDITS_TEXT" desc="Photographer credits for Brave background images" formatter_data="webui=BraveNewTabPage">
Photo by <ph name="AUTHOR">$1</ph>
</message>
<message name="IDS_NEW_TAB_RANDOMIZE_BACKGROUND_LABEL" desc="Label for random toggle button">
<message name="IDS_NEW_TAB_RANDOMIZE_BACKGROUND_LABEL" desc="Label for random toggle button" formatter_data="webui=BraveNewTabPage">
Refresh on every new tab
</message>
<message name="IDS_NEW_TAB_REMOVE_TOP_SITE_LABEL" desc="Label for button that removes a top site">
<message name="IDS_NEW_TAB_REMOVE_TOP_SITE_LABEL" desc="Label for button that removes a top site" formatter_data="webui=BraveNewTabPage">
Remove
</message>
<message name="IDS_NEW_TAB_REWARDS_BALANCE_TITLE" desc="Title for balance section on Rewards NTP widget">
<message name="IDS_NEW_TAB_REWARDS_BALANCE_TITLE" desc="Title for balance section on Rewards NTP widget" formatter_data="webui=BraveNewTabPage">
Rewards balance
</message>
<message name="IDS_NEW_TAB_REWARDS_CONNECT_BUTTON_LABEL" desc="Label for button to connect a Rewards payment account">
<message name="IDS_NEW_TAB_REWARDS_CONNECT_BUTTON_LABEL" desc="Label for button to connect a Rewards payment account" formatter_data="webui=BraveNewTabPage">
Connect
</message>
<message name="IDS_NEW_TAB_REWARDS_CONNECT_TEXT" desc="Text for connect account section of the Rewards NTP widget">
<message name="IDS_NEW_TAB_REWARDS_CONNECT_TEXT" desc="Text for connect account section of the Rewards NTP widget" formatter_data="webui=BraveNewTabPage">
Connect a payout account
</message>
<message name="IDS_NEW_TAB_REWARDS_CONNECT_TITLE" desc="Title for connect account section of the Rewards NTP widget">
<message name="IDS_NEW_TAB_REWARDS_CONNECT_TITLE" desc="Title for connect account section of the Rewards NTP widget" formatter_data="webui=BraveNewTabPage">
Ready to start earning?
</message>
<message name="IDS_NEW_TAB_REWARDS_LOGIN_BUTTON_LABEL" desc="Label for button allowing users to reconnect to their account">
<message name="IDS_NEW_TAB_REWARDS_LOGIN_BUTTON_LABEL" desc="Label for button allowing users to reconnect to their account" formatter_data="webui=BraveNewTabPage">
Log in
</message>
<message name="IDS_NEW_TAB_REWARDS_LOGIN_TEXT" desc="Text describing action needed to reconnect a Rewards account">
<message name="IDS_NEW_TAB_REWARDS_LOGIN_TEXT" desc="Text describing action needed to reconnect a Rewards account" formatter_data="webui=BraveNewTabPage">
Log in to your <ph name="PROVIDER">$1</ph> account to see your balance
</message>
<message name="IDS_NEW_TAB_REWARDS_LOGIN_TITLE" desc="Title for action needed to reconnect a Rewards account">
<message name="IDS_NEW_TAB_REWARDS_LOGIN_TITLE" desc="Title for action needed to reconnect a Rewards account" formatter_data="webui=BraveNewTabPage">
Log in to see your balance
</message>
<message name="IDS_NEW_TAB_REWARDS_ONBOARDING_BUTTON_LABEL" desc="Label for the Rewards onboarding button">
<message name="IDS_NEW_TAB_REWARDS_ONBOARDING_BUTTON_LABEL" desc="Label for the Rewards onboarding button" formatter_data="webui=BraveNewTabPage">
Start using Brave Rewards
</message>
<message name="IDS_NEW_TAB_REWARDS_ONBOARDING_LINK" desc="Text for Rewards onboarding link">
<message name="IDS_NEW_TAB_REWARDS_ONBOARDING_LINK" desc="Text for Rewards onboarding link" formatter_data="webui=BraveNewTabPage">
How does it work?
</message>
<message name="IDS_NEW_TAB_REWARDS_PAYOUT_DETAILS_LINK" desc="Text for link to more information about Rewards payouts">
<message name="IDS_NEW_TAB_REWARDS_PAYOUT_DETAILS_LINK" desc="Text for link to more information about Rewards payouts" formatter_data="webui=BraveNewTabPage">
Details
</message>
<message name="IDS_NEW_TAB_REWARDS_WIDGET_TITLE" desc="Title of the Rewards NTP widget">
<message name="IDS_NEW_TAB_REWARDS_WIDGET_TITLE" desc="Title of the Rewards NTP widget" formatter_data="webui=BraveNewTabPage">
REWARDS
</message>
<message name="IDS_NEW_TAB_SAVE_CHANGES_BUTTON_LABEL" desc="Label for button that saves changes">
<message name="IDS_NEW_TAB_SAVE_CHANGES_BUTTON_LABEL" desc="Label for button that saves changes" formatter_data="webui=BraveNewTabPage">
Save changes
</message>
<message name="IDS_NEW_TAB_SEARCH_BOX_PLACEHOLDER_TEXT" desc="Placeholder text for when Brave is not the selected search engine">
<message name="IDS_NEW_TAB_SEARCH_BOX_PLACEHOLDER_TEXT" desc="Placeholder text for when Brave is not the selected search engine" formatter_data="webui=BraveNewTabPage">
Search the web
</message>
<message name="IDS_NEW_TAB_SEARCH_BOX_PLACEHOLDER_TEXT_BRAVE" desc="Placeholder text for when Brave is the selected search engine">
<message name="IDS_NEW_TAB_SEARCH_BOX_PLACEHOLDER_TEXT_BRAVE" desc="Placeholder text for when Brave is the selected search engine" formatter_data="webui=BraveNewTabPage">
Ask Brave Search
</message>
<message name="IDS_NEW_TAB_SEARCH_CUSTOMIZE_ENGINE_LIST_TEXT" desc="Label for the customize list action">
<message name="IDS_NEW_TAB_SEARCH_CUSTOMIZE_ENGINE_LIST_TEXT" desc="Label for the customize list action" formatter_data="webui=BraveNewTabPage">
Customize list
</message>
<message name="IDS_NEW_TAB_SEARCH_SETTINGS_TITLE" desc="Title for search settings">
<message name="IDS_NEW_TAB_SEARCH_SETTINGS_TITLE" desc="Title for search settings" formatter_data="webui=BraveNewTabPage">
Search
</message>
<message name="IDS_NEW_TAB_SEARCH_SUGGESTIONS_DISMISS_BUTTON_LABEL" desc="Label for button to dismiss the search suggestions prompt">
<message name="IDS_NEW_TAB_SEARCH_SUGGESTIONS_DISMISS_BUTTON_LABEL" desc="Label for button to dismiss the search suggestions prompt" formatter_data="webui=BraveNewTabPage">
No thanks
</message>
<message name="IDS_NEW_TAB_SEARCH_SUGGESTIONS_ENABLE_BUTTON_LABEL" desc="Label for button to enable search suggestions">
<message name="IDS_NEW_TAB_SEARCH_SUGGESTIONS_ENABLE_BUTTON_LABEL" desc="Label for button to enable search suggestions" formatter_data="webui=BraveNewTabPage">
Enable
</message>
<message name="IDS_NEW_TAB_SEARCH_SUGGESTIONS_PROMPT_TEXT" desc="Text describing search suggestions">
<message name="IDS_NEW_TAB_SEARCH_SUGGESTIONS_PROMPT_TEXT" desc="Text describing search suggestions" formatter_data="webui=BraveNewTabPage">
When you search, what you type will be sent to your search engine for better suggestions.
</message>
<message name="IDS_NEW_TAB_SEARCH_SUGGESTIONS_PROMPT_TITLE" desc="Title for search suggestions prompt">
<message name="IDS_NEW_TAB_SEARCH_SUGGESTIONS_PROMPT_TITLE" desc="Title for search suggestions prompt" formatter_data="webui=BraveNewTabPage">
Enable search suggestions?
</message>
<message name="IDS_NEW_TAB_SETTINGS_TITLE" desc="Title for settings dialog">
<message name="IDS_NEW_TAB_SETTINGS_TITLE" desc="Title for settings dialog" formatter_data="webui=BraveNewTabPage">
Customize New Tab Page
</message>
<message name="IDS_NEW_TAB_SHOW_BACKGROUNDS_LABEL" desc="Text for settings background option">
<message name="IDS_NEW_TAB_SHOW_BACKGROUNDS_LABEL" desc="Text for settings background option" formatter_data="webui=BraveNewTabPage">
Show Background Images
</message>
<message name="IDS_NEW_TAB_SHOW_CLOCK_LABEL" desc="Label for enabling the clock on the NTP">
<message name="IDS_NEW_TAB_SHOW_CLOCK_LABEL" desc="Label for enabling the clock on the NTP" formatter_data="webui=BraveNewTabPage">
Show clock
</message>
<message name="IDS_NEW_TAB_SHOW_REWARDS_WIDGET_LABEL" desc="Label for enabling the Rewards widget on the NTP">
<message name="IDS_NEW_TAB_SHOW_REWARDS_WIDGET_LABEL" desc="Label for enabling the Rewards widget on the NTP" formatter_data="webui=BraveNewTabPage">
Brave Rewards
</message>
<message name="IDS_NEW_TAB_SHOW_SEARCH_BOX_LABEL" desc="Label for enabling the searchbox on the NTP">
<message name="IDS_NEW_TAB_SHOW_SEARCH_BOX_LABEL" desc="Label for enabling the searchbox on the NTP" formatter_data="webui=BraveNewTabPage">
Show search widget in new tabs
</message>
<message name="IDS_NEW_TAB_SHOW_SPONSORED_IMAGES_EARNING_TEXT" desc="Text describing earning for new tab page ads">
With <ph name="LINK_BEGIN">$1</ph>Brave Rewards<ph name="LINK_END">$2</ph>, you can earn for seeing new tab page ads.
<message name="IDS_NEW_TAB_SHOW_SPONSORED_IMAGES_EARNING_TEXT" desc="Text describing earning for new tab page ads" formatter_data="webui=BraveNewTabPage">
With <ph name="LINK_BEGIN">$1</ph>Brave Rewards<ph name="LINK_END">/$1</ph>, you can earn for seeing new tab page ads.
</message>
<message name="IDS_NEW_TAB_SHOW_SPONSORED_IMAGES_LABEL" desc="Text for setting to opt-in to Branded Wallpapers on New Tab Page">
<message name="IDS_NEW_TAB_SHOW_SPONSORED_IMAGES_LABEL" desc="Text for setting to opt-in to Branded Wallpapers on New Tab Page" formatter_data="webui=BraveNewTabPage">
Show new tab page ads
</message>
<message name="IDS_NEW_TAB_SHOW_STATS_LABEL" desc="Label for showing or hiding Brave Stats on the NTP">
<message name="IDS_NEW_TAB_SHOW_STATS_LABEL" desc="Label for showing or hiding Brave Stats on the NTP" formatter_data="webui=BraveNewTabPage">
Brave Stats
</message>
<message name="IDS_NEW_TAB_SHOW_TALK_WIDGET_LABEL" desc="Label for showing or hiding the Brave Talk widget on the NTP">
<message name="IDS_NEW_TAB_SHOW_TALK_WIDGET_LABEL" desc="Label for showing or hiding the Brave Talk widget on the NTP" formatter_data="webui=BraveNewTabPage">
Brave Talk
</message>
<message name="IDS_NEW_TAB_SHOW_TOP_SITES_LABEL" desc="Label for control that toggles top sites visibility">
<message name="IDS_NEW_TAB_SHOW_TOP_SITES_LABEL" desc="Label for control that toggles top sites visibility" formatter_data="webui=BraveNewTabPage">
Show top sites
</message>
<message name="IDS_NEW_TAB_SHOW_VPN_WIDGET_LABEL" desc="Label for showing or hiding the Brave VPN NTP widget">
<message name="IDS_NEW_TAB_SHOW_VPN_WIDGET_LABEL" desc="Label for showing or hiding the Brave VPN NTP widget" formatter_data="webui=BraveNewTabPage">
Brave VPN
</message>
<message name="IDS_NEW_TAB_SOLID_BACKGROUND_LABEL" desc="Solid background colors title">
<message name="IDS_NEW_TAB_SOLID_BACKGROUND_LABEL" desc="Solid background colors title" formatter_data="webui=BraveNewTabPage">
Solid colors
</message>
<message name="IDS_NEW_TAB_STATS_ADS_BLOCKED_TEXT" desc="Text for trackers and ads blocked stat">
<message name="IDS_NEW_TAB_STATS_ADS_BLOCKED_TEXT" desc="Text for trackers and ads blocked stat" formatter_data="webui=BraveNewTabPage">
Trackers &amp; ads blocked
</message>
<message name="IDS_NEW_TAB_STATS_BANDWIDTH_SAVED_TEXT" desc="Text for bandwidth saved stat">
<message name="IDS_NEW_TAB_STATS_BANDWIDTH_SAVED_TEXT" desc="Text for bandwidth saved stat" formatter_data="webui=BraveNewTabPage">
Bandwidth saved
</message>
<message name="IDS_NEW_TAB_STATS_TIME_SAVED_TEXT" desc="Text for time saved stat">
<message name="IDS_NEW_TAB_STATS_TIME_SAVED_TEXT" desc="Text for time saved stat" formatter_data="webui=BraveNewTabPage">
Time saved
</message>
<message name="IDS_NEW_TAB_STATS_TITLE" desc="Title for Brave Stats widget">
<message name="IDS_NEW_TAB_STATS_TITLE" desc="Title for Brave Stats widget" formatter_data="webui=BraveNewTabPage">
STATS
</message>
<message name="IDS_NEW_TAB_TALK_ABOUT_DATA_LINK" desc="Text for link to page describing Brave Talk data policies">
<message name="IDS_NEW_TAB_TALK_ABOUT_DATA_LINK" desc="Text for link to page describing Brave Talk data policies" formatter_data="webui=BraveNewTabPage">
About your data
</message>
<message name="IDS_NEW_TAB_TALK_DESCRIPTION_TEXT" desc="Description text for Brave Talk widget">
<message name="IDS_NEW_TAB_TALK_DESCRIPTION_TEXT" desc="Description text for Brave Talk widget" formatter_data="webui=BraveNewTabPage">
Encrypted video calls with Brave Talk
</message>
<message name="IDS_NEW_TAB_TALK_DESCRIPTION_TITLE" desc="Description title for Brave Talk widget">
<message name="IDS_NEW_TAB_TALK_DESCRIPTION_TITLE" desc="Description title for Brave Talk widget" formatter_data="webui=BraveNewTabPage">
Privacy-First Calls
</message>
<message name="IDS_NEW_TAB_TALK_START_CALL_LABEL" desc="Label for button that starts a Talk call">
<message name="IDS_NEW_TAB_TALK_START_CALL_LABEL" desc="Label for button that starts a Talk call" formatter_data="webui=BraveNewTabPage">
Start call
</message>
<message name="IDS_NEW_TAB_TALK_WIDGET_TITLE" desc="Title for Brave Talk NTP widget">
<message name="IDS_NEW_TAB_TALK_WIDGET_TITLE" desc="Title for Brave Talk NTP widget" formatter_data="webui=BraveNewTabPage">
TALK
</message>
<message name="IDS_NEW_TAB_TOP_SITE_REMOVED_TEXT" desc="Text displayed when a top site is removed">
<message name="IDS_NEW_TAB_TOP_SITE_REMOVED_TEXT" desc="Text displayed when a top site is removed" formatter_data="webui=BraveNewTabPage">
Top site removed
</message>
<message name="IDS_NEW_TAB_TOP_SITES_CUSTOM_OPTION_TEXT" desc="Text that describes custom top sites option">
<message name="IDS_NEW_TAB_TOP_SITES_CUSTOM_OPTION_TEXT" desc="Text that describes custom top sites option" formatter_data="webui=BraveNewTabPage">
Top sites are curated by you
</message>
<message name="IDS_NEW_TAB_TOP_SITES_CUSTOM_OPTION_TITLE" desc="Title for custom top sites option">
<message name="IDS_NEW_TAB_TOP_SITES_CUSTOM_OPTION_TITLE" desc="Title for custom top sites option" formatter_data="webui=BraveNewTabPage">
Favorites
</message>
<message name="IDS_NEW_TAB_TOP_SITES_MOST_VISITED_OPTION_TEXT" desc="Text that describes most visited top sites option">
<message name="IDS_NEW_TAB_TOP_SITES_MOST_VISITED_OPTION_TEXT" desc="Text that describes most visited top sites option" formatter_data="webui=BraveNewTabPage">
Top sites are suggested based on websites you visit often.
</message>
<message name="IDS_NEW_TAB_TOP_SITES_MOST_VISITED_OPTION_TITLE" desc="Title for most visited top sites option">
<message name="IDS_NEW_TAB_TOP_SITES_MOST_VISITED_OPTION_TITLE" desc="Title for most visited top sites option" formatter_data="webui=BraveNewTabPage">
Frequently Visited
</message>
<message name="IDS_NEW_TAB_TOP_SITES_SETTINGS_TITLE" desc="Title of top sites settings panel">
<message name="IDS_NEW_TAB_TOP_SITES_SETTINGS_TITLE" desc="Title of top sites settings panel" formatter_data="webui=BraveNewTabPage">
Top Sites
</message>
<message name="IDS_NEW_TAB_TOP_SITES_SHOW_CUSTOM_LABEL" desc="Label for button that switches top sites to favorites mode">
<message name="IDS_NEW_TAB_TOP_SITES_SHOW_CUSTOM_LABEL" desc="Label for button that switches top sites to favorites mode" formatter_data="webui=BraveNewTabPage">
Show favorites
</message>
<message name="IDS_NEW_TAB_TOP_SITES_SHOW_LESS_LABEL" desc="Label for button collapses the top sites component">
<message name="IDS_NEW_TAB_TOP_SITES_SHOW_LESS_LABEL" desc="Label for button collapses the top sites component" formatter_data="webui=BraveNewTabPage">
Show fewer items
</message>
<message name="IDS_NEW_TAB_TOP_SITES_SHOW_MORE_LABEL" desc="Label for button that expands the top sites component">
<message name="IDS_NEW_TAB_TOP_SITES_SHOW_MORE_LABEL" desc="Label for button that expands the top sites component" formatter_data="webui=BraveNewTabPage">
Show more items
</message>
<message name="IDS_NEW_TAB_TOP_SITES_SHOW_MOST_VISITED_LABEL" desc="Label for button that switches top sites to most visited mode">
<message name="IDS_NEW_TAB_TOP_SITES_SHOW_MOST_VISITED_LABEL" desc="Label for button that switches top sites to most visited mode" formatter_data="webui=BraveNewTabPage">
Show frequently visited
</message>
<message name="IDS_NEW_TAB_TOP_SITES_TITLE_LABEL" desc="Label for top site name input">
<message name="IDS_NEW_TAB_TOP_SITES_TITLE_LABEL" desc="Label for top site name input" formatter_data="webui=BraveNewTabPage">
Name
</message>
<message name="IDS_NEW_TAB_TOP_SITES_URL_LABEL" desc="Label for top site URL input">
<message name="IDS_NEW_TAB_TOP_SITES_URL_LABEL" desc="Label for top site URL input" formatter_data="webui=BraveNewTabPage">
URL
</message>
<message name="IDS_NEW_TAB_UNDO_BUTTON_LABEL" desc="Label for button that performs an undo operation">
<message name="IDS_NEW_TAB_UNDO_BUTTON_LABEL" desc="Label for button that performs an undo operation" formatter_data="webui=BraveNewTabPage">
Undo
</message>
<message name="IDS_NEW_TAB_UPLOAD_BACKGROUND_LABEL" desc="Text for custom background option upload">
<message name="IDS_NEW_TAB_UPLOAD_BACKGROUND_LABEL" desc="Text for custom background option upload" formatter_data="webui=BraveNewTabPage">
Upload from device
</message>
<message name="IDS_NEW_TAB_VPN_CHANGE_REGION_LABEL" desc="Label for button to change the VPN region">
<message name="IDS_NEW_TAB_VPN_CHANGE_REGION_LABEL" desc="Label for button to change the VPN region" formatter_data="webui=BraveNewTabPage">
Change
</message>
<message name="IDS_NEW_TAB_VPN_FEATURE_TEXT1" desc="Brave VPN product feature text item 1">
<message name="IDS_NEW_TAB_VPN_FEATURE_TEXT1" desc="Brave VPN product feature text item 1" formatter_data="webui=BraveNewTabPage">
Extra privacy &amp; security online
</message>
<message name="IDS_NEW_TAB_VPN_FEATURE_TEXT2" desc="Brave VPN product feature text item 2">
<message name="IDS_NEW_TAB_VPN_FEATURE_TEXT2" desc="Brave VPN product feature text item 2" formatter_data="webui=BraveNewTabPage">
Hide your IP &amp; change your location
</message>
<message name="IDS_NEW_TAB_VPN_FEATURE_TEXT3" desc="Brave VPN product feature text item 3">
<message name="IDS_NEW_TAB_VPN_FEATURE_TEXT3" desc="Brave VPN product feature text item 3" formatter_data="webui=BraveNewTabPage">
Protect every app on your device
</message>
<message name="IDS_NEW_TAB_VPN_RESTORE_PURCHASE_LABEL" desc="Label for button to restore a VPN purchase">
<message name="IDS_NEW_TAB_VPN_RESTORE_PURCHASE_LABEL" desc="Label for button to restore a VPN purchase" formatter_data="webui=BraveNewTabPage">
Already purchased?
</message>
<message name="IDS_NEW_TAB_VPN_START_TRIAL_LABEL" desc="Label for button to start a Brave VPN free trial">
<message name="IDS_NEW_TAB_VPN_START_TRIAL_LABEL" desc="Label for button to start a Brave VPN free trial" formatter_data="webui=BraveNewTabPage">
Start free trial
</message>
<message name="IDS_NEW_TAB_VPN_OPTIMAL_TEXT" desc="Text indicating an optimal VPN connection">
<message name="IDS_NEW_TAB_VPN_OPTIMAL_TEXT" desc="Text indicating an optimal VPN connection" formatter_data="webui=BraveNewTabPage">
Optimal
</message>
<message name="IDS_NEW_TAB_VPN_POWERED_BY_TEXT" desc="Text introducing the underlying VPN service provider logo">
<message name="IDS_NEW_TAB_VPN_POWERED_BY_TEXT" desc="Text introducing the underlying VPN service provider logo" formatter_data="webui=BraveNewTabPage">
Powered by
</message>
<message name="IDS_NEW_TAB_VPN_STATUS_CONNECTED" desc="Text indicating that the VPN is connected">
<message name="IDS_NEW_TAB_VPN_STATUS_CONNECTED" desc="Text indicating that the VPN is connected" formatter_data="webui=BraveNewTabPage">
Connected
</message>
<message name="IDS_NEW_TAB_VPN_STATUS_CONNECTING" desc="Text indicating that the VPN is connecting">
<message name="IDS_NEW_TAB_VPN_STATUS_CONNECTING" desc="Text indicating that the VPN is connecting" formatter_data="webui=BraveNewTabPage">
Connecting
</message>
<message name="IDS_NEW_TAB_VPN_STATUS_DISCONNECTED" desc="Text indicating that the VPN is disconnected">
<message name="IDS_NEW_TAB_VPN_STATUS_DISCONNECTED" desc="Text indicating that the VPN is disconnected" formatter_data="webui=BraveNewTabPage">
Disconnected
</message>
<message name="IDS_NEW_TAB_VPN_STATUS_DISCONNECTING" desc="Text indicating that the VPN is disconnecting">
<message name="IDS_NEW_TAB_VPN_STATUS_DISCONNECTING" desc="Text indicating that the VPN is disconnecting" formatter_data="webui=BraveNewTabPage">
Disconnecting
</message>
<message name="IDS_NEW_TAB_VPN_WIDGET_TITLE" desc="Title of the Brave VPN NTP widget">
<message name="IDS_NEW_TAB_VPN_WIDGET_TITLE" desc="Title of the Brave VPN NTP widget" formatter_data="webui=BraveNewTabPage">
BRAVE VPN
</message>
<message name="IDS_NEW_TAB_WIDGET_SETTINGS_TITLE" desc="Title of widgets settings panel">
<message name="IDS_NEW_TAB_WIDGET_SETTINGS_TITLE" desc="Title of widgets settings panel" formatter_data="webui=BraveNewTabPage">
Cards
</message>