move "{{count, number}}_one" "participant_count_one"
move "{{count, number}}_other" "participant_count_other"
move "{{count}} stars_one" "star_rating_input_label_one"
move "{{count}} stars_other" "star_rating_input_label_other"
move "{{displayName}} is presenting" "video_tile.presenter_label"
move "{{displayName}}, your call has ended." "call_ended_view.headline"
move "<0></0><1></1>You may withdraw consent by unchecking this box. If you are currently in a call, this setting will take effect at the end of the call." "settings.opt_in_description"
move "<0>Already have an account?</0><1><0>Log in</0> Or <2>Access as a guest</2></1>" "register_auth_links"
move "<0>Create an account</0> Or <2>Access as a guest</2>" "login_auth_links"
move "<0>Oops, something's gone wrong.</0>" "full_screen_view_h1"
move "<0>Submitting debug logs will help us track down the problem.</0>" "full_screen_view_description"
move "<0>Thanks for your feedback!</0>" "call_ended_view.feedback_done"
move "<0>We'd love to hear your feedback so we can improve your experience.</0>" "call_ended_view.feedback_prompt"
move "<0>Why not finish by setting up a password to keep your account?</0><1>You'll be able to keep your name and set an avatar for use on future calls</1>" "call_ended_view.create_account_prompt"
move "Another user on this call is having an issue. In order to better diagnose these issues we'd like to collect a debug log." "rageshake_request_modal.body"
move "Back to recents" "lobby.leave_button"
move "By participating in this beta, you consent to the collection of anonymous data, which we use to improve the product. You can find more information about which data we track in our <2>Privacy Policy</2> and our <5>Cookie Policy</5>." "analytics_notice"
move "Call not found" "group_call_loader_failed_heading"
move "Calls are now end-to-end encrypted and need to be created from the home page. This helps make sure everyone's using the same encryption key." "group_call_loader_failed_text"
move "Confirm password" "register_confirm_password_label"
move "Connectivity to the server has been lost." "disconnected_banner"
move "Continue in browser" "app_selection_modal.continue_in_browser"
move "Create account" "call_ended_view.create_account_button"
move "Debug log request" "rageshake_request_modal.title"
move "Developer" "settings.developer_tab_title"
move "Developer Settings" "settings.developer_settings_label"
move "Element Call Home" "header_label"
move "End call" "hangup_button_label"
move "Full screen" "fullscreen_button_label"
move "Exit full screen" "exit_fullscreen_button_label"
move "Expose developer settings in the settings window." "settings.developer_settings_label_description"
move "Feedback" "settings.feedback_tab_title"
move "Grid" "layout_grid_label"
move "Spotlight" "layout_spotlight_label"
move "How did it go?" "call_ended_view.survey_prompt"
move "If you are experiencing issues or simply would like to provide some feedback, please send us a short description below." "settings.feedback_tab_body"
move "Include debug logs" "settings.feedback_tab_send_logs_label"
move "Invite to this call" "invite_modal.title"
move "Join call" "lobby.join_button"
move "Join call now" "room_auth_view_join_button"
move "Join existing call?" "join_existing_call_modal.title"
move "Link copied to clipboard" "invite_modal.link_copied_toast"
move "Local volume" "local_volume_label"
move "Logging in…" "logging_in"
move "Login" "login_title"
move "Login to your account" "unauthenticated_view_login_button"
move "Microphone off" "microphone_off"
move "Microphone on" "microphone_on"
move "More" "settings.more_tab_title"
move "Mute microphone" "mute_microphone_button_label"
move "Name of call" "call_name"
move "Not now, return to home screen" "call_ended_view.not_now_button"
move "Open in the app" "app_selection_modal.open_in_app"
move "Not registered yet? <2>Create an account</2>" "unauthenticated_view_body"
move "Participants" "header_participants_label"
move "Passwords must match" "register.passwords_must_match"
move "Ready to join?" "app_selection_modal.text"
move "Recaptcha dismissed" "recaptcha_dismissed"
move "Recaptcha not loaded" "recaptcha_not_loaded"
move "Reconnect" "call_ended_view.reconnect_button"
move "Registering…" "register.registering"
move "Retry sending logs" "rageshake_button_error_caption"
move "Return to home screen" "return_home_button"
move "Select an option" "select_input_unset_button"
move "Select app" "app_selection_modal.title"
move "Send debug logs" "rageshake_send_logs"
move "Sending debug logs…" "rageshake_sending_logs"
move "Sending…" "rageshake_sending"
move "Share screen" "screenshare_button_label"
move "Sharing screen" "stop_screenshare_button_label"
move "Show connection stats" "settings.show_connection_stats_label"
move "Speaker" "settings.speaker_device_selection_label"
move "Start new call" "start_new_call"
move "Start video" "start_video_button_label"
move "Stop video" "stop_video_button_label"
move "Submit feedback" "settings.feedback_tab_h4"
move "Submitting…" "submitting"
move "Thanks, we received your feedback!" "settings.feedback_tab_thank_you"
move "Thanks!" "rageshake_sent"
move "This application has been opened in another tab." "application_opened_another_tab"
move "This call already exists, would you like to join?" "join_existing_call_modal.text"
move "Unmute microphone" "unmute_microphone_button_label"
move "Version: {{version}}" "version"
move "Waiting for other participants…" "waiting_for_participants"
move "Yes, join call" "join_existing_call_modal.join_button"
move "You" "video_tile.sfu_participant_local"
move "You were disconnected from the call" "call_ended_view.body"
move "Your feedback" "settings.feedback_tab_description_label"
move "Your web browser does not support media end-to-end encryption. Supported Browsers are Chrome, Safari, Firefox >=117" "browser_media_e2ee_unsupported"
move "By clicking \"Go\", you agree to our <2>End User Licensing Agreement (EULA)</2>" "unauthenticated_view_eula_caption"
move "By clicking \"Join call now\", you agree to our <2>End User Licensing Agreement (EULA)</2>" "room_auth_view_eula_caption"
move "This site is protected by ReCAPTCHA and the Google <2>Privacy Policy</2> and <6>Terms of Service</6> apply.<9></9>By clicking \"Register\", you agree to our <12>End User Licensing Agreement (EULA)</12>" "register.recaptcha_caption"
```
This commit is contained in:
Michael Telatynski
2023-11-20 13:00:43 +00:00
parent 71664f5f8e
commit cdbf4cac01
53 changed files with 1997 additions and 1623 deletions

View File

@@ -76,15 +76,15 @@ export const AppSelectionModal: FC<Props> = ({ roomId }) => {
}, [roomId, roomSharedKey]);
return (
<Modal className={styles.modal} title={t("Select app")} open={open}>
<Modal className={styles.modal} title={t("app_selection_modal.title")} open={open}>
<Text size="md" weight="semibold">
{t("Ready to join?")}
{t("app_selection_modal.text")}
</Text>
<Button kind="secondary" onClick={onBrowserClick}>
{t("Continue in browser")}
{t("app_selection_modal.continue_in_browser")}
</Button>
<Button as="a" href={appUrl} Icon={PopOutIcon}>
{t("Open in the app")}
{t("app_selection_modal.open_in_app")}
</Button>
</Modal>
);

View File

@@ -88,7 +88,7 @@ export const CallEndedView: FC<Props> = ({
const createAccountDialog = isPasswordlessUser && (
<div className={styles.callEndedContent}>
<Trans>
<Trans i18nKey="call_ended_view.create_account_prompt">
<p>Why not finish by setting up a password to keep your account?</p>
<p>
You'll be able to keep your name and set an avatar for use on future
@@ -101,14 +101,14 @@ export const CallEndedView: FC<Props> = ({
variant="default"
to="/register"
>
{t("Create account")}
{t("call_ended_view.create_account_button")}
</LinkButton>
</div>
);
const qualitySurveyDialog = (
<div className={styles.callEndedContent}>
<Trans>
<Trans i18nKey="call_ended_view.feedback_prompt">
<p>
We'd love to hear your feedback so we can improve your experience.
</p>
@@ -122,14 +122,14 @@ export const CallEndedView: FC<Props> = ({
className={feedbackStyle.feedback}
id="feedbackText"
name="feedbackText"
label={t("Your feedback")}
placeholder={t("Your feedback")}
label={t("settings.feedback_tab_description_label")}
placeholder={t("settings.feedback_tab_description_label")}
type="textarea"
/>
</FieldRow>{" "}
<FieldRow>
{submitDone ? (
<Trans>
<Trans i18nKey="call_ended_view.feedback_done">
<p>Thanks for your feedback!</p>
</Trans>
) : (
@@ -140,7 +140,7 @@ export const CallEndedView: FC<Props> = ({
variant="default"
data-testid="home_go"
>
{submitting ? t("Submitting") : ("action.submit")}
{submitting ? t("submitting") : t("action.submit")}
</Button>
)}
</FieldRow>
@@ -154,11 +154,13 @@ export const CallEndedView: FC<Props> = ({
<>
<main className={styles.main}>
<Headline className={styles.headline}>
<Trans>You were disconnected from the call</Trans>
<Trans i18nKey="call_ended_view.body">
You were disconnected from the call
</Trans>
</Headline>
<div className={styles.disconnectedButtons}>
<Button size="lg" variant="default" onClick={reconnect}>
{t("Reconnect")}
{t("call_ended_view.reconnect_button")}
</Button>
<div className={styles.rageshakeButton}>
<RageshakeButton description="***Call disconnected***" />
@@ -168,7 +170,7 @@ export const CallEndedView: FC<Props> = ({
{!confineToRoom && (
<Body className={styles.footer}>
<Link color="primary" to="/">
{t("Return to home screen")}
{t("return_home_button")}
</Link>
</Body>
)}
@@ -180,14 +182,14 @@ export const CallEndedView: FC<Props> = ({
<main className={styles.main}>
<Headline className={styles.headline}>
{surveySubmitted
? t("{{displayName}}, your call has ended.", {
? t("call_ended_view.headline", {
displayName,
})
: t("{{displayName}}, your call has ended.", {
: t("call_ended_view.headline", {
displayName,
}) +
"\n" +
t("How did it go?")}
t("call_ended_view.survey_prompt")}
</Headline>
{(!surveySubmitted || confineToRoom) &&
PosthogAnalytics.instance.isEnabled()
@@ -197,7 +199,7 @@ export const CallEndedView: FC<Props> = ({
{!confineToRoom && (
<Body className={styles.footer}>
<Link color="primary" to="/">
{t("Not now, return to home screen")}
{t("call_ended_view.not_now_button")}
</Link>
</Body>
)}

View File

@@ -63,12 +63,8 @@ export function GroupCallLoader({
if ((groupCallState.error as MatrixError).errcode === "M_NOT_FOUND") {
return (
<FullScreenView>
<Heading>{t("Call not found")}</Heading>
<Text>
{t(
"Calls are now end-to-end encrypted and need to be created from the home page. This helps make sure everyone's using the same encryption key.",
)}
</Text>
<Heading>{t("group_call_loader_failed_heading")}</Heading>
<Text>{t("group_call_loader_failed_text")}</Text>
{/* XXX: A 'create it for me' button would be the obvious UX here. Two screens already have
dupes of this flow, let's make a common component and put it here. */}
<Link href="/" onClick={onHomeClick}>

View File

@@ -303,11 +303,7 @@ export const GroupCallView: FC<Props> = ({
return (
<FullScreenView>
<Heading>Incompatible Browser</Heading>
<Text>
{t(
"Your web browser does not support media end-to-end encryption. Supported Browsers are Chrome, Safari, Firefox >=117",
)}
</Text>
<Text>{t("browser_media_e2ee_unsupported")}</Text>
<Link href="/" onClick={onHomeClick}>
{t("common.home")}
</Link>

View File

@@ -276,7 +276,7 @@ export const InCallView: FC<InCallViewProps> = ({
if (items.length === 0) {
return (
<div className={styles.centerMessage}>
<p>{t("Waiting for other participants")}</p>
<p>{t("waiting_for_participants")}</p>
</div>
);
}

View File

@@ -58,7 +58,7 @@ export const InviteModal: FC<Props> = ({ room, open, onDismiss }) => {
return (
<>
<Modal title={t("Invite to this call")} open={open} onDismiss={onDismiss}>
<Modal title={t("invite_modal.title")} open={open} onDismiss={onDismiss}>
<Text className={styles.url} size="sm" weight="semibold">
{url}
</Text>
@@ -77,7 +77,7 @@ export const InviteModal: FC<Props> = ({ room, open, onDismiss }) => {
autoDismiss={2000}
Icon={CheckIcon}
>
{t("Link copied to clipboard")}
{t("invite_modal.link_copied_toast")}
</Toast>
</>
);

View File

@@ -52,9 +52,9 @@ export const LayoutToggle: FC<Props> = ({ layout, setLayout, className }) => {
checked={layout === "spotlight"}
onChange={onChange}
/>
<Tooltip label={t("Spotlight")}>
<Tooltip label={t("layout_spotlight_label")}>
<label htmlFor={spotlightId}>
<SpotlightIcon aria-label={t("Spotlight")} />
<SpotlightIcon aria-label={t("layout_spotlight_label")} />
</label>
</Tooltip>
<input
@@ -65,9 +65,9 @@ export const LayoutToggle: FC<Props> = ({ layout, setLayout, className }) => {
checked={layout === "grid"}
onChange={onChange}
/>
<Tooltip label={t("Grid")}>
<Tooltip label={t("layout_grid_label")}>
<label htmlFor={gridId}>
<GridIcon aria-label={t("Grid")} />
<GridIcon aria-label={t("layout_grid_label")} />
</label>
</Tooltip>
</div>

View File

@@ -87,7 +87,7 @@ export const LobbyView: FC<Props> = ({
const recentsButtonInFooter = useMediaQuery("(max-height: 500px)");
const recentsButton = !confineToRoom && (
<Link className={styles.recents} href="#" onClick={onLeaveClick}>
{t("Back to recents")}
{t("lobby.leave_button")}
</Link>
);
@@ -120,7 +120,7 @@ export const LobbyView: FC<Props> = ({
onClick={onEnter}
data-testid="lobby_joinCall"
>
{t("Join call")}
{t("lobby.join_button")}
</Button>
</VideoPreview>
{!recentsButtonInFooter && recentsButton}

View File

@@ -44,12 +44,8 @@ export const RageshakeRequestModal: FC<Props> = ({
}, [sent, onDismiss]);
return (
<Modal title={t("Debug log request")} open={open} onDismiss={onDismiss}>
<Body>
{t(
"Another user on this call is having an issue. In order to better diagnose these issues we'd like to collect a debug log.",
)}
</Body>
<Modal title={t("rageshake_request_modal.title")} open={open} onDismiss={onDismiss}>
<Body>{t("rageshake_request_modal.body")}</Body>
<FieldRow>
<Button
onPress={(): void =>
@@ -61,7 +57,7 @@ export const RageshakeRequestModal: FC<Props> = ({
}
disabled={sending}
>
{sending ? t("Sending debug logs") : t("Send debug logs")}
{sending ? t("rageshake_sending_logs") : t("rageshake_send_logs")}
</Button>
</FieldRow>
{error && (

View File

@@ -70,7 +70,9 @@ export const RoomAuthView: FC = () => {
</Header>
<div className={styles.container}>
<main className={styles.main}>
<Headline className={styles.headline}>{t("Join call")}</Headline>
<Headline className={styles.headline}>
{t("lobby.join_button")}
</Headline>
<Form className={styles.form} onSubmit={onSubmit}>
<FieldRow>
<InputField
@@ -85,7 +87,7 @@ export const RoomAuthView: FC = () => {
/>
</FieldRow>
<Caption>
<Trans>
<Trans i18nKey="room_auth_view_eula_caption">
By clicking "Join call now", you agree to our{" "}
<Link href={Config.get().eula}>
End User Licensing Agreement (EULA)
@@ -103,13 +105,13 @@ export const RoomAuthView: FC = () => {
disabled={loading}
data-testid="joincall_joincall"
>
{loading ? t("common.loading") : t("Join call now")}
{loading ? t("common.loading") : t("room_auth_view_join_button")}
</Button>
<div id={recaptchaId} />
</Form>
</main>
<Body className={styles.footer}>
<Trans>
<Trans i18nKey="unauthenticated_view_body">
Not registered yet?{" "}
<Link
color="primary"