i18n: Translate who reacted tooltip message.

This commit is contained in:
Vishnu KS
2020-10-21 18:39:10 +05:30
committed by Tim Abbott
parent 067cd3a97a
commit 2ae70ff76c
2 changed files with 105 additions and 27 deletions

View File

@@ -59,9 +59,15 @@ const cali = {
user_id: 7, user_id: 7,
full_name: "Cali", full_name: "Cali",
}; };
const alexus = {
email: "alexus@example.com",
user_id: 8,
full_name: "Alexus",
};
people.add_active_user(alice); people.add_active_user(alice);
people.add_active_user(bob); people.add_active_user(bob);
people.add_active_user(cali); people.add_active_user(cali);
people.add_active_user(alexus);
const message = { const message = {
id: 1001, id: 1001,
@@ -69,6 +75,18 @@ const message = {
{emoji_name: "smile", user_id: 5, reaction_type: "unicode_emoji", emoji_code: "1f642"}, {emoji_name: "smile", user_id: 5, reaction_type: "unicode_emoji", emoji_code: "1f642"},
{emoji_name: "smile", user_id: 6, reaction_type: "unicode_emoji", emoji_code: "1f642"}, {emoji_name: "smile", user_id: 6, reaction_type: "unicode_emoji", emoji_code: "1f642"},
{emoji_name: "frown", user_id: 7, reaction_type: "unicode_emoji", emoji_code: "1f641"}, {emoji_name: "frown", user_id: 7, reaction_type: "unicode_emoji", emoji_code: "1f641"},
{emoji_name: "tada", user_id: 7, reaction_type: "unicode_emoji", emoji_code: "1f389"},
{emoji_name: "tada", user_id: 8, reaction_type: "unicode_emoji", emoji_code: "1f389"},
{emoji_name: "rocket", user_id: 5, reaction_type: "unicode_emoji", emoji_code: "1f680"},
{emoji_name: "rocket", user_id: 6, reaction_type: "unicode_emoji", emoji_code: "1f680"},
{emoji_name: "rocket", user_id: 7, reaction_type: "unicode_emoji", emoji_code: "1f680"},
{emoji_name: "wave", user_id: 6, reaction_type: "unicode_emoji", emoji_code: "1f44b"},
{emoji_name: "wave", user_id: 7, reaction_type: "unicode_emoji", emoji_code: "1f44b"},
{emoji_name: "wave", user_id: 8, reaction_type: "unicode_emoji", emoji_code: "1f44b"},
{ {
emoji_name: "inactive_realm_emoji", emoji_name: "inactive_realm_emoji",
user_id: 5, user_id: 5,
@@ -147,7 +165,7 @@ run_test("basics", () => {
local_id: "unicode_emoji,1f641", local_id: "unicode_emoji,1f641",
count: 1, count: 1,
user_ids: [7], user_ids: [7],
label: "Cali reacted with :frown:", label: "translated: Cali reacted with :frown:",
emoji_alt_code: false, emoji_alt_code: false,
class: "message_reaction", class: "message_reaction",
}, },
@@ -158,7 +176,7 @@ run_test("basics", () => {
local_id: "realm_emoji,992", local_id: "realm_emoji,992",
count: 1, count: 1,
user_ids: [5], user_ids: [5],
label: "You (click to remove) reacted with :inactive_realm_emoji:", label: "translated: You (click to remove) reacted with :inactive_realm_emoji:",
emoji_alt_code: false, emoji_alt_code: false,
is_realm_emoji: true, is_realm_emoji: true,
url: "TBD", url: "TBD",
@@ -171,10 +189,44 @@ run_test("basics", () => {
local_id: "unicode_emoji,1f642", local_id: "unicode_emoji,1f642",
count: 2, count: 2,
user_ids: [5, 6], user_ids: [5, 6],
label: "You (click to remove) and Bob van Roberts reacted with :smile:", label: "translated: You (click to remove) and Bob van Roberts reacted with :smile:",
emoji_alt_code: false, emoji_alt_code: false,
class: "message_reaction reacted", class: "message_reaction reacted",
}, },
{
emoji_name: "tada",
reaction_type: "unicode_emoji",
emoji_code: "1f389",
local_id: "unicode_emoji,1f389",
count: 2,
user_ids: [7, 8],
label: "translated: Cali and Alexus reacted with :tada:",
emoji_alt_code: false,
class: "message_reaction",
},
{
emoji_name: "rocket",
reaction_type: "unicode_emoji",
emoji_code: "1f680",
local_id: "unicode_emoji,1f680",
count: 3,
user_ids: [5, 6, 7],
label:
"translated: You (click to remove), Bob van Roberts and Cali reacted with :rocket:",
emoji_alt_code: false,
class: "message_reaction reacted",
},
{
emoji_name: "wave",
reaction_type: "unicode_emoji",
emoji_code: "1f44b",
local_id: "unicode_emoji,1f44b",
count: 3,
user_ids: [6, 7, 8],
label: "translated: Bob van Roberts, Cali and Alexus reacted with :wave:",
emoji_alt_code: false,
class: "message_reaction",
},
]; ];
assert.deepEqual(result, expected_result); assert.deepEqual(result, expected_result);
}); });
@@ -303,7 +355,7 @@ run_test("emoji_reaction_title", () => {
assert.equal( assert.equal(
reactions.get_reaction_title_data(message_id, local_id), reactions.get_reaction_title_data(message_id, local_id),
"You (click to remove) and Bob van Roberts reacted with :smile:", "translated: You (click to remove) and Bob van Roberts reacted with :smile:",
); );
}); });
@@ -336,7 +388,7 @@ run_test("add_and_remove_reaction", () => {
assert.equal(data.class, "message_reaction reacted"); assert.equal(data.class, "message_reaction reacted");
assert(!data.is_realm_emoji); assert(!data.is_realm_emoji);
assert.equal(data.message_id, 1001); assert.equal(data.message_id, 1001);
assert.equal(data.label, "You (click to remove) reacted with :8ball:"); assert.equal(data.label, "translated: You (click to remove) reacted with :8ball:");
return "<new reaction html>"; return "<new reaction html>";
}); });
@@ -354,7 +406,7 @@ run_test("add_and_remove_reaction", () => {
const local_id = "unicode_emoji,1f3b1"; const local_id = "unicode_emoji,1f3b1";
assert.equal( assert.equal(
reactions.get_reaction_title_data(alice_event.message_id, local_id), reactions.get_reaction_title_data(alice_event.message_id, local_id),
"You (click to remove) reacted with :8ball:", "translated: You (click to remove) reacted with :8ball:",
); );
// Running add_reaction again should not result in any changes // Running add_reaction again should not result in any changes
@@ -390,7 +442,7 @@ run_test("add_and_remove_reaction", () => {
assert.equal(count_element.text(), "1"); assert.equal(count_element.text(), "1");
let current_emojis = reactions.get_emojis_used_by_user_for_message_id(1001); let current_emojis = reactions.get_emojis_used_by_user_for_message_id(1001);
assert.deepEqual(current_emojis, ["smile", "inactive_realm_emoji", "8ball"]); assert.deepEqual(current_emojis, ["smile", "rocket", "inactive_realm_emoji", "8ball"]);
// Next, remove Alice's reaction, which exercises removing the // Next, remove Alice's reaction, which exercises removing the
// emoji icon. // emoji icon.
@@ -408,7 +460,7 @@ run_test("add_and_remove_reaction", () => {
assert(!removed); assert(!removed);
current_emojis = reactions.get_emojis_used_by_user_for_message_id(1001); current_emojis = reactions.get_emojis_used_by_user_for_message_id(1001);
assert.deepEqual(current_emojis, ["smile", "inactive_realm_emoji"]); assert.deepEqual(current_emojis, ["smile", "rocket", "inactive_realm_emoji"]);
// Now add Cali's realm_emoji reaction. // Now add Cali's realm_emoji reaction.
const cali_event = { const cali_event = {
@@ -671,7 +723,15 @@ run_test("remove last user", () => {
); );
} }
assert_names(["smile", "frown", "inactive_realm_emoji", "realm_emoji"]); assert_names([
"smile",
"frown",
"tada",
"rocket",
"wave",
"inactive_realm_emoji",
"realm_emoji",
]);
const event = { const event = {
reaction_type: "unicode_emoji", reaction_type: "unicode_emoji",
@@ -682,7 +742,7 @@ run_test("remove last user", () => {
}; };
reactions.remove_reaction(event); reactions.remove_reaction(event);
assert_names(["smile", "inactive_realm_emoji", "realm_emoji"]); assert_names(["smile", "tada", "rocket", "wave", "inactive_realm_emoji", "realm_emoji"]);
}); });
run_test("local_reaction_id", () => { run_test("local_reaction_id", () => {

View File

@@ -142,26 +142,44 @@ exports.process_reaction_click = function (message_id, local_id) {
update_ui_and_send_reaction_ajax(message_id, reaction_info); update_ui_and_send_reaction_ajax(message_id, reaction_info);
}; };
function full_name(user_id) {
if (user_id === page_params.user_id) {
return "You (click to remove)";
}
return people.get_by_user_id(user_id).full_name;
}
function generate_title(emoji_name, user_ids) { function generate_title(emoji_name, user_ids) {
const i = user_ids.indexOf(page_params.user_id); const usernames = user_ids
if (i !== -1) { .filter((user_id) => user_id !== page_params.user_id)
// Move current user's id to start of list .map((user_id) => people.get_by_user_id(user_id).full_name);
user_ids.splice(i, 1); const current_user_reacted = user_ids.length !== usernames.length;
user_ids.unshift(page_params.user_id);
const context = {
emoji_name: ":" + emoji_name + ":",
};
if (user_ids.length === 1) {
if (current_user_reacted) {
return i18n.t("You (click to remove) reacted with __emoji_name__", context);
} }
const reacted_with_string = " reacted with :" + emoji_name + ":"; context.username = usernames[0];
const user_names = user_ids.map(full_name); return i18n.t("__username__ reacted with __emoji_name__", context);
if (user_names.length === 1) {
return user_names[0] + reacted_with_string;
} }
return _.initial(user_names).join(", ") + " and " + _.last(user_names) + reacted_with_string;
if (user_ids.length === 2 && current_user_reacted) {
context.other_username = usernames[0];
return i18n.t(
"You (click to remove) and __other_username__ reacted with __emoji_name__",
context,
);
}
context.comma_separated_usernames = _.initial(usernames).join(", ");
context.last_username = _.last(usernames);
if (current_user_reacted) {
return i18n.t(
"You (click to remove), __comma_separated_usernames__ and __last_username__ reacted with __emoji_name__",
context,
);
}
return i18n.t(
"__comma_separated_usernames__ and __last_username__ reacted with __emoji_name__",
context,
);
} }
// Add a tooltip showing who reacted to a message. // Add a tooltip showing who reacted to a message.