mirror of
https://github.com/zulip/zulip.git
synced 2025-11-07 23:43:43 +00:00
compose_ui: Use Intl.ListFormat rather than .join(", ").
This commit changes .join(",") to Int1.ListFormat.
This produces more accurate translations.
Refactor compose_ui.test to update the testcase for Alice and Bob.
The previous test case output of "Alice,Bob" modify to "Alice and Bob"
to align with the behavior of Int1.ListFormat,
which joins lists using ',' & 'and'.
This commit is contained in:
@@ -13,6 +13,7 @@ import * as people from "./people";
|
|||||||
import * as popover_menus from "./popover_menus";
|
import * as popover_menus from "./popover_menus";
|
||||||
import * as rtl from "./rtl";
|
import * as rtl from "./rtl";
|
||||||
import * as stream_data from "./stream_data";
|
import * as stream_data from "./stream_data";
|
||||||
|
import {user_settings} from "./user_settings";
|
||||||
import * as user_status from "./user_status";
|
import * as user_status from "./user_status";
|
||||||
|
|
||||||
export let compose_spinner_visible = false;
|
export let compose_spinner_visible = false;
|
||||||
@@ -250,15 +251,15 @@ export function compute_placeholder_text(opts) {
|
|||||||
// For direct messages
|
// For direct messages
|
||||||
if (opts.private_message_recipient) {
|
if (opts.private_message_recipient) {
|
||||||
const recipient_list = opts.private_message_recipient.split(",");
|
const recipient_list = opts.private_message_recipient.split(",");
|
||||||
const recipient_names = recipient_list
|
const recipient_names = new Intl.ListFormat(user_settings.default_language).format(
|
||||||
.map((recipient) => {
|
recipient_list.map((recipient) => {
|
||||||
const user = people.get_by_email(recipient);
|
const user = people.get_by_email(recipient);
|
||||||
if (people.should_add_guest_user_indicator(user.user_id)) {
|
if (people.should_add_guest_user_indicator(user.user_id)) {
|
||||||
return $t({defaultMessage: "{name} (guest)"}, {name: user.full_name});
|
return $t({defaultMessage: "{name} (guest)"}, {name: user.full_name});
|
||||||
}
|
}
|
||||||
return user.full_name;
|
return user.full_name;
|
||||||
})
|
}),
|
||||||
.join(", ");
|
);
|
||||||
|
|
||||||
if (recipient_list.length === 1) {
|
if (recipient_list.length === 1) {
|
||||||
// If it's a single user, display status text if available
|
// If it's a single user, display status text if available
|
||||||
|
|||||||
@@ -247,20 +247,20 @@ run_test("compute_placeholder_text", () => {
|
|||||||
opts.private_message_recipient = "alice@zulip.com,bob@zulip.com";
|
opts.private_message_recipient = "alice@zulip.com,bob@zulip.com";
|
||||||
assert.equal(
|
assert.equal(
|
||||||
compose_ui.compute_placeholder_text(opts),
|
compose_ui.compute_placeholder_text(opts),
|
||||||
$t({defaultMessage: "Message Alice, Bob"}),
|
$t({defaultMessage: "Message Alice and Bob"}),
|
||||||
);
|
);
|
||||||
|
|
||||||
alice.is_guest = true;
|
alice.is_guest = true;
|
||||||
page_params.realm_enable_guest_user_indicator = true;
|
page_params.realm_enable_guest_user_indicator = true;
|
||||||
assert.equal(
|
assert.equal(
|
||||||
compose_ui.compute_placeholder_text(opts),
|
compose_ui.compute_placeholder_text(opts),
|
||||||
$t({defaultMessage: "Message translated: Alice (guest), Bob"}),
|
$t({defaultMessage: "Message translated: Alice (guest) and Bob"}),
|
||||||
);
|
);
|
||||||
|
|
||||||
page_params.realm_enable_guest_user_indicator = false;
|
page_params.realm_enable_guest_user_indicator = false;
|
||||||
assert.equal(
|
assert.equal(
|
||||||
compose_ui.compute_placeholder_text(opts),
|
compose_ui.compute_placeholder_text(opts),
|
||||||
$t({defaultMessage: "Message Alice, Bob"}),
|
$t({defaultMessage: "Message Alice and Bob"}),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user