mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-23 09:09:36 +02:00
[web] De-capitalize english translations (#24123)
* Create decapitalize.sh script * Remove `text-capitalize` classes, rely on translations instead * `Account Linking` -> `Account linking` * `Account Settings` -> `Account settings` * `Add Affiliation` -> `Add affiliation` * `Add Email` -> `Add email` * `Add Files` -> `Add files` * `Add to Dictionary` -> `Add to dictionary` * `All Projects` -> `All projects` * `All Templates` -> `All templates` * `Archive Projects` -> `Archive projects` * `Archived Projects` -> `Archived projects` * `Auto Compile` -> `Auto compile` * `Back to Subscription` -> `Back to subscription` * `Blank Project` -> `Blank project` * `Change Password` -> `Change password` * `Change Project Owner` -> `Change project owner` * `Clear Sessions` -> `Clear sessions` * `Company Name` -> `Company name` * `Compile Error Handling` -> `Compile error handling` * `Compile Mode` -> `Compile mode` * `Compromised Password` -> `Compromised password` * `Confirm Affiliation` -> `Confirm affiliation` * `Confirm Email` -> `Confirm email` * `Connected Users` -> `Connected users` * `Contact Sales` -> `Contact sales` * `Contact Support` -> `Contact support` * `Contact Us` -> `Contact us` * `Copy Project` -> `Copy project` * `Delete Account` -> `Delete account` * `Emails and Affiliations` -> `Emails and affiliations` * `Git Integration` -> `Git integration` * `Group Settings` -> `Group settings` * `Link Accounts` -> `Link accounts` * `Make Primary` -> `Make primary` * `Mendeley Integration` -> `Mendeley integration` * `Papers Integration` -> `Papers integration` * `Project Synchronisation` -> `Project synchronisation` * `Sessions Cleared` -> `Sessions cleared` * `Stop Compilation` -> `Stop compilation` * `Update Account Info` -> `Update account info` * `the Sales team` -> `the sales team` * `your Group settings` -> `your group settings` * `Zotero Integration` -> `Zotero integration` * Update decapitalize.sh * Decapitalize some translations * `Example Project` -> `Example project` * `New Project` -> `New project` * `New Tag` -> `New tag` * `Trashed Projects` -> `Trashed projects` * `Upload Project` -> `Upload project` * `Your Projects` -> `Your projects` * Revert "Create decapitalize.sh script" This reverts commit 8c79f367096c206c704c7c01e3572a18f3961d5e. * Revert changes to stories * Fix tests * `Contact us of` -> `Contact us if` * Make `Contact us` bold in tex files * `sales team` -> `Sales team` * `Link accounts and Add email` -> `Link accounts and add email` * `Make Private` -> `Make private` * `contact support` -> `contact Support` * Make `Make primary` tests case sensitive * Use `add_email` translation string * Revert changes to non-english locales * Remove redundant `Account settings` translation * `New project Name` -> `New project name` GitOrigin-RevId: 675c46f96ddbf3d259a8d723fed62aa4a7ed40b7
This commit is contained in:
@@ -222,10 +222,10 @@ templates.passwordResetRequested = ctaTemplate({
|
||||
|
||||
templates.confirmEmail = ctaTemplate({
|
||||
subject() {
|
||||
return `Confirm Email - ${settings.appName}`
|
||||
return `Confirm email - ${settings.appName}`
|
||||
},
|
||||
title() {
|
||||
return 'Confirm Email'
|
||||
return 'Confirm email'
|
||||
},
|
||||
message(opts) {
|
||||
return [
|
||||
@@ -239,7 +239,7 @@ templates.confirmEmail = ctaTemplate({
|
||||
]
|
||||
},
|
||||
ctaText() {
|
||||
return 'Confirm Email'
|
||||
return 'Confirm email'
|
||||
},
|
||||
ctaURL(opts) {
|
||||
return opts.confirmEmailUrl
|
||||
@@ -861,7 +861,7 @@ templates.SAMLDataCleared = ctaTemplate({
|
||||
]
|
||||
},
|
||||
ctaText(opts) {
|
||||
return 'Update my Emails and Affiliations'
|
||||
return 'Update my Emails and affiliations'
|
||||
},
|
||||
ctaURL(opts) {
|
||||
return `${settings.siteUrl}/user/settings`
|
||||
@@ -907,7 +907,7 @@ templates.welcome = ctaTemplate({
|
||||
]
|
||||
},
|
||||
ctaText() {
|
||||
return 'Confirm Email'
|
||||
return 'Confirm email'
|
||||
},
|
||||
ctaURL(opts) {
|
||||
return opts.confirmEmailUrl
|
||||
|
||||
@@ -86,7 +86,7 @@ async function userSubscriptionPage(req, res) {
|
||||
|
||||
const groupPlansDataForDash = formatGroupPlansDataForDash()
|
||||
|
||||
// display the Group Settings button only to admins of group subscriptions with either/or the Managed Users or Group SSO feature available
|
||||
// display the Group settings button only to admins of group subscriptions with either/or the Managed Users or Group SSO feature available
|
||||
let groupSettingsEnabledFor
|
||||
try {
|
||||
const managedGroups = await async.filter(
|
||||
|
||||
@@ -66,7 +66,7 @@ async function _handleV1Project(token, userId) {
|
||||
userId
|
||||
)
|
||||
// This should not happen anymore, but it does show
|
||||
// a nice "contact support" message, so it can stay
|
||||
// a nice "contact Support" message, so it can stay
|
||||
if (!docInfo) {
|
||||
return { v1Import: { status: 'cannotImport' } }
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ Note that your figure will automatically be placed in the most appropriate place
|
||||
|
||||
\subsection{How to add Tables}
|
||||
|
||||
Use the table and tabular environments for basic tables --- see Table~\ref{tab:widgets}, for example. For more information, please see this help article on \href{https://www.overleaf.com/learn/latex/tables}{tables}.
|
||||
Use the table and tabular environments for basic tables --- see Table~\ref{tab:widgets}, for example. For more information, please see this help article on \href{https://www.overleaf.com/learn/latex/tables}{tables}.
|
||||
|
||||
\begin{table}
|
||||
\centering
|
||||
@@ -65,7 +65,7 @@ Gadgets & 13
|
||||
|
||||
Comments can be added to your project by highlighting some text and clicking ``Add comment'' in the top right of the editor pane. To view existing comments, click on the Review menu in the toolbar above. To reply to a comment, click on the Reply button in the lower right corner of the comment. You can close the Review pane by clicking its name on the toolbar when you're done reviewing for the time being.
|
||||
|
||||
Track changes are available on all our \href{https://www.overleaf.com/user/subscription/plans}{premium plans}, and can be toggled on or off using the option at the top of the Review pane. Track changes allow you to keep track of every change made to the document, along with the person making the change.
|
||||
Track changes are available on all our \href{https://www.overleaf.com/user/subscription/plans}{premium plans}, and can be toggled on or off using the option at the top of the Review pane. Track changes allow you to keep track of every change made to the document, along with the person making the change.
|
||||
|
||||
\subsection{How to add Lists}
|
||||
|
||||
@@ -97,7 +97,7 @@ If however you're using a more general template, such as this one, and would lik
|
||||
|
||||
\subsection{How to change the document language and spell check settings}
|
||||
|
||||
Overleaf supports many different languages, including multiple different languages within one document.
|
||||
Overleaf supports many different languages, including multiple different languages within one document.
|
||||
|
||||
To configure the document language, simply edit the option provided to the babel package in the preamble at the top of this example project. To learn more about the different options, please visit this help article on \href{https://www.overleaf.com/learn/latex/International_language_support}{international language support}.
|
||||
|
||||
@@ -111,9 +111,9 @@ If you have an \href{https://www.overleaf.com/user/subscription/plans}{upgraded
|
||||
|
||||
\subsection{Good luck!}
|
||||
|
||||
We hope you find Overleaf useful, and do take a look at our \href{https://www.overleaf.com/learn}{help library} for more tutorials and user guides! Please also let us know if you have any feedback using the Contact Us link at the bottom of the Overleaf menu --- or use the contact form at \url{https://www.overleaf.com/contact}.
|
||||
We hope you find Overleaf useful, and do take a look at our \href{https://www.overleaf.com/learn}{help library} for more tutorials and user guides! Please also let us know if you have any feedback using the \textbf{Contact us} link at the bottom of the Overleaf menu --- or use the contact form at \url{https://www.overleaf.com/contact}.
|
||||
|
||||
\bibliographystyle{alpha}
|
||||
\bibliography{sample}
|
||||
|
||||
\end{document}
|
||||
\end{document}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
mixin back-to-btns(settingsAnchor)
|
||||
a.btn.btn-secondary.text-capitalize(href=`/user/settings${settingsAnchor ? '#' + settingsAnchor : '' }`) #{translate('back_to_account_settings')}
|
||||
a.btn.btn-secondary(href=`/user/settings${settingsAnchor ? '#' + settingsAnchor : '' }`) #{translate('back_to_account_settings')}
|
||||
|
|
||||
a.btn.btn-secondary.text-capitalize(href='/project') #{translate('back_to_your_projects')}
|
||||
a.btn.btn-secondary(href='/project') #{translate('back_to_your_projects')}
|
||||
|
||||
@@ -178,7 +178,7 @@ nav.navbar.navbar-default.navbar-main.navbar-expand-lg(class={
|
||||
+dropdown-menu-item
|
||||
div.disabled.dropdown-item #{getSessionUser().email}
|
||||
+dropdown-menu-divider
|
||||
+dropdown-menu-link-item()(href="/user/settings") #{translate('Account Settings')}
|
||||
+dropdown-menu-link-item()(href="/user/settings") #{translate('account_settings')}
|
||||
if nav.showSubscriptionLink
|
||||
+dropdown-menu-link-item()(href="/user/subscription") #{translate('subscription')}
|
||||
+dropdown-menu-divider
|
||||
|
||||
@@ -186,7 +186,7 @@ nav.navbar.navbar-default.navbar-main(class={
|
||||
div.subdued #{getSessionUser().email}
|
||||
li.divider.hidden-xs.hidden-sm
|
||||
li
|
||||
a(href="/user/settings") #{translate('Account Settings')}
|
||||
a(href="/user/settings") #{translate('account_settings')}
|
||||
if nav.showSubscriptionLink
|
||||
li
|
||||
a(href="/user/subscription") #{translate('subscription')}
|
||||
|
||||
@@ -184,7 +184,7 @@ nav.navbar.navbar-default.navbar-main.website-redesign-navbar
|
||||
div.subdued #{getSessionUser().email}
|
||||
li.divider.hidden-xs.hidden-sm
|
||||
li
|
||||
a(href="/user/settings") #{translate('Account Settings')}
|
||||
a(href="/user/settings") #{translate('account_settings')}
|
||||
if nav.showSubscriptionLink
|
||||
li
|
||||
a(href="/user/subscription") #{translate('subscription')}
|
||||
|
||||
@@ -23,7 +23,7 @@ block content
|
||||
.row
|
||||
.col-sm-12.col-md-6.col-md-offset-3
|
||||
.card
|
||||
h1.card-header.text-capitalize #{translate("reconfirm")} #{translate("Account")}
|
||||
h1.card-header #{translate("reconfirm")} #{translate("Account")}
|
||||
p #{translate('reconfirm_explained')}
|
||||
a(href=`mailto:${settings.adminEmail}`) #{settings.adminEmail}
|
||||
| .
|
||||
|
||||
@@ -67,6 +67,6 @@ block content
|
||||
p.text-success.text-center
|
||||
| #{translate('clear_sessions_success')}
|
||||
.page-separator
|
||||
a.btn.btn-secondary.text-capitalize(href='/user/settings') #{translate('back_to_account_settings')}
|
||||
a.btn.btn-secondary(href='/user/settings') #{translate('back_to_account_settings')}
|
||||
|
|
||||
a.btn.btn-secondary.text-capitalize(href='/project') #{translate('back_to_your_projects')}
|
||||
a.btn.btn-secondary(href='/project') #{translate('back_to_your_projects')}
|
||||
|
||||
@@ -15,7 +15,7 @@ block content
|
||||
action=''
|
||||
)
|
||||
input(name="_csrf", type="hidden", value=csrfToken)
|
||||
button.btn.btn-primary.text-capitalize(
|
||||
button.btn.btn-primary(
|
||||
type="submit",
|
||||
data-ol-disabled-inflight
|
||||
)
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
"3_4_width": "",
|
||||
"About": "",
|
||||
"Account": "",
|
||||
"Account Settings": "",
|
||||
"Documentation": "",
|
||||
"Get Involved": "",
|
||||
"Help": "",
|
||||
|
||||
@@ -90,9 +90,7 @@ function LinkingSection() {
|
||||
<p className="small">{t('linked_accounts_explained')}</p>
|
||||
{haslangFeedbackLinkingWidgets ? (
|
||||
<>
|
||||
<h3 id="language-feedback" className="text-capitalize">
|
||||
{t('ai_features')}
|
||||
</h3>
|
||||
<h3 id="language-feedback">{t('ai_features')}</h3>
|
||||
<div className="settings-widgets-container">
|
||||
{langFeedbackLinkingWidgets.map(
|
||||
({ import: { default: widget }, path }, widgetIndex) => (
|
||||
@@ -108,9 +106,7 @@ function LinkingSection() {
|
||||
) : null}
|
||||
{hasIntegrationLinkingSection ? (
|
||||
<>
|
||||
<h3 id="project-sync" className="text-capitalize">
|
||||
{t('project_synchronisation')}
|
||||
</h3>
|
||||
<h3 id="project-sync">{t('project_synchronisation')}</h3>
|
||||
{projectSyncSuccessMessage ? (
|
||||
<OLNotification
|
||||
type="success"
|
||||
@@ -134,9 +130,7 @@ function LinkingSection() {
|
||||
) : null}
|
||||
{hasReferencesLinkingSection ? (
|
||||
<>
|
||||
<h3 id="references" className="text-capitalize">
|
||||
{t('reference_managers')}
|
||||
</h3>
|
||||
<h3 id="references">{t('reference_managers')}</h3>
|
||||
<div className="settings-widgets-container">
|
||||
{referenceLinkingWidgets.map(
|
||||
({ import: importObject, path }, widgetIndex) => (
|
||||
@@ -152,9 +146,7 @@ function LinkingSection() {
|
||||
) : null}
|
||||
{hasSSOLinkingSection ? (
|
||||
<>
|
||||
<h3 id="linked-accounts" className="text-capitalize">
|
||||
{t('linked_accounts')}
|
||||
</h3>
|
||||
<h3 id="linked-accounts">{t('linked_accounts')}</h3>
|
||||
{ssoErrorMessage ? (
|
||||
<OLNotification
|
||||
type="error"
|
||||
|
||||
@@ -103,7 +103,7 @@ export function ActionButton({
|
||||
href="/user/subscription/plans"
|
||||
onClick={trackUpgradeClick}
|
||||
>
|
||||
<span className="text-capitalize">{t('upgrade')}</span>
|
||||
<span>{t('upgrade')}</span>
|
||||
</OLButton>
|
||||
)
|
||||
} else if (linked) {
|
||||
|
||||
@@ -131,9 +131,7 @@ function ActionButton({
|
||||
onClick={() => trackUpgradeClick(integration)}
|
||||
aria-labelledby={`${titleId} ${linkTextId}`}
|
||||
>
|
||||
<span id={linkTextId} className="text-capitalize">
|
||||
{t('upgrade')}
|
||||
</span>
|
||||
<span id={linkTextId}>{t('upgrade')}</span>
|
||||
</OLButton>
|
||||
)
|
||||
} else if (linked) {
|
||||
@@ -150,14 +148,13 @@ function ActionButton({
|
||||
return (
|
||||
<>
|
||||
{disabled ? (
|
||||
<OLButton disabled variant="secondary" className="text-capitalize">
|
||||
<OLButton disabled variant="secondary">
|
||||
{t('link')}
|
||||
</OLButton>
|
||||
) : (
|
||||
<OLButton
|
||||
variant="secondary"
|
||||
href={linkPath}
|
||||
className="text-capitalize"
|
||||
onClick={() => trackLinkingClick(integration)}
|
||||
>
|
||||
{t('link')}
|
||||
|
||||
@@ -142,7 +142,6 @@ function ActionButton({
|
||||
<OLButton
|
||||
variant="secondary"
|
||||
href={linkPath}
|
||||
className="text-capitalize"
|
||||
aria-labelledby={`${linkTextId} ${titleId}`}
|
||||
id={linkTextId}
|
||||
>
|
||||
|
||||
@@ -25,7 +25,7 @@ export function AccountMenuItems({
|
||||
</Dropdown.Item>
|
||||
<NavDropdownDivider />
|
||||
<NavDropdownLinkItem href="/user/settings">
|
||||
{t('Account Settings')}
|
||||
{t('account_settings')}
|
||||
</NavDropdownLinkItem>
|
||||
{showSubscriptionLink ? (
|
||||
<NavDropdownLinkItem href="/user/subscription">
|
||||
|
||||
@@ -36,7 +36,7 @@ function DefaultNavbar(props: DefaultNavbarMetadata) {
|
||||
const { t } = useTranslation()
|
||||
const [expanded, setExpanded] = useState(false)
|
||||
|
||||
// The Contact Us modal is rendered at this level rather than inside the nav
|
||||
// The Contact us modal is rendered at this level rather than inside the nav
|
||||
// bar because otherwise the help wiki search results dropdown doesn't show up
|
||||
const { modal: contactUsModal, showModal: showContactUsModal } =
|
||||
useContactUsModal({
|
||||
|
||||
@@ -9,7 +9,7 @@ export const Default = () => {
|
||||
<MenuBar id="toolbar-menu-bar-item">
|
||||
<MenuBarDropdown title="File" id="file">
|
||||
<MenuBarOption title="New File" />
|
||||
<MenuBarOption title="New Project" />
|
||||
<MenuBarOption title="New project" />
|
||||
</MenuBarDropdown>
|
||||
<MenuBarDropdown title="Edit" id="edit">
|
||||
<MenuBarOption title="Undo" />
|
||||
|
||||
@@ -102,6 +102,6 @@ export const Error = () => {
|
||||
}
|
||||
|
||||
export default {
|
||||
title: 'Project List / New Project Button',
|
||||
title: 'Project List / New project Button',
|
||||
component: NewProjectButton,
|
||||
}
|
||||
|
||||
@@ -190,9 +190,6 @@ cite {
|
||||
}
|
||||
|
||||
// Transformations
|
||||
.text-capitalize {
|
||||
text-transform: capitalize;
|
||||
}
|
||||
.text-lowercase {
|
||||
text-transform: lowercase;
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
"3_4_width": "¾ width",
|
||||
"About": "About",
|
||||
"Account": "Account",
|
||||
"Account Settings": "Account Settings",
|
||||
"Documentation": "Documentation",
|
||||
"Projects": "Projects",
|
||||
"Security": "Security",
|
||||
@@ -56,10 +55,10 @@
|
||||
"account_billed_manually": "Account billed manually",
|
||||
"account_has_been_link_to_institution_account": "Your __appName__ account on <b>__email__</b> has been linked to your <b>__institutionName__</b> institutional account.",
|
||||
"account_has_past_due_invoice_change_plan_warning": "Your account currently has a past due invoice. You will not be able to change your plan until this is resolved.",
|
||||
"account_linking": "Account Linking",
|
||||
"account_linking": "Account linking",
|
||||
"account_managed_by_group_administrator": "Your account is managed by your group administrator (__admin__)",
|
||||
"account_not_linked_to_dropbox": "Your account is not linked to Dropbox",
|
||||
"account_settings": "Account Settings",
|
||||
"account_settings": "Account settings",
|
||||
"account_with_email_exists": "It looks like an <b>__appName__</b> account with the email <b>__email__</b> already exists.",
|
||||
"acct_linked_to_institution_acct_2": "You can <0>log in</0> to Overleaf through your <0>__institutionName__</0> institutional login.",
|
||||
"actions": "Actions",
|
||||
@@ -72,7 +71,7 @@
|
||||
"add_a_recovery_email_address": "Add a recovery email address",
|
||||
"add_add_on_to_your_plan": "Add __addOnName__ to your plan",
|
||||
"add_additional_certificate": "Add another certificate",
|
||||
"add_affiliation": "Add Affiliation",
|
||||
"add_affiliation": "Add affiliation",
|
||||
"add_ai_assist": "Add AI Assist",
|
||||
"add_ai_assist_annual_and_get_unlimited_access": "Add <sparkle/> AI Assist Annual and get unlimited* access to Overleaf and Writefull AI features.",
|
||||
"add_ai_assist_monthly_and_get_unlimited_access": "Add <sparkle/> AI Assist Monthly and get unlimited* access to Overleaf and Writefull AI features.",
|
||||
@@ -85,12 +84,12 @@
|
||||
"add_comment_error_message": "There was an error adding your comment. Please try again in a few moments.",
|
||||
"add_comment_error_title": "Add Comment Error",
|
||||
"add_company_details": "Add company details",
|
||||
"add_email": "Add Email",
|
||||
"add_email": "Add email",
|
||||
"add_email_address": "Add email address",
|
||||
"add_email_to_claim_features": "Add an institutional email address to claim your features.",
|
||||
"add_error_assist_annual_to_your_projects": "Add Error Assist Annual <sparkle/> to your projects and get unlimited AI help to fix LaTeX errors faster.",
|
||||
"add_error_assist_to_your_projects": "Add Error Assist <sparkle/> to your projects and get unlimited AI help to fix LaTeX errors faster.",
|
||||
"add_files": "Add Files",
|
||||
"add_files": "Add files",
|
||||
"add_more_collaborators": "Add more collaborators",
|
||||
"add_more_licenses_to_my_plan": "Add more licenses to my plan",
|
||||
"add_more_managers": "Add more managers",
|
||||
@@ -100,7 +99,7 @@
|
||||
"add_or_remove_project_from_tag": "Add or remove project from tag __tagName__",
|
||||
"add_people": "Add people",
|
||||
"add_role_and_department": "Add role and department",
|
||||
"add_to_dictionary": "Add to Dictionary",
|
||||
"add_to_dictionary": "Add to dictionary",
|
||||
"add_to_tag": "Add to tag",
|
||||
"add_unlimited_ai_to_overleaf": "Add unlimited AI* to Overleaf",
|
||||
"add_unlimited_ai_to_your_overleaf_plan": "Add unlimited AI* to your Overleaf __planName__ plan",
|
||||
@@ -145,9 +144,9 @@
|
||||
"all_premium_features": "All premium features",
|
||||
"all_premium_features_including": "All premium features, including:",
|
||||
"all_prices_displayed_are_in_currency": "All prices displayed are in __recommendedCurrency__.",
|
||||
"all_projects": "All Projects",
|
||||
"all_projects": "All projects",
|
||||
"all_projects_will_be_transferred_immediately": "All projects will be transferred to the new owner immediately.",
|
||||
"all_templates": "All Templates",
|
||||
"all_templates": "All templates",
|
||||
"all_the_pros_of_our_standard_plan_plus_unlimited_collab": "All the pros of our standard plan, plus unlimited collaborators per project.",
|
||||
"all_these_experiments_are_available_exclusively": "All these experiments are available exclusively to members of the Labs program. If you sign up, you can choose which experiments you want to try.",
|
||||
"allows_to_search_by_author_title_etc_possible_to_pull_results_directly_from_your_reference_manager_if_connected": "Allows to search by author, title, etc. Possible to pull results directly from your reference manager (if connected).",
|
||||
@@ -173,9 +172,9 @@
|
||||
"apply_suggestion": "Apply suggestion",
|
||||
"april": "April",
|
||||
"archive": "Archive",
|
||||
"archive_projects": "Archive Projects",
|
||||
"archive_projects": "Archive projects",
|
||||
"archived": "Archived",
|
||||
"archived_projects": "Archived Projects",
|
||||
"archived_projects": "Archived projects",
|
||||
"archiving_projects_wont_affect_collaborators": "Archiving projects won’t affect your collaborators.",
|
||||
"are_you_affiliated_with_an_institution": "Are you affiliated with an institution?",
|
||||
"are_you_getting_an_undefined_control_sequence_error": "Are you getting an Undefined Control Sequence error? If you are, make sure you’ve loaded the graphicx package—<0>\\usepackage{graphicx}</0>—in the preamble (first section of code) in your document. <1>Learn more</1>",
|
||||
@@ -195,7 +194,7 @@
|
||||
"august": "August",
|
||||
"author": "Author",
|
||||
"auto_close_brackets": "Auto-close brackets",
|
||||
"auto_compile": "Auto Compile",
|
||||
"auto_compile": "Auto compile",
|
||||
"auto_complete": "Auto-complete",
|
||||
"autocompile": "Autocompile",
|
||||
"autocompile_disabled": "Autocompile disabled",
|
||||
@@ -212,7 +211,7 @@
|
||||
"back_to_configuration": "Back to configuration",
|
||||
"back_to_editor": "Back to editor",
|
||||
"back_to_log_in": "Back to log in",
|
||||
"back_to_subscription": "Back to Subscription",
|
||||
"back_to_subscription": "Back to subscription",
|
||||
"back_to_your_projects": "Back to your projects",
|
||||
"basic": "Basic",
|
||||
"basic_compile_time": "Basic compile time",
|
||||
@@ -235,7 +234,7 @@
|
||||
"billing": "Billing",
|
||||
"billing_period_sentence_case": "Billing period",
|
||||
"binary_history_error": "Preview not available for this file type",
|
||||
"blank_project": "Blank Project",
|
||||
"blank_project": "Blank project",
|
||||
"blocked_filename": "This file name is blocked.",
|
||||
"blog": "Blog",
|
||||
"bold": "Bold",
|
||||
@@ -295,12 +294,12 @@
|
||||
"change_or_cancel-change": "Change",
|
||||
"change_or_cancel-or": "or",
|
||||
"change_owner": "Change owner",
|
||||
"change_password": "Change Password",
|
||||
"change_password_in_account_settings": "Change password in Account Settings",
|
||||
"change_password": "Change password",
|
||||
"change_password_in_account_settings": "Change password in Account settings",
|
||||
"change_plan": "Change plan",
|
||||
"change_primary_email": "Change primary email",
|
||||
"change_primary_email_address_instructions": "To change your primary email, please add your new primary email address first (by clicking <0>Add another email</0>) and confirm it. Then click the <0>Make Primary</0> button. <1>Learn more about managing your __appName__ emails</1>.",
|
||||
"change_project_owner": "Change Project Owner",
|
||||
"change_primary_email_address_instructions": "To change your primary email, please add your new primary email address first (by clicking <0>Add another email</0>) and confirm it. Then click the <0>Make primary</0> button. <1>Learn more about managing your __appName__ emails</1>.",
|
||||
"change_project_owner": "Change project owner",
|
||||
"change_the_ownership_of_your_personal_projects": "Change the ownership of your personal projects to the new account. <0>Find out how to change project owner.</0>",
|
||||
"change_to_group_plan": "Change to a group plan",
|
||||
"change_to_this_plan": "Change to this plan",
|
||||
@@ -322,15 +321,15 @@
|
||||
"city": "City",
|
||||
"clear_cached_files": "Clear cached files",
|
||||
"clear_search": "clear search",
|
||||
"clear_sessions": "Clear Sessions",
|
||||
"clear_sessions_description": "This is a list of other sessions (logins) which are active on your account, not including your current session. Click the \"Clear Sessions\" button below to log them out.",
|
||||
"clear_sessions_success": "Sessions Cleared",
|
||||
"clear_sessions": "Clear sessions",
|
||||
"clear_sessions_description": "This is a list of other sessions (logins) which are active on your account, not including your current session. Click the \"Clear sessions\" button below to log them out.",
|
||||
"clear_sessions_success": "Sessions cleared",
|
||||
"clearing": "Clearing",
|
||||
"click_here_to_view_sl_in_lng": "Click here to use __appName__ in <0>__lngName__</0>",
|
||||
"click_link_to_proceed": "Click <b>__clickText__</b> below to proceed.",
|
||||
"click_to_give_feedback": "Click to give feedback.",
|
||||
"click_to_unpause": "Click to unpause and reactivate your Overleaf premium features.",
|
||||
"clicking_delete_will_remove_sso_config_and_clear_saml_data": "Clicking <0>Delete</0> will remove your SSO configuration and unlink all users. You can only do this when SSO is disabled in your Group settings.",
|
||||
"clicking_delete_will_remove_sso_config_and_clear_saml_data": "Clicking <0>Delete</0> will remove your SSO configuration and unlink all users. You can only do this when SSO is disabled in your group settings.",
|
||||
"clone_with_git": "Clone with Git",
|
||||
"close": "Close",
|
||||
"clsi_maintenance": "The compile servers are down for maintenance, and will be back shortly.",
|
||||
@@ -361,34 +360,34 @@
|
||||
"community_articles": "Community articles",
|
||||
"community_articles_lowercase": "community articles",
|
||||
"compact": "Compact",
|
||||
"company_name": "Company Name",
|
||||
"company_name": "Company name",
|
||||
"compare": "Compare",
|
||||
"compare_all_plans": "Compare all plans on our <0>pricing page</0>",
|
||||
"compare_features": "Compare features",
|
||||
"comparing_from_x_to_y": "Comparing from <0>__startTime__</0> to <0>__endTime__</0>",
|
||||
"compile_error_entry_description": "An error which prevented this project from compiling",
|
||||
"compile_error_handling": "Compile Error Handling",
|
||||
"compile_error_handling": "Compile error handling",
|
||||
"compile_larger_projects": "Compile larger projects",
|
||||
"compile_mode": "Compile Mode",
|
||||
"compile_mode": "Compile mode",
|
||||
"compile_servers": "Compile servers",
|
||||
"compile_servers_info_new": "The servers used to compile your project. Compiles for users on paid plans always run on the fastest available servers.",
|
||||
"compile_terminated_by_user": "The compile was cancelled using the ‘Stop Compilation’ button. You can download the raw logs to see where the compile stopped.",
|
||||
"compile_terminated_by_user": "The compile was cancelled using the ‘Stop compilation’ button. You can download the raw logs to see where the compile stopped.",
|
||||
"compile_timeout_short": "Compile timeout",
|
||||
"compile_timeout_short_info_new": "This is how much time you get to compile your project on Overleaf. You may need additional time for longer or more complex projects.",
|
||||
"compiler": "Compiler",
|
||||
"compiling": "Compiling",
|
||||
"complete": "Complete",
|
||||
"compliance": "Compliance",
|
||||
"compromised_password": "Compromised Password",
|
||||
"compromised_password": "Compromised password",
|
||||
"configure_sso": "Configure SSO",
|
||||
"configured": "Configured",
|
||||
"confirm": "Confirm",
|
||||
"confirm_accept_selected_changes": "Are you sure you want to accept the selected change?",
|
||||
"confirm_accept_selected_changes_plural": "Are you sure you want to accept the selected __count__ changes?",
|
||||
"confirm_affiliation": "Confirm Affiliation",
|
||||
"confirm_affiliation": "Confirm affiliation",
|
||||
"confirm_affiliation_to_relink_dropbox": "Please confirm you are still at the institution and on their license, or upgrade your account in order to relink your Dropbox account.",
|
||||
"confirm_delete_user_type_email_address": "To confirm you want to delete __userName__ please type the email address associated with their account",
|
||||
"confirm_email": "Confirm Email",
|
||||
"confirm_email": "Confirm email",
|
||||
"confirm_new_password": "Confirm new password",
|
||||
"confirm_primary_email_change": "Confirm primary email change",
|
||||
"confirm_reject_selected_changes": "Are you sure you want to reject the selected change?",
|
||||
@@ -402,16 +401,16 @@
|
||||
"conflicting_paths_found": "Conflicting Paths Found",
|
||||
"congratulations_youve_successfully_join_group": "Congratulations! You‘ve successfully joined the group subscription.",
|
||||
"connect_overleaf_with_github": "Connect __appName__ with GitHub for easy project syncing and real-time version control.",
|
||||
"connected_users": "Connected Users",
|
||||
"connected_users": "Connected users",
|
||||
"connecting": "Connecting",
|
||||
"connection_lost_with_unsaved_changes": "Connection lost with unsaved changes.",
|
||||
"contact": "Contact",
|
||||
"contact_group_admin": "Please contact your group administrator.",
|
||||
"contact_message_label": "Message",
|
||||
"contact_sales": "Contact Sales",
|
||||
"contact_sales": "Contact sales",
|
||||
"contact_support": "Contact Support",
|
||||
"contact_support_to_change_group_subscription": "Please <0>contact support</0> if you wish to change your group subscription.",
|
||||
"contact_us": "Contact Us",
|
||||
"contact_support_to_change_group_subscription": "Please <0>contact Support</0> if you wish to change your group subscription.",
|
||||
"contact_us": "Contact us",
|
||||
"contact_us_lowercase": "Contact us",
|
||||
"contacting_the_sales_team": "Contacting the Sales team",
|
||||
"continue": "Continue",
|
||||
@@ -423,7 +422,7 @@
|
||||
"copied": "Copied",
|
||||
"copy": "Copy",
|
||||
"copy_code": "Copy code",
|
||||
"copy_project": "Copy Project",
|
||||
"copy_project": "Copy project",
|
||||
"copy_response": "Copy response",
|
||||
"copying": "Copying",
|
||||
"cost_summary": "Cost summary",
|
||||
@@ -445,6 +444,7 @@
|
||||
"create_new_subscription": "Create new subscription",
|
||||
"create_new_tag": "Create new tag",
|
||||
"create_project_in_github": "Create a GitHub repository",
|
||||
"created": "Created",
|
||||
"created_at": "Created at",
|
||||
"creating": "Creating",
|
||||
"credit_card": "Credit Card",
|
||||
@@ -477,7 +477,7 @@
|
||||
"dedicated_account_manager": "Dedicated account manager",
|
||||
"default": "Default",
|
||||
"delete": "Delete",
|
||||
"delete_account": "Delete Account",
|
||||
"delete_account": "Delete account",
|
||||
"delete_account_confirmation_label": "I understand this will delete all projects in my __appName__ account with email address <0>__userDefaultEmail__</0>",
|
||||
"delete_account_warning_message_3": "You are about to permanently <strong>delete all of your account data</strong>, including your projects and settings. Please type your account email address and password in the boxes below to proceed.",
|
||||
"delete_acct_no_existing_pw": "Please use the password reset form to set a password before deleting your account",
|
||||
@@ -653,7 +653,7 @@
|
||||
"email_sent": "Email Sent",
|
||||
"emails": "Emails",
|
||||
"emails_and_affiliations_explanation": "Add additional email addresses to your account to access any upgrades your university or institution has, to make it easier for collaborators to find you, and to make sure you can recover your account.",
|
||||
"emails_and_affiliations_title": "Emails and Affiliations",
|
||||
"emails_and_affiliations_title": "Emails and affiliations",
|
||||
"empty": "Empty",
|
||||
"empty_zip_file": "Zip doesn’t contain any file",
|
||||
"en": "English",
|
||||
@@ -694,7 +694,7 @@
|
||||
"everything_in_group_standard_plus": "Everything in Group Standard, plus…",
|
||||
"everything_in_standard_plus": "Everything in Standard, plus…",
|
||||
"example": "Example",
|
||||
"example_project": "Example Project",
|
||||
"example_project": "Example project",
|
||||
"examples": "Examples",
|
||||
"examples_lowercase": "examples",
|
||||
"examples_to_help_you_learn": "Examples to help you learn how to use powerful LaTeX packages and techniques.",
|
||||
@@ -839,16 +839,16 @@
|
||||
"git_authentication_token": "Git authentication token",
|
||||
"git_authentication_token_create_modal_info_1": "This is your Git authentication token. You should enter this when prompted for a password.",
|
||||
"git_authentication_token_create_modal_info_2": "<0>You will only see this authentication token once so please copy it and keep it safe</0>. For full instructions on using authentication tokens, visit our <1>help page</1>.",
|
||||
"git_bridge_modal_click_generate": "Click <strong>Generate token</strong> to generate your authentication token now. Or do this later in your Account Settings.",
|
||||
"git_bridge_modal_click_generate": "Click <strong>Generate token</strong> to generate your authentication token now. Or do this later in your Account settings.",
|
||||
"git_bridge_modal_enter_authentication_token": "When prompted for a password, enter your new authentication token:",
|
||||
"git_bridge_modal_git_clone_your_project": "Git clone your project by using the link below and a Git authentication token",
|
||||
"git_bridge_modal_learn_more_about_authentication_tokens": "Learn more about Git integration authentication tokens.",
|
||||
"git_bridge_modal_read_only": "<strong>You have read-only access to this project.</strong> This means you can pull from __appName__ but you can’t push any changes you make back to this project.",
|
||||
"git_bridge_modal_review_access": "<0>You have review access to this project.</0> This means you can pull from __appName__ but you can’t push any changes you make back to this project.",
|
||||
"git_bridge_modal_see_once": "You’ll only see this token once. To delete it or generate a new one, visit Account Settings. For detailed instructions and troubleshooting, read our <0>help page</0>.",
|
||||
"git_bridge_modal_use_previous_token": "If you’re prompted for a password, you can use a previously generated Git authentication token. Or you can generate a new one in Account Settings. For more support, read our <0>help page</0>.",
|
||||
"git_bridge_modal_see_once": "You’ll only see this token once. To delete it or generate a new one, visit Account settings. For detailed instructions and troubleshooting, read our <0>help page</0>.",
|
||||
"git_bridge_modal_use_previous_token": "If you’re prompted for a password, you can use a previously generated Git authentication token. Or you can generate a new one in Account settings. For more support, read our <0>help page</0>.",
|
||||
"git_gitHub_dropbox_mendeley_papers_and_zotero_integrations": "Git, GitHub, Dropbox, Papers, Zotero, and Mendeley integrations",
|
||||
"git_integration": "Git Integration",
|
||||
"git_integration": "Git integration",
|
||||
"git_integration_info": "With Git integration, you can clone your Overleaf projects with Git. For full instructions on how to do this, <0>read our Git Integration help page</0>.",
|
||||
"github": "GitHub",
|
||||
"github_commit_message_placeholder": "Commit message for changes made in __appName__...",
|
||||
@@ -887,7 +887,7 @@
|
||||
"go_next_page": "Go to Next Page",
|
||||
"go_page": "Go to page __page__",
|
||||
"go_prev_page": "Go to Previous Page",
|
||||
"go_to_account_settings": "Go to Account Settings",
|
||||
"go_to_account_settings": "Go to Account settings",
|
||||
"go_to_code_location_in_pdf": "Go to code location in PDF",
|
||||
"go_to_first_page": "Go to first page",
|
||||
"go_to_last_page": "Go to last page",
|
||||
@@ -1153,13 +1153,13 @@
|
||||
"last_active_description": "Last time a project was opened.",
|
||||
"last_edit": "Last edit",
|
||||
"last_logged_in": "Last logged in",
|
||||
"last_modified": "Last Modified",
|
||||
"last_modified": "Last modified",
|
||||
"last_name": "Last name",
|
||||
"last_resort_trouble_shooting_guide": "If that doesn’t help, follow our <0>troubleshooting guide</0>.",
|
||||
"last_suggested_fix": "Last suggested fix",
|
||||
"last_updated": "Last Updated",
|
||||
"last_updated_date_by_x": "__lastUpdatedDate__ by __person__",
|
||||
"last_used": "last used",
|
||||
"last_used": "Last used",
|
||||
"latam_discount_modal_info": "Unlock the full potential of Overleaf with a __discount__% discount on premium subscriptions paid in __currencyName__. Get a longer compile timeout, full document history, track changes, additional collaborators, and more.",
|
||||
"latam_discount_modal_title": "Premium subscription discount",
|
||||
"latam_discount_offer_plans_page_banner": "__flag__ We’ve applied a __discount__ discount to premium plans on this page for our users in __country__. Check out the new lower prices (in __currency__).",
|
||||
@@ -1212,8 +1212,8 @@
|
||||
"line_width_is_the_width_of_the_line_in_the_current_environment": "Line width is the width of the line in the current environment. e.g. a full page width in single-column layout or half a page width in a two-column layout.",
|
||||
"link": "Link",
|
||||
"link_account": "Link Account",
|
||||
"link_accounts": "Link Accounts",
|
||||
"link_accounts_and_add_email": "Link Accounts and Add Email",
|
||||
"link_accounts": "Link accounts",
|
||||
"link_accounts_and_add_email": "Link accounts and add email",
|
||||
"link_institutional_email_get_started": "Link an institutional email address to your account to get started.",
|
||||
"link_overleaf_with_git": "Link __appName__ with Git for seamless project syncing and version control across your repositories.",
|
||||
"link_sharing": "Link sharing",
|
||||
@@ -1225,7 +1225,7 @@
|
||||
"link_to_papers": "Link to Papers",
|
||||
"link_to_zotero": "Link to Zotero",
|
||||
"link_your_accounts": "Link your accounts",
|
||||
"linked_accounts": "linked accounts",
|
||||
"linked_accounts": "Linked accounts",
|
||||
"linked_accounts_explained": "You can link your __appName__ account with other services to enable the features described below.",
|
||||
"linked_collabratec_description": "Use Collabratec to manage your __appName__ projects.",
|
||||
"linked_file": "Imported file",
|
||||
@@ -1287,8 +1287,8 @@
|
||||
"make_a_copy": "Make a copy",
|
||||
"make_email_primary_description": "Make this the primary email, used to log in",
|
||||
"make_owner": "Make owner",
|
||||
"make_primary": "Make Primary",
|
||||
"make_private": "Make Private",
|
||||
"make_primary": "Make primary",
|
||||
"make_private": "Make private",
|
||||
"manage_beta_program_membership": "Manage Beta Program Membership",
|
||||
"manage_files_from_your_dropbox_folder": "Manage files from your Dropbox folder",
|
||||
"manage_group_members_subtext": "Add or remove members from your group subscription",
|
||||
@@ -1329,7 +1329,7 @@
|
||||
"mendeley_dynamic_sync_description": "With the Mendeley integration, you can import your references into __appName__. You can either import all your references at once or dynamically search your Mendeley library directly from __appName__.",
|
||||
"mendeley_groups_loading_error": "There was an error loading groups from Mendeley",
|
||||
"mendeley_groups_relink": "There was an error accessing your Mendeley data. This was likely caused by lack of permissions. Please re-link your account and try again.",
|
||||
"mendeley_integration": "Mendeley Integration",
|
||||
"mendeley_integration": "Mendeley integration",
|
||||
"mendeley_is_premium": "Mendeley integration is a premium feature",
|
||||
"mendeley_reference_loading_error": "Error, could not load references from Mendeley",
|
||||
"mendeley_reference_loading_error_expired": "Mendeley token expired, please re-link your account",
|
||||
@@ -1378,7 +1378,7 @@
|
||||
"navigate_log_source": "Navigate to log position in source code: __location__",
|
||||
"navigation": "Navigation",
|
||||
"nearly_activated": "You’re one step away from activating your __appName__ account!",
|
||||
"need_20_plus_users_discount": "20+ users? <0>Contact Sales</0> to get the best discounts.",
|
||||
"need_20_plus_users_discount": "20+ users? <0>Contact sales</0> to get the best discounts.",
|
||||
"need_anything_contact_us_at": "If there is anything you ever need please feel free to contact us directly at",
|
||||
"need_contact_group_admin_to_make_changes": "You’ll need to contact your group admin if you want to make certain changes to your account. <0>Read more about managed users.</0>",
|
||||
"need_make_changes": "You need to make some changes",
|
||||
@@ -1397,11 +1397,11 @@
|
||||
"new_navigation_introducing_left_hand_side_rail_and_top_menus": "New navigation - introducing left-hand side rail and top menus",
|
||||
"new_overleaf_editor": "New Overleaf editor",
|
||||
"new_password": "New password",
|
||||
"new_project": "New Project",
|
||||
"new_project": "New project",
|
||||
"new_project_name": "New project name",
|
||||
"new_snippet_project": "Untitled",
|
||||
"new_subscription_will_be_billed_immediately": "Your new subscription will be billed immediately to your current payment method.",
|
||||
"new_tag": "New Tag",
|
||||
"new_tag": "New tag",
|
||||
"new_tag_name": "New tag name",
|
||||
"newsletter": "Newsletter",
|
||||
"newsletter_info_note": "Please note: you will still receive important emails, such as project invites and security notifications (password resets, account linking, etc).",
|
||||
@@ -1546,7 +1546,7 @@
|
||||
"papers_dynamic_sync_description": "With the Papers integration, you can import your references into __appName__. You can either import all your references at once or dynamically search your Papers library directly from __appName__.",
|
||||
"papers_groups_loading_error": "There was an error loading libraries from Papers",
|
||||
"papers_groups_relink": "There was an error accessing your Papers data. This was likely caused by lack of permissions. Please re-link your account and try again.",
|
||||
"papers_integration": "Papers Integration",
|
||||
"papers_integration": "Papers integration",
|
||||
"papers_is_premium": "Papers integration is a premium feature",
|
||||
"papers_presentations_reports_and_more": "Papers, presentations, reports and more, written in LaTeX and published by our community.",
|
||||
"papers_reference_loading_error": "Error, could not load references from Papers",
|
||||
@@ -1629,7 +1629,7 @@
|
||||
"please_confirm_primary_email": "Please confirm your primary email address __emailAddress__ by clicking on the link in the confirmation email.",
|
||||
"please_confirm_secondary_email": "Please confirm your secondary email address __emailAddress__ by clicking on the link in the confirmation email.",
|
||||
"please_confirm_your_email_before_making_it_default": "Please confirm your email before making it the primary.",
|
||||
"please_contact_support_to_makes_change_to_your_plan": "Please <0>contact support</0> to make changes to your plan",
|
||||
"please_contact_support_to_makes_change_to_your_plan": "Please <0>contact Support</0> to make changes to your plan",
|
||||
"please_contact_us_if_you_think_this_is_in_error": "Please <0>contact us</0> if you think this is in error.",
|
||||
"please_enter_confirmation_code": "Please enter your confirmation code",
|
||||
"please_enter_email": "Please enter your email address",
|
||||
@@ -1711,7 +1711,7 @@
|
||||
"project_search_file_count_plural": "in __count__ files",
|
||||
"project_search_result_count": "__count__ result",
|
||||
"project_search_result_count_plural": "__count__ results",
|
||||
"project_synchronisation": "Project Synchronisation",
|
||||
"project_synchronisation": "Project synchronisation",
|
||||
"project_timed_out_enable_stop_on_first_error": "<0>Enable “Stop on first error”</0> to help you find and fix errors right away.",
|
||||
"project_timed_out_fatal_error": "A <0>fatal compile error</0> may be completely blocking compilation.",
|
||||
"project_timed_out_intro": "Sorry, your compile took too long to run and timed out. The most common causes of timeouts are:",
|
||||
@@ -1792,7 +1792,7 @@
|
||||
"regards": "Regards",
|
||||
"register": "Register",
|
||||
"register_error": "Registration error",
|
||||
"register_intercept_sso": "You can link your __authProviderName__ account from the Account Settings page after logging in.",
|
||||
"register_intercept_sso": "You can link your __authProviderName__ account from the Account settings page after logging in.",
|
||||
"register_to_accept_invitation": "Register to accept invitation",
|
||||
"register_to_edit_template": "Please register to edit the __templateName__ template",
|
||||
"register_with_another_email": "<a href=\"__link__\">Register with __appName__</a> using another email.",
|
||||
@@ -2047,7 +2047,7 @@
|
||||
"skip_to_content": "Skip to content",
|
||||
"something_not_right": "Something’s not right",
|
||||
"something_went_wrong": "Something went wrong",
|
||||
"something_went_wrong_canceling_your_subscription": "Something went wrong canceling your subscription. Please contact support.",
|
||||
"something_went_wrong_canceling_your_subscription": "Something went wrong canceling your subscription. Please contact Support.",
|
||||
"something_went_wrong_loading_pdf_viewer": "Something went wrong loading the PDF viewer. This might be caused by issues like <0>temporary network problems</0> or an <0>outdated web browser</0>. Please follow the <1>troubleshooting steps for access, loading and display problems</1>. If the issue persists, please <2>let us know</2>.",
|
||||
"something_went_wrong_processing_the_request": "Something went wrong processing the request",
|
||||
"something_went_wrong_rendering_pdf": "Something went wrong while rendering this PDF.",
|
||||
@@ -2274,7 +2274,7 @@
|
||||
"then_x_price_per_year": "Then __price__ per year",
|
||||
"there_are_lots_of_options_to_edit_and_customize_your_figures": "There are lots of options to edit and customize your figures, such as wrapping text around the figure, rotating the image, or including multiple images in a single figure. You’ll need to edit the LaTeX code to do this. <0>Find out how</0>",
|
||||
"there_is_an_unrecoverable_latex_error": "There is an unrecoverable LaTeX error. If there are LaTeX errors shown below or in the raw logs, please try to fix them and compile again.",
|
||||
"there_was_a_problem_restoring_the_project_please_try_again_in_a_few_moments_or_contact_us": "There was a problem restoring the project. Please try again in a few moments. Contact us of the problem persists.",
|
||||
"there_was_a_problem_restoring_the_project_please_try_again_in_a_few_moments_or_contact_us": "There was a problem restoring the project. Please try again in a few moments. Contact us if the problem persists.",
|
||||
"there_was_an_error_opening_your_content": "There was an error creating your project",
|
||||
"thesis": "Thesis",
|
||||
"they_lose_access_to_account": "They lose all access to this Overleaf account immediately",
|
||||
@@ -2326,7 +2326,7 @@
|
||||
"to_use_text_wrapping_in_your_table_make_sure_you_include_the_array_package": "<0>Please note:</0> To use text wrapping in your table, make sure you include the <1>array</1> package in your document preamble:",
|
||||
"toggle_compile_options_menu": "Toggle compile options menu",
|
||||
"toggle_unknown_group": "Toggle unknown group",
|
||||
"token": "token",
|
||||
"token": "Token",
|
||||
"token_access_failure": "Cannot grant access; contact the project owner for help",
|
||||
"token_limit_reached": "You’ve reached the 10 token limit. To generate a new authentication token, please delete an existing one.",
|
||||
"token_read_only": "token read-only",
|
||||
@@ -2406,7 +2406,7 @@
|
||||
"trash": "Trash",
|
||||
"trash_projects": "Trash Projects",
|
||||
"trashed": "Trashed",
|
||||
"trashed_projects": "Trashed Projects",
|
||||
"trashed_projects": "Trashed projects",
|
||||
"trashing_projects_wont_affect_collaborators": "Trashing projects won’t affect your collaborators.",
|
||||
"trial_last_day": "This is the last day of your <b>Overleaf Premium</b> trial",
|
||||
"trial_remaining_days": "__days__ more days on your <b>Overleaf Premium</b> trial",
|
||||
@@ -2456,8 +2456,8 @@
|
||||
"unlink_dropbox_warning": "Any projects that you have synced with Dropbox will be disconnected and no longer kept in sync with Dropbox. Are you sure you want to unlink your Dropbox account?",
|
||||
"unlink_github_repository": "Unlink GitHub repository",
|
||||
"unlink_github_warning": "Any projects that you have synced with GitHub will be disconnected and no longer kept in sync with GitHub. Are you sure you want to unlink your GitHub account?",
|
||||
"unlink_linked_accounts": "Unlink any linked accounts (such as ORCID ID, IEEE). <0>Remove them in Account Settings (under Linked Accounts).</0>",
|
||||
"unlink_linked_google_account": "Unlink your Google account. <0>Remove it in Account Settings (under Linked Accounts).</0>",
|
||||
"unlink_linked_accounts": "Unlink any linked accounts (such as ORCID ID, IEEE). <0>Remove them in Account settings (under Linked Accounts).</0>",
|
||||
"unlink_linked_google_account": "Unlink your Google account. <0>Remove it in Account settings (under Linked Accounts).</0>",
|
||||
"unlink_provider_account_title": "Unlink __provider__ Account",
|
||||
"unlink_provider_account_warning": "Warning: When you unlink your account from __provider__ you will not be able to sign in using __provider__ anymore.",
|
||||
"unlink_reference": "Unlink References Provider",
|
||||
@@ -2477,7 +2477,7 @@
|
||||
"until_then_you_can_still": "Until then you can still:",
|
||||
"untrash": "Restore",
|
||||
"update": "Update",
|
||||
"update_account_info": "Update Account Info",
|
||||
"update_account_info": "Update account info",
|
||||
"update_dropbox_settings": "Update Dropbox Settings",
|
||||
"update_your_billing_details": "Update your billing details",
|
||||
"updates_to_project_sharing": "Updates to project sharing",
|
||||
@@ -2499,7 +2499,7 @@
|
||||
"upload_failed": "Upload failed",
|
||||
"upload_file": "Upload file",
|
||||
"upload_from_computer": "Upload from computer",
|
||||
"upload_project": "Upload Project",
|
||||
"upload_project": "Upload project",
|
||||
"upload_zipped_project": "Upload Zipped Project",
|
||||
"url_to_fetch_the_file_from": "URL to fetch the file from",
|
||||
"us_gov_banner_fedramp": "<0>Now FedRAMP® authorized for LI-SaaS: </0>Overleaf’s Group Professional subscription. Need an air-gapped deployment? We offer an on-premises solution too. Talk to our US federal government team.",
|
||||
@@ -2540,7 +2540,7 @@
|
||||
"vat_number": "VAT Number",
|
||||
"verify_email_address_before_enabling_managed_users": "You need to verify your email address before enabling managed users.",
|
||||
"view": "View",
|
||||
"view_all": "View All",
|
||||
"view_all": "View all",
|
||||
"view_billing_details": "View billing details",
|
||||
"view_code": "View code",
|
||||
"view_configuration": "View configuration",
|
||||
@@ -2646,14 +2646,14 @@
|
||||
"you_are_a_manager_of_x_plan_as_member_of_group_subscription_y_administered_by_z": "You are a <1>manager</1> of the <0>__planName__</0> group subscription <1>__groupName__</1> administered by <1>__adminEmail__</1>.",
|
||||
"you_are_a_manager_of_x_plan_as_member_of_group_subscription_y_administered_by_z_you": "You are a <1>manager</1> of the <0>__planName__</0> group subscription <1>__groupName__</1> administered by <1>you (__adminEmail__</1>).",
|
||||
"you_are_currently_logged_in_as": "You are currently logged in as <b>__email__</b>.",
|
||||
"you_are_on_a_paid_plan_contact_support_to_find_out_more": "You’re on an __appName__ Paid plan. <0>Contact support</0> to find out more.",
|
||||
"you_are_on_a_paid_plan_contact_support_to_find_out_more": "You’re on an __appName__ Paid plan. <0>Contact Support</0> to find out more.",
|
||||
"you_are_on_x_plan_as_a_confirmed_member_of_institution_y": "You are on our <0>__planName__</0> plan as a <1>confirmed member</1> of <1>__institutionName__</1>",
|
||||
"you_are_on_x_plan_as_member_of_group_subscription_y_administered_by_z": "You are on our <0>__planName__</0> plan as a <1>member</1> of the group subscription <1>__groupName__</1> administered by <1>__adminEmail__</1>",
|
||||
"you_can_also_choose_to_view_anonymously_or_leave_the_project": "You can also choose to <0>view anonymously</0> (you will lose edit access) or <1>leave the project</1>.",
|
||||
"you_can_buy_this_plan_but_not_as_a_trial": "You can buy this plan but not as a trial, as you’ve completed a trial recently.",
|
||||
"you_can_leave_the_experiment_from_your_account_settings_at_any_time": "You can leave the experiment from your <0>account settings</0> at any time.",
|
||||
"you_can_manage_your_reference_manager_integrations_from_your_account_settings_page": "You can manage your reference manager integrations from your <0>account settings page</0>.",
|
||||
"you_can_now_enable_sso": "You can now enable SSO on your Group settings page.",
|
||||
"you_can_now_enable_sso": "You can now enable SSO on your group settings page.",
|
||||
"you_can_now_log_in_sso": "You can now log in through your institution and if eligible you will receive <0>__appName__ Professional features</0>.",
|
||||
"you_can_now_sync_your_papers_library_directly_with_your_overleaf_projects": "You can now sync your Papers library directly with your Overleaf projects",
|
||||
"you_can_opt_in_and_out_of_the_program_at_any_time_on_this_page": "You can <0>opt in and out</0> of the program at any time on this page",
|
||||
@@ -2716,7 +2716,7 @@
|
||||
"your_project_exceeded_compile_timeout_limit_on_free_plan": "Your project exceeded the compile timeout limit on our free plan.",
|
||||
"your_project_near_compile_timeout_limit": "Your project is near the compile timeout limit for our free plan.",
|
||||
"your_project_need_more_time_to_compile": "It looks like your project may need more time to compile than our free plan allows.",
|
||||
"your_projects": "Your Projects",
|
||||
"your_projects": "Your projects",
|
||||
"your_questions_answered": "Your questions answered",
|
||||
"your_role": "Your role",
|
||||
"your_sessions": "Your Sessions",
|
||||
@@ -2751,7 +2751,7 @@
|
||||
"zotero_dynamic_sync_description": "With the Zotero integration, you can import your references into __appName__. You can either import all your references at once or dynamically search your Zotero library directly from __appName__.",
|
||||
"zotero_groups_loading_error": "There was an error loading groups from Zotero",
|
||||
"zotero_groups_relink": "There was an error accessing your Zotero data. This was likely caused by lack of permissions. Please re-link your account and try again.",
|
||||
"zotero_integration": "Zotero Integration",
|
||||
"zotero_integration": "Zotero integration",
|
||||
"zotero_is_premium": "Zotero integration is a premium feature",
|
||||
"zotero_reference_loading_error": "Error, could not load references from Zotero",
|
||||
"zotero_reference_loading_error_expired": "Zotero token expired, please re-link your account",
|
||||
|
||||
@@ -75,7 +75,7 @@ describe('<EditorLeftMenu />', function () {
|
||||
|
||||
// Actions Menu
|
||||
cy.findByRole('heading', { name: 'Actions' })
|
||||
cy.findByRole('button', { name: 'Copy Project' })
|
||||
cy.findByRole('button', { name: 'Copy project' })
|
||||
cy.findByRole('button', { name: 'Word Count' })
|
||||
|
||||
// Sync Menu
|
||||
@@ -105,7 +105,7 @@ describe('<EditorLeftMenu />', function () {
|
||||
cy.findByRole('heading', { name: 'Help' })
|
||||
cy.findByRole('button', { name: 'Show Hotkeys' })
|
||||
cy.findByRole('link', { name: 'Documentation' })
|
||||
cy.findByRole('button', { name: 'Contact Us' })
|
||||
cy.findByRole('button', { name: 'Contact us' })
|
||||
})
|
||||
|
||||
describe('download menu', function () {
|
||||
@@ -154,14 +154,14 @@ describe('<EditorLeftMenu />', function () {
|
||||
</EditorProviders>
|
||||
)
|
||||
|
||||
cy.findByRole('button', { name: 'Copy Project' }).click()
|
||||
cy.findByRole('heading', { name: 'Copy Project' })
|
||||
cy.findByRole('button', { name: 'Copy project' }).click()
|
||||
cy.findByRole('heading', { name: 'Copy project' })
|
||||
|
||||
// try closing & re-opening the modal with different methods
|
||||
cy.findByRole('button', { name: 'Close' }).click()
|
||||
cy.findByRole('button', { name: 'Copy Project' }).click()
|
||||
cy.findByRole('button', { name: 'Copy project' }).click()
|
||||
cy.findByRole('button', { name: 'Cancel' }).click()
|
||||
cy.findByRole('button', { name: 'Copy Project' }).click()
|
||||
cy.findByRole('button', { name: 'Copy project' }).click()
|
||||
|
||||
cy.findByLabelText('New Name').focus()
|
||||
cy.findByLabelText('New Name').clear()
|
||||
@@ -840,7 +840,7 @@ describe('<EditorLeftMenu />', function () {
|
||||
</EditorProviders>
|
||||
)
|
||||
|
||||
cy.findByRole('button', { name: 'Contact Us' }).click()
|
||||
cy.findByRole('button', { name: 'Contact us' }).click()
|
||||
cy.findByText('Affected project URL (Optional)')
|
||||
})
|
||||
})
|
||||
@@ -869,7 +869,7 @@ describe('<EditorLeftMenu />', function () {
|
||||
|
||||
// Actions Menu
|
||||
cy.findByRole('heading', { name: 'Actions' }).should('not.exist')
|
||||
cy.findByRole('button', { name: 'Copy Project' }).should('not.exist')
|
||||
cy.findByRole('button', { name: 'Copy project' }).should('not.exist')
|
||||
cy.findByRole('button', { name: 'Word Count' }).should('not.exist')
|
||||
|
||||
// Sync Menu
|
||||
@@ -899,7 +899,7 @@ describe('<EditorLeftMenu />', function () {
|
||||
cy.findByRole('heading', { name: 'Help' })
|
||||
cy.findByRole('button', { name: 'Show Hotkeys' })
|
||||
cy.findByRole('button', { name: 'Documentation' }).should('not.exist')
|
||||
cy.findByRole('link', { name: 'Contact Us' }).should('not.exist')
|
||||
cy.findByRole('link', { name: 'Contact us' }).should('not.exist')
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -33,7 +33,7 @@ describe('<EditorCloneProjectModalWrapper />', function () {
|
||||
{ scope: { project } }
|
||||
)
|
||||
|
||||
await screen.findByText('Copy Project')
|
||||
await screen.findByText('Copy project')
|
||||
})
|
||||
|
||||
it('posts the generated project name', async function () {
|
||||
|
||||
@@ -21,7 +21,7 @@ describe('<ActionsCopyProject />', function () {
|
||||
it('shows correct modal when clicked', async function () {
|
||||
renderWithEditorContext(<ActionsCopyProject />)
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: 'Copy Project' }))
|
||||
fireEvent.click(screen.getByRole('button', { name: 'Copy project' }))
|
||||
|
||||
screen.getByPlaceholderText('New project name')
|
||||
})
|
||||
@@ -36,10 +36,10 @@ describe('<ActionsCopyProject />', function () {
|
||||
|
||||
renderWithEditorContext(<ActionsCopyProject />)
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: 'Copy Project' }))
|
||||
fireEvent.click(screen.getByRole('button', { name: 'Copy project' }))
|
||||
|
||||
const input = screen.getByPlaceholderText('New project name')
|
||||
fireEvent.change(input, { target: { value: 'New Project' } })
|
||||
fireEvent.change(input, { target: { value: 'New project' } })
|
||||
|
||||
const button = screen.getByRole('button', { name: 'Copy' })
|
||||
button.click()
|
||||
|
||||
@@ -41,7 +41,7 @@ describe('<ActionsMenu />', function () {
|
||||
|
||||
screen.getByText('Actions')
|
||||
screen.getByRole('button', {
|
||||
name: 'Copy Project',
|
||||
name: 'Copy project',
|
||||
})
|
||||
|
||||
await waitFor(() => {
|
||||
@@ -69,7 +69,7 @@ describe('<ActionsMenu />', function () {
|
||||
expect(screen.queryByText('Actions')).to.equal(null)
|
||||
expect(
|
||||
screen.queryByRole('button', {
|
||||
name: 'Copy Project',
|
||||
name: 'Copy project',
|
||||
})
|
||||
).to.equal(null)
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ describe('<HelpContactUs />', function () {
|
||||
renderWithEditorContext(<HelpContactUs />)
|
||||
|
||||
expect(screen.queryByRole('dialog')).to.equal(null)
|
||||
fireEvent.click(screen.getByRole('button', { name: 'Contact Us' }))
|
||||
fireEvent.click(screen.getByRole('button', { name: 'Contact us' }))
|
||||
const modal = screen.getAllByRole('dialog')[0]
|
||||
within(modal).getAllByText('Get in touch')
|
||||
within(modal).getByText('Subject')
|
||||
|
||||
@@ -23,7 +23,7 @@ describe('<HelpMenu />', function () {
|
||||
renderWithEditorContext(<HelpMenu />)
|
||||
|
||||
screen.getByRole('button', { name: 'Show Hotkeys' })
|
||||
screen.getByRole('button', { name: 'Contact Us' })
|
||||
screen.getByRole('button', { name: 'Contact us' })
|
||||
screen.getByRole('link', { name: 'Documentation' })
|
||||
})
|
||||
|
||||
@@ -33,7 +33,7 @@ describe('<HelpMenu />', function () {
|
||||
renderWithEditorContext(<HelpMenu />)
|
||||
|
||||
screen.getByRole('button', { name: 'Show Hotkeys' })
|
||||
expect(screen.queryByRole('button', { name: 'Contact Us' })).to.equal(null)
|
||||
expect(screen.queryByRole('button', { name: 'Contact us' })).to.equal(null)
|
||||
expect(screen.queryByRole('link', { name: 'Documentation' })).to.equal(null)
|
||||
})
|
||||
})
|
||||
|
||||
@@ -28,16 +28,16 @@ describe('<NewProjectButton />', function () {
|
||||
renderWithProjectListContext(<NewProjectButton id="test" />)
|
||||
|
||||
const newProjectButton = screen.getByRole('button', {
|
||||
name: 'New Project',
|
||||
name: 'New project',
|
||||
})
|
||||
fireEvent.click(newProjectButton)
|
||||
})
|
||||
|
||||
it('shows the correct dropdown menu', function () {
|
||||
// static menu
|
||||
screen.getByText('Blank Project')
|
||||
screen.getByText('Example Project')
|
||||
screen.getByText('Upload Project')
|
||||
screen.getByText('Blank project')
|
||||
screen.getByText('Example project')
|
||||
screen.getByText('Upload project')
|
||||
screen.getByText('Import from GitHub')
|
||||
|
||||
// static text
|
||||
@@ -48,27 +48,27 @@ describe('<NewProjectButton />', function () {
|
||||
screen.getByText('View All')
|
||||
})
|
||||
|
||||
it('open new project modal when clicking at Blank Project', function () {
|
||||
fireEvent.click(screen.getByRole('menuitem', { name: 'Blank Project' }))
|
||||
it('open new project modal when clicking at Blank project', function () {
|
||||
fireEvent.click(screen.getByRole('menuitem', { name: 'Blank project' }))
|
||||
|
||||
screen.getByPlaceholderText('Project Name')
|
||||
})
|
||||
|
||||
it('open new project modal when clicking at Example Project', function () {
|
||||
fireEvent.click(screen.getByRole('menuitem', { name: 'Example Project' }))
|
||||
it('open new project modal when clicking at Example project', function () {
|
||||
fireEvent.click(screen.getByRole('menuitem', { name: 'Example project' }))
|
||||
|
||||
screen.getByPlaceholderText('Project Name')
|
||||
})
|
||||
|
||||
it('close the new project modal when clicking at the top right "x" button', function () {
|
||||
fireEvent.click(screen.getByRole('menuitem', { name: 'Blank Project' }))
|
||||
fireEvent.click(screen.getByRole('menuitem', { name: 'Blank project' }))
|
||||
fireEvent.click(screen.getByRole('button', { name: 'Close' }))
|
||||
|
||||
expect(screen.queryByRole('dialog')).to.be.null
|
||||
})
|
||||
|
||||
it('close the new project modal when clicking at the Cancel button', function () {
|
||||
fireEvent.click(screen.getByRole('menuitem', { name: 'Blank Project' }))
|
||||
fireEvent.click(screen.getByRole('menuitem', { name: 'Blank project' }))
|
||||
fireEvent.click(screen.getByRole('button', { name: 'Cancel' }))
|
||||
|
||||
expect(screen.queryByRole('dialog')).to.be.null
|
||||
@@ -102,14 +102,14 @@ describe('<NewProjectButton />', function () {
|
||||
renderWithProjectListContext(<NewProjectButton id="test" />)
|
||||
|
||||
const newProjectButton = screen.getByRole('button', {
|
||||
name: 'New Project',
|
||||
name: 'New project',
|
||||
})
|
||||
|
||||
fireEvent.click(newProjectButton)
|
||||
// static menu
|
||||
screen.getByText('Blank Project')
|
||||
screen.getByText('Example Project')
|
||||
screen.getByText('Upload Project')
|
||||
screen.getByText('Blank project')
|
||||
screen.getByText('Example project')
|
||||
screen.getByText('Upload project')
|
||||
screen.getByText('Import from GitHub')
|
||||
|
||||
// static text for institution templates
|
||||
|
||||
@@ -931,7 +931,7 @@ describe('<UserNotifications />', function () {
|
||||
renderWithinProjectListProvider(GroupsAndEnterpriseBanner)
|
||||
await fetchMock.callHistory.flush(true)
|
||||
|
||||
expect(screen.queryByRole('link', { name: 'Contact Sales' })).to.be.null
|
||||
expect(screen.queryByRole('link', { name: 'Contact sales' })).to.be.null
|
||||
})
|
||||
|
||||
it('shows the banner for users that have dismissed the previous banners', async function () {
|
||||
@@ -941,7 +941,7 @@ describe('<UserNotifications />', function () {
|
||||
renderWithinProjectListProvider(GroupsAndEnterpriseBanner)
|
||||
await fetchMock.callHistory.flush(true)
|
||||
|
||||
await screen.findByRole('link', { name: 'Contact Sales' })
|
||||
await screen.findByRole('link', { name: 'Contact sales' })
|
||||
})
|
||||
|
||||
it('shows the banner for users that have dismissed the banner more than 30 days ago', async function () {
|
||||
@@ -956,7 +956,7 @@ describe('<UserNotifications />', function () {
|
||||
renderWithinProjectListProvider(GroupsAndEnterpriseBanner)
|
||||
await fetchMock.callHistory.flush(true)
|
||||
|
||||
await screen.findByRole('link', { name: 'Contact Sales' })
|
||||
await screen.findByRole('link', { name: 'Contact sales' })
|
||||
})
|
||||
|
||||
it('does not show the banner for users that have dismissed the banner within the last 30 days', async function () {
|
||||
@@ -971,7 +971,7 @@ describe('<UserNotifications />', function () {
|
||||
renderWithinProjectListProvider(GroupsAndEnterpriseBanner)
|
||||
await fetchMock.callHistory.flush(true)
|
||||
|
||||
expect(screen.queryByRole('link', { name: 'Contact Sales' })).to.be.null
|
||||
expect(screen.queryByRole('link', { name: 'Contact sales' })).to.be.null
|
||||
})
|
||||
|
||||
describe('users that are not in group and are not affiliated', function () {
|
||||
@@ -1012,7 +1012,7 @@ describe('<UserNotifications />', function () {
|
||||
await screen.findByText(
|
||||
'Overleaf On-Premises: Does your company want to keep its data within its firewall? Overleaf offers Server Pro, an on-premises solution for companies. Get in touch to learn more.'
|
||||
)
|
||||
const link = screen.getByRole('link', { name: 'Contact Sales' })
|
||||
const link = screen.getByRole('link', { name: 'Contact sales' })
|
||||
|
||||
expect(link.getAttribute('href')).to.equal(`/for/contact-sales-2`)
|
||||
})
|
||||
@@ -1029,7 +1029,7 @@ describe('<UserNotifications />', function () {
|
||||
await screen.findByText(
|
||||
'Why do Fortune 500 companies and top research institutions trust Overleaf to streamline their collaboration? Get in touch to learn more.'
|
||||
)
|
||||
const link = screen.getByRole('link', { name: 'Contact Sales' })
|
||||
const link = screen.getByRole('link', { name: 'Contact sales' })
|
||||
|
||||
expect(link.getAttribute('href')).to.equal(`/for/contact-sales-4`)
|
||||
})
|
||||
|
||||
@@ -260,7 +260,7 @@ describe('<ProjectListRoot />', function () {
|
||||
|
||||
describe('archived projects', function () {
|
||||
beforeEach(function () {
|
||||
const filterButton = screen.getAllByText('Archived Projects')[0]
|
||||
const filterButton = screen.getAllByText('Archived projects')[0]
|
||||
fireEvent.click(filterButton)
|
||||
|
||||
allCheckboxes = screen.getAllByRole<HTMLInputElement>('checkbox')
|
||||
@@ -308,7 +308,7 @@ describe('<ProjectListRoot />', function () {
|
||||
|
||||
describe('trashed projects', function () {
|
||||
beforeEach(function () {
|
||||
const filterButton = screen.getAllByText('Trashed Projects')[0]
|
||||
const filterButton = screen.getAllByText('Trashed projects')[0]
|
||||
fireEvent.click(filterButton)
|
||||
|
||||
allCheckboxes = screen.getAllByRole<HTMLInputElement>('checkbox')
|
||||
@@ -333,7 +333,7 @@ describe('<ProjectListRoot />', function () {
|
||||
})
|
||||
|
||||
it('clears selected projects when filter changed', function () {
|
||||
const filterButton = screen.getAllByText('All Projects')[0]
|
||||
const filterButton = screen.getAllByText('All projects')[0]
|
||||
fireEvent.click(filterButton)
|
||||
|
||||
const allCheckboxes =
|
||||
@@ -843,7 +843,7 @@ describe('<ProjectListRoot />', function () {
|
||||
|
||||
describe('"More" dropdown', function () {
|
||||
beforeEach(async function () {
|
||||
const filterButton = screen.getAllByText('All Projects')[0]
|
||||
const filterButton = screen.getAllByText('All projects')[0]
|
||||
fireEvent.click(filterButton)
|
||||
allCheckboxes = screen.getAllByRole<HTMLInputElement>('checkbox')
|
||||
})
|
||||
@@ -1193,7 +1193,7 @@ describe('<ProjectListRoot />', function () {
|
||||
|
||||
expect(screen.queryByText(copiedProjectName)).to.be.null
|
||||
|
||||
const yourProjectFilter = screen.getAllByText('Your Projects')[0]
|
||||
const yourProjectFilter = screen.getAllByText('Your projects')[0]
|
||||
fireEvent.click(yourProjectFilter)
|
||||
await screen.findByText(copiedProjectName)
|
||||
})
|
||||
|
||||
@@ -24,7 +24,7 @@ describe('<TagsList />', function () {
|
||||
|
||||
fetchMock.post('/tag', {
|
||||
_id: 'eee888eee888',
|
||||
name: 'New Tag',
|
||||
name: 'New tag',
|
||||
project_ids: [],
|
||||
})
|
||||
fetchMock.post('express:/tag/:tagId/projects', 200)
|
||||
@@ -46,7 +46,7 @@ describe('<TagsList />', function () {
|
||||
expect(header.textContent).to.equal('Organize Tags')
|
||||
|
||||
await screen.findByRole('button', {
|
||||
name: 'New Tag',
|
||||
name: 'New tag',
|
||||
})
|
||||
await screen.findByRole('button', {
|
||||
name: 'Tag 1 (1)',
|
||||
@@ -82,7 +82,7 @@ describe('<TagsList />', function () {
|
||||
describe('Create modal', function () {
|
||||
beforeEach(async function () {
|
||||
const newTagButton = screen.getByRole('button', {
|
||||
name: 'New Tag',
|
||||
name: 'New tag',
|
||||
})
|
||||
|
||||
fireEvent.click(newTagButton)
|
||||
@@ -139,7 +139,7 @@ describe('<TagsList />', function () {
|
||||
it('filling the input and clicking Create sends a request', async function () {
|
||||
const modal = screen.getAllByRole('dialog', { hidden: false })[0]
|
||||
const input = within(modal).getByRole('textbox')
|
||||
fireEvent.change(input, { target: { value: 'New Tag' } })
|
||||
fireEvent.change(input, { target: { value: 'New tag' } })
|
||||
|
||||
const createButton = within(modal).getByRole('button', { name: 'Create' })
|
||||
expect(createButton.hasAttribute('disabled')).to.be.false
|
||||
@@ -155,7 +155,7 @@ describe('<TagsList />', function () {
|
||||
)
|
||||
|
||||
screen.getByRole('button', {
|
||||
name: 'New Tag (0)',
|
||||
name: 'New tag (0)',
|
||||
})
|
||||
})
|
||||
})
|
||||
@@ -234,7 +234,7 @@ describe('<TagsList />', function () {
|
||||
it('filling the input and clicking Save sends a request', async function () {
|
||||
const modal = screen.getAllByRole('dialog', { hidden: false })[0]
|
||||
const input = within(modal).getByRole('textbox')
|
||||
fireEvent.change(input, { target: { value: 'New Tag Name' } })
|
||||
fireEvent.change(input, { target: { value: 'New tag Name' } })
|
||||
|
||||
const saveButton = within(modal).getByRole('button', { name: 'Save' })
|
||||
expect(saveButton.hasAttribute('disabled')).to.be.false
|
||||
@@ -250,7 +250,7 @@ describe('<TagsList />', function () {
|
||||
)
|
||||
|
||||
screen.getByRole('button', {
|
||||
name: 'New Tag Name (1)',
|
||||
name: 'New tag Name (1)',
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -31,7 +31,7 @@ describe('<ArchiveProjectButton />', function () {
|
||||
)
|
||||
const btn = screen.getByRole('button', { name: 'Archive' })
|
||||
fireEvent.click(btn)
|
||||
screen.getByText('Archive Projects')
|
||||
screen.getByText('Archive projects')
|
||||
screen.getByText(archiveableProject.name)
|
||||
})
|
||||
|
||||
@@ -56,7 +56,7 @@ describe('<ArchiveProjectButton />', function () {
|
||||
)
|
||||
const btn = screen.getByRole('button', { name: 'Archive' })
|
||||
fireEvent.click(btn)
|
||||
screen.getByText('Archive Projects')
|
||||
screen.getByText('Archive projects')
|
||||
screen.getByText('You are about to archive the following projects:')
|
||||
screen.getByText('Archiving projects won’t affect your collaborators.')
|
||||
const confirmBtn = screen.getByRole('button', {
|
||||
|
||||
@@ -55,7 +55,7 @@ describe('<CopyProjectButton />', function () {
|
||||
const btn = screen.getByRole('button', { name: 'Copy' })
|
||||
|
||||
fireEvent.click(btn)
|
||||
screen.getByText('Copy Project')
|
||||
screen.getByText('Copy project')
|
||||
screen.getByLabelText('New Name')
|
||||
screen.getByDisplayValue(`${copyableProject.name} (Copy)`)
|
||||
const copyBtn = screen.getAllByRole<HTMLButtonElement>('button', {
|
||||
|
||||
@@ -21,6 +21,6 @@ describe('<ArchiveProjectsButton />', function () {
|
||||
renderWithProjectListContext(<ArchiveProjectsButton />)
|
||||
const btn = screen.getByRole('button', { name: 'Archive' })
|
||||
fireEvent.click(btn)
|
||||
screen.getByText('Archive Projects')
|
||||
screen.getByText('Archive projects')
|
||||
})
|
||||
})
|
||||
|
||||
@@ -30,9 +30,9 @@ describe('<WelcomeMessage />', function () {
|
||||
|
||||
fireEvent.click(button)
|
||||
|
||||
screen.getByText('Blank Project')
|
||||
screen.getByText('Example Project')
|
||||
screen.getByText('Upload Project')
|
||||
screen.getByText('Blank project')
|
||||
screen.getByText('Example project')
|
||||
screen.getByText('Upload project')
|
||||
screen.getByText('Import from GitHub')
|
||||
})
|
||||
|
||||
@@ -52,9 +52,9 @@ describe('<WelcomeMessage />', function () {
|
||||
|
||||
fireEvent.click(button)
|
||||
// static menu
|
||||
screen.getByText('Blank Project')
|
||||
screen.getByText('Example Project')
|
||||
screen.getByText('Upload Project')
|
||||
screen.getByText('Blank project')
|
||||
screen.getByText('Example project')
|
||||
screen.getByText('Upload project')
|
||||
screen.getByText('Import from GitHub')
|
||||
|
||||
// static text for institution templates
|
||||
@@ -79,9 +79,9 @@ describe('<WelcomeMessage />', function () {
|
||||
|
||||
fireEvent.click(button)
|
||||
|
||||
screen.getByText('Blank Project')
|
||||
screen.getByText('Example Project')
|
||||
screen.getByText('Upload Project')
|
||||
screen.getByText('Blank project')
|
||||
screen.getByText('Example project')
|
||||
screen.getByText('Upload project')
|
||||
screen.getByText('Import from GitHub')
|
||||
})
|
||||
|
||||
@@ -130,9 +130,9 @@ describe('<WelcomeMessage />', function () {
|
||||
|
||||
fireEvent.click(button)
|
||||
|
||||
screen.getByText('Blank Project')
|
||||
screen.getByText('Example Project')
|
||||
screen.getByText('Upload Project')
|
||||
screen.getByText('Blank project')
|
||||
screen.getByText('Example project')
|
||||
screen.getByText('Upload project')
|
||||
expect(screen.queryByText('Import from GitHub')).to.not.exist
|
||||
})
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ describe('<EmailsRow/>', function () {
|
||||
|
||||
it('renders actions', function () {
|
||||
renderEmailsRow(unconfirmedUserData)
|
||||
screen.getByRole('button', { name: 'Make Primary' })
|
||||
screen.getByRole('button', { name: 'Make primary' })
|
||||
})
|
||||
})
|
||||
|
||||
@@ -96,7 +96,7 @@ describe('<EmailsRow/>', function () {
|
||||
getByTextContent(
|
||||
'You can now link your Overleaf account to your Overleaf institutional account.'
|
||||
)
|
||||
screen.getByRole('button', { name: 'Link Accounts' })
|
||||
screen.getByRole('button', { name: 'Link accounts' })
|
||||
})
|
||||
})
|
||||
|
||||
@@ -113,7 +113,7 @@ describe('<EmailsRow/>', function () {
|
||||
getByTextContent(
|
||||
'You can log in to Overleaf through your Overleaf institutional login.'
|
||||
)
|
||||
expect(screen.queryByRole('button', { name: 'Link Accounts' })).to.be
|
||||
expect(screen.queryByRole('button', { name: 'Link accounts' })).to.be
|
||||
.null
|
||||
})
|
||||
})
|
||||
|
||||
@@ -284,7 +284,7 @@ describe('<EmailsSection />', function () {
|
||||
target: { value: 'user@autocomplete.edu' },
|
||||
})
|
||||
|
||||
await screen.findByRole('button', { name: 'Link Accounts and Add Email' })
|
||||
await screen.findByRole('button', { name: 'Link accounts and add email' })
|
||||
})
|
||||
|
||||
it('adds new email address with existing institution and custom departments', async function () {
|
||||
|
||||
@@ -97,7 +97,7 @@ describe('<ReconfirmationInfo/>', function () {
|
||||
it('redirects to SAML flow', async function () {
|
||||
renderReconfirmationInfo(inReconfirmUserData)
|
||||
const confirmButton = screen.getByRole('button', {
|
||||
name: 'Confirm Affiliation',
|
||||
name: 'Confirm affiliation',
|
||||
}) as HTMLButtonElement
|
||||
|
||||
await waitFor(() => {
|
||||
@@ -127,7 +127,7 @@ describe('<ReconfirmationInfo/>', function () {
|
||||
it('sends and resends confirmation email', async function () {
|
||||
renderReconfirmationInfo(inReconfirmUserData)
|
||||
const confirmButton = (await screen.findByRole('button', {
|
||||
name: 'Confirm Affiliation',
|
||||
name: 'Confirm affiliation',
|
||||
})) as HTMLButtonElement
|
||||
|
||||
await waitFor(() => {
|
||||
|
||||
@@ -23,7 +23,7 @@ describe('<LeaveSection />', function () {
|
||||
})
|
||||
|
||||
fireEvent.click(button)
|
||||
await screen.findByText('Delete Account')
|
||||
await screen.findByText('Delete account')
|
||||
})
|
||||
|
||||
it('closes modal', async function () {
|
||||
@@ -40,6 +40,6 @@ describe('<LeaveSection />', function () {
|
||||
|
||||
fireEvent.click(cancelButton)
|
||||
|
||||
await waitForElementToBeRemoved(() => screen.getByText('Delete Account'))
|
||||
await waitForElementToBeRemoved(() => screen.getByText('Delete account'))
|
||||
})
|
||||
})
|
||||
|
||||
@@ -66,7 +66,7 @@ describe('<LinkingSection />', function () {
|
||||
|
||||
it('lists SSO providers', async function () {
|
||||
renderSectionWithProviders()
|
||||
screen.getByText('linked accounts')
|
||||
screen.getByText('Linked accounts')
|
||||
|
||||
screen.getByText('Google')
|
||||
screen.getByText('Log in with Google.')
|
||||
@@ -94,6 +94,6 @@ describe('<LinkingSection />', function () {
|
||||
window.metaAttributesCache.delete('ol-oauthProviders')
|
||||
renderSectionWithProviders()
|
||||
|
||||
expect(screen.queryByText('linked accounts')).to.not.exist
|
||||
expect(screen.queryByText('Linked accounts')).to.not.exist
|
||||
})
|
||||
})
|
||||
|
||||
@@ -186,7 +186,7 @@ describe('<PasswordSection />', function () {
|
||||
it('shows message when user cannot use password log in', async function () {
|
||||
window.metaAttributesCache.set('ol-cannot-change-password', true)
|
||||
render(<PasswordSection />)
|
||||
await screen.findByRole('heading', { name: 'Change Password' })
|
||||
await screen.findByRole('heading', { name: 'Change password' })
|
||||
screen.getByText(
|
||||
'You can’t add or change your password because your group or organization uses',
|
||||
{ exact: false }
|
||||
|
||||
@@ -36,11 +36,11 @@ describe('<SettingsPageRoot />', function () {
|
||||
render(<SettingsPageRoot />)
|
||||
|
||||
await waitFor(() => {
|
||||
screen.getByText('Account Settings')
|
||||
screen.getByText('Account settings')
|
||||
})
|
||||
screen.getByText('Emails and Affiliations')
|
||||
screen.getByText('Update Account Info')
|
||||
screen.getByText('Change Password')
|
||||
screen.getByText('Emails and affiliations')
|
||||
screen.getByText('Update account info')
|
||||
screen.getByText('Change password')
|
||||
screen.getByText('Integrations')
|
||||
screen.getByText('Overleaf Beta Program')
|
||||
screen.getByText('Sessions')
|
||||
@@ -58,11 +58,11 @@ describe('<SettingsPageRoot />', function () {
|
||||
render(<SettingsPageRoot />)
|
||||
|
||||
await waitFor(() => {
|
||||
screen.getByText('Account Settings')
|
||||
screen.getByText('Account settings')
|
||||
})
|
||||
expect(screen.queryByText('Emails and Affiliations')).to.not.exist
|
||||
screen.getByText('Update Account Info')
|
||||
screen.getByText('Change Password')
|
||||
expect(screen.queryByText('Emails and affiliations')).to.not.exist
|
||||
screen.getByText('Update account info')
|
||||
screen.getByText('Change password')
|
||||
screen.getByText('Integrations')
|
||||
expect(screen.queryByText('Overleaf Beta Program')).to.not.exist
|
||||
screen.getByText('Sessions')
|
||||
|
||||
@@ -181,7 +181,7 @@ describe('<ShareProjectModal/>', function () {
|
||||
await screen.findByText(
|
||||
'This project is public and can be edited by anyone with the URL.'
|
||||
)
|
||||
await screen.findByRole('button', { name: 'Make Private' })
|
||||
await screen.findByRole('button', { name: 'Make private' })
|
||||
})
|
||||
|
||||
it('handles legacy access level "readOnly"', async function () {
|
||||
@@ -192,7 +192,7 @@ describe('<ShareProjectModal/>', function () {
|
||||
await screen.findByText(
|
||||
'This project is public and can be viewed but not edited by anyone with the URL'
|
||||
)
|
||||
await screen.findByRole('button', { name: 'Make Private' })
|
||||
await screen.findByRole('button', { name: 'Make private' })
|
||||
})
|
||||
|
||||
it('displays actions for project-owners', async function () {
|
||||
|
||||
@@ -37,13 +37,13 @@ describe('<PersonalSubscription />', function () {
|
||||
})
|
||||
|
||||
describe('custom subscription', function () {
|
||||
it('displays contact support message', function () {
|
||||
it('displays contact Support message', function () {
|
||||
renderWithSubscriptionDashContext(<PersonalSubscription />, {
|
||||
metaTags: [{ name: 'ol-subscription', value: customSubscription }],
|
||||
})
|
||||
|
||||
screen.getByText('Please', { exact: false })
|
||||
screen.getByText('contact support', { exact: false })
|
||||
screen.getByText('contact Support', { exact: false })
|
||||
screen.getByText('to make changes to your plan', { exact: false })
|
||||
})
|
||||
})
|
||||
|
||||
@@ -102,7 +102,7 @@ describe('<ActiveSubscription />', function () {
|
||||
'If you wish this change to apply before the end of your current billing period, please contact us.'
|
||||
)
|
||||
|
||||
expect(screen.queryByRole('link', { name: 'contact support' })).to.be.null
|
||||
expect(screen.queryByRole('link', { name: 'contact Support' })).to.be.null
|
||||
expect(screen.queryByText('if you wish to change your group subscription.'))
|
||||
.to.be.null
|
||||
})
|
||||
@@ -524,9 +524,9 @@ describe('<ActiveSubscription />', function () {
|
||||
expect(changePlan).to.be.null
|
||||
})
|
||||
|
||||
it('shows contact support message for group plan change requests', function () {
|
||||
it('shows contact Support message for group plan change requests', function () {
|
||||
renderActiveSubscription(groupActiveSubscription)
|
||||
screen.getByRole('link', { name: 'contact support' })
|
||||
screen.getByRole('link', { name: 'contact Support' })
|
||||
screen.getByText('if you wish to change your group subscription.', {
|
||||
exact: false,
|
||||
})
|
||||
|
||||
@@ -48,7 +48,7 @@ describe('<SubscriptionDashboard />', function () {
|
||||
expect(text).to.be.null
|
||||
})
|
||||
|
||||
it('does not render the contact support message', function () {
|
||||
it('does not render the contact Support message', function () {
|
||||
const text = screen.queryByText(
|
||||
`You’re on an Overleaf Paid plan. Contact`,
|
||||
{
|
||||
@@ -60,7 +60,7 @@ describe('<SubscriptionDashboard />', function () {
|
||||
})
|
||||
|
||||
describe('Custom subscription', function () {
|
||||
it('renders the contact support message', function () {
|
||||
it('renders the contact Support message', function () {
|
||||
renderWithSubscriptionDashContext(<SubscriptionDashboard />, {
|
||||
metaTags: [
|
||||
{
|
||||
@@ -77,7 +77,7 @@ describe('<SubscriptionDashboard />', function () {
|
||||
screen.getByText(`You’re on an Overleaf Paid plan.`, {
|
||||
exact: false,
|
||||
})
|
||||
screen.getByText(`Contact support`, {
|
||||
screen.getByText(`Contact Support`, {
|
||||
exact: false,
|
||||
})
|
||||
})
|
||||
|
||||
@@ -40,7 +40,7 @@ describe('group invite', function () {
|
||||
fireEvent.click(button)
|
||||
await waitFor(() => {
|
||||
screen.getByText(
|
||||
'Something went wrong canceling your subscription. Please contact support.'
|
||||
'Something went wrong canceling your subscription. Please contact Support.'
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
const TITLE_REGEX = /<title>Your Projects - .*, Online LaTeX Editor<\/title>/
|
||||
const TITLE_REGEX = /<title>Your projects - .*, Online LaTeX Editor<\/title>/
|
||||
|
||||
async function run({ request, assertHasStatusCode }) {
|
||||
const response = await request('/project')
|
||||
|
||||
@@ -229,7 +229,7 @@ describe('EmailBuilder', function () {
|
||||
describe('HTML email', function () {
|
||||
it('should include a CTA button and a fallback CTA link', function () {
|
||||
const dom = cheerio.load(this.email.html)
|
||||
const buttonLink = dom('a:contains("Confirm Email")')
|
||||
const buttonLink = dom('a:contains("Confirm email")')
|
||||
expect(buttonLink.length).to.equal(1)
|
||||
expect(buttonLink.attr('href')).to.equal(this.opts.confirmEmailUrl)
|
||||
const fallback = dom('.force-overleaf-style').last()
|
||||
@@ -592,7 +592,7 @@ describe('EmailBuilder', function () {
|
||||
|
||||
describe('HTML email', function () {
|
||||
it('should include a CTA button and a fallback CTA link', function () {
|
||||
const buttonLink = this.dom('a:contains("Confirm Email")')
|
||||
const buttonLink = this.dom('a:contains("Confirm email")')
|
||||
expect(buttonLink.length).to.equal(1)
|
||||
expect(buttonLink.attr('href')).to.equal(this.opts.confirmEmailUrl)
|
||||
const fallback = this.dom('.force-overleaf-style').last()
|
||||
|
||||
Reference in New Issue
Block a user