Merge remote-tracking branch 'weblate/main' into main

This commit is contained in:
Nathan Freitas 2021-07-22 11:13:42 -04:00
commit 9ea53f4948
No known key found for this signature in database
GPG key ID: A801183E69B37AA9
17 changed files with 861 additions and 270 deletions

View file

@ -1,6 +1,6 @@
{
"name": "keanuapp-weblite",
"version": "0.1.13",
"version": "0.1.14",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",

View file

@ -1,6 +1,6 @@
{
"name": "keanuapp-weblite",
"version": "0.1.12",
"version": "0.1.13",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",

View file

@ -2,6 +2,28 @@
<v-app>
<v-main>
<router-view />
<!-- Loading indicator -->
<v-container
fluid
fill-height
style="
position: absolute;
z-index: 20;
background-color: rgba(255, 255, 255, 1);
"
v-if="loading"
>
<v-row align="center" justify="center">
<v-col class="text-center">
<v-progress-circular
indeterminate
color="primary"
></v-progress-circular>
<div>{{$t('menu.loading', {appName: appName})}}</div>
</v-col>
</v-row>
</v-container>
</v-main>
</v-app>
</template>
@ -11,6 +33,11 @@ import config from "./assets/config";
export default {
name: "App",
data() {
return {
loading: true,
};
},
beforeMount() {
// Set language
this.$i18n.locale = this.$store.state.language || "en";
@ -32,13 +59,21 @@ export default {
})
.catch((error) => {
console.log("Error creating client", error);
})
.finally(() => {
this.loading = false;
});
} else {
this.loading = false;
}
},
computed: {
currentUser() {
return this.$store.state.auth.user;
},
appName() {
return config.appName;
},
title() {
var title = this.$t(config.appName);
if (this.$matrix.notificationCount > 0) {

View file

@ -215,7 +215,7 @@ $admin-fg: white;
}
position: relative;
.bubble {
background-color: #eeeeee;
background-color: #ededed;
border-radius: 0px 10px 10px 10px;
[dir="rtl"] & {
border-radius: 10px 0px 10px 0px;
@ -223,7 +223,7 @@ $admin-fg: white;
padding: 8px;
border-width: 1px !important;
border-style: solid !important;
border-color: #eeeeee !important;
border-color: #ededed !important;
display: inline-block;
position: relative;
max-width: 70%;
@ -554,19 +554,19 @@ $admin-fg: white;
.quick-reaction-container {
display: inline-block;
position: absolute;
top: -12px;
left: 50px;
position: relative;
vertical-align: bottom;
transform: translateX(-20px) translateX(-100%);
top: 18px;
z-index: 2;
background-color: #000000;
border: 2px solid white;
background-color: #f7f7f7;
border: 1px solid rgba(white, 0.9);
border-radius: 13px;
height: 26px;
width: max-content;
padding: 0px 6px;
.messageOut & {
left: unset;
right: 50px;
transform: translateX(20px) translateX(100%);
}
.quick-reaction {
position: relative;
@ -575,7 +575,7 @@ $admin-fg: white;
padding: 1px;
font-size: 10px;
&:hover {
border: 1px solid #888888;
//border: 1px solid #888888;
background-color: #e2e2e2;
}
.quick-reaction-count {
@ -584,7 +584,7 @@ $admin-fg: white;
}
}
.sent .quick-reaction-count {
color: white;
color: black;
font-weight: 700;
// background-color: palegreen;
}
@ -688,7 +688,7 @@ $admin-fg: white;
}
.room-info {
background-color: #e0e0e0;
background-color: #e8e8e8;
height: 100%;
.chat-header {
background-color: transparent;

View file

@ -78,7 +78,8 @@ body { position:absolute; top:0; bottom:0; right:0; left:0; }
color: white;
border: none;
border-radius: $chat-standard-padding / 2;
height: $chat-standard-padding;
height: $chat-standard-padding !important;
min-height: $chat-standard-padding !important;
margin-top: $chat-standard-padding-xs;
margin-bottom: $chat-standard-padding-xs;
}

View file

@ -69,7 +69,7 @@
"download": "ཕབ་ལེན།",
"delete": "སུབས།",
"edit": "ཕྱོགས་སྒྲིག",
"ok": "Ok",
"ok": "OK",
"send": "ཐོངས།",
"back": "ཕྱིར་ལོག",
"cancel": "ཕྱིར་འཐེན།",
@ -184,7 +184,7 @@
"create_account": "ཁ་བྱང་ཞིག་བཟོས།",
"text_invite": "ཚོགས་པ་འདིར་ཟྭ་བརྒྱབ་འདུག དམིགས་བསལ་གྱི་ཆོག་མཆན་མེད་པར། ཁྱེད་རང་བསྐྱར་དུ་འཛུལ་མི་ཐུབ།",
"title_invite": "ཁྱེད་རང་ཕྱིར་ཐོན་རྒྱུ་གཏན་འཁེལ་བ་ཡིན་ནམ།",
"text_public_lastroom": "ཁྱེད་རང་ཚོགས་པ་འདིའི་ནང་དུ་བསྐྱར་དུ་འཛུལ་འདོད་ཚེ། ངོ་བོ་གསར་བ་ཞིག་གི་མིང་ཐོག་ནས་འཛུལ་ཆོག {user}་ཉར་བར། {action}",
"text_public_lastroom": "ཁྱེད་རང་ཚོགས་པ་འདིའི་ནང་དུ་བསྐྱར་དུ་འཛུལ་འདོད་ཚེ། ངོ་བོ་གསར་བ་ཞིག་གི་མིང་ཐོག་ནས་འཛུལ་ཆོག {user}་ཉར་བར། {action}.",
"text_public": "གལ་ཏེ་ཁྱེད་ཀྱིས་འབྲེལ་ཐག་དེ་ཧ་གོ་ཚེ། ག་དུས་ཡིན་ཡང་། ཁ་བརྡ་ཁང་དུ་འཛུལ་ཆོག",
"title_public": "{user} ག་ལེེར་ཕེབས།"
},

View file

@ -1,217 +1,219 @@
{
"language_display_name": "English",
"Keanu Weblite": "Keanu Weblite",
"menu": {
"start_private_chat": "Private chat with this user",
"reply": "Reply",
"edit": "Edit",
"delete": "Delete",
"download": "Download",
"ok": "Ok",
"cancel": "Cancel",
"send": "Send",
"back": "BACK",
"login": "Login",
"logout": "Logout",
"new_room": "New Room",
"undo": "Undo"
},
"message": {
"you": "You",
"user_created_room": "{user} created the room",
"user_aliased_room": "{user} made the room alias {alias}",
"user_changed_display_name": "{user} changed display name to {displayName}",
"user_changed_avatar": "{user} changed the avatar",
"user_changed_room_avatar": "{user} changed the room avatar",
"user_encrypted_room": "{user} made the room encrypted",
"user_was_invited": "{user} was invited to the chat...",
"user_joined": "{user} joined the chat",
"user_left": "{user} left the chat",
"user_said": "{user} said:",
"file_prefix": "File: ",
"edited": "(edited)",
"download_progress": "{percentage}% downloaded",
"upload_progress": "Uploaded {count}",
"upload_progress_with_total": "Uploaded {count} of {total}",
"user_changed_room_history": "{user} made room history {type}",
"room_history_world_readable": "readable by anyone",
"room_history_shared": "readable to all members in the room",
"room_history_invited": "readable to members from when they were invited",
"room_history_joined": "readable to members from when they joined",
"user_changed_join_rules": "{user} made the room {type}",
"room_joinrule_invite": "invite only",
"room_joinrule_public": "public",
"user_changed_room_name": "{user} changed room name to {name}",
"user_changed_room_topic": "{user} changed room topic to {topic}",
"unread_messages": "Unread messages",
"replying_to_event": "REPLYING TO EVENT: {message}",
"your_message": "Your message...",
"scale_image": "Scale image",
"user_is_typing": "{user} is typing",
"users_are_typing": "{count} members are typing",
"room_powerlevel_change": "{user} changed powerlevel of {changes}",
"user_powerlevel_change_from_to": "{user} from {powerOld} to {powerNew}",
"user_changed_guest_access_closed": "{user} disallowed guests to join the room",
"user_changed_guest_access_open": "{user} allowed guests to join the room"
},
"room": {
"members": "no members | 1 member | {count} members",
"leave": "Leave",
"purge_set_room_state": "Setting room state",
"purge_redacting_events": "Redacting events",
"purge_removing_members": "Removing members",
"purge_failed": "Failed to purge room!",
"room_list_invites": "Invites",
"room_list_rooms": "Rooms"
},
"room_welcome": {
"info": "Welcome! Here are a few things to know about your room:",
"encrypted": "Messages are end-to-end encrypted.",
"room_history_is": "Room history is {type}.",
"room_history_joined": "People can only see the messages sent after they join.",
"join_public": "Anyone can join by opening this link: {link}.",
"join_invite": "Only people you invite can join.",
"info_permissions": "You can change join permissions at any time in the room settings.",
"got_it": "Got it"
},
"new_room": {
"new_room": "New Room",
"create": "Create",
"next": "Next",
"name_room": "Name group",
"room_topic": "Add a description if you like",
"join_permissions": "Join permissions",
"set_join_permissions": "Set Join Permissions",
"join_permissions_info": "These permissions determine how people can join the group and how easily others can be invited. They can be changed anytime.",
"get_link": "Get link",
"add_people": "Add people",
"link_copied": "Link copied!",
"public_info": "Anyone with a link",
"public_description": "Get a link to share",
"invite_info": "Only people added",
"invite_description": "Choose from a list or search by account ID",
"status_creating": "Creating room",
"status_avatar_total": "Uploading avatar: {count} of {total}",
"status_avatar": "Uploading avatar: {count}"
},
"device_list": {
"title": "DEVICES",
"blocked": "Blocked",
"verified": "Verified",
"not_verified": "Not verified"
},
"login": {
"title": "Login",
"username": "Username",
"password": "Password",
"username_required": "Username is required",
"password_required": "Password is required",
"login": "Login"
},
"profile": {
"title": "My Profile",
"temporary_identity": "This identity is temporary. Set a password to use it again",
"set_password": "Set password",
"change_name": "Change name",
"change_password": "Change password",
"select_language": "Language",
"password_old": "Old password",
"password_new": "New password",
"password_repeat": "Repeat new password",
"display_name": "Display name"
},
"profile_info_popup": {
"you_are": "You are",
"identity": "{displayName}",
"identity_temporary": "{displayName}",
"edit_profile": "Edit profile",
"logout": "Logout",
"want_more": "Want more?",
"powered_by": "This room is powered by {product}. Learn more at {productLink} or go ahead and create another room!",
"new_room": "+ New room"
},
"join": {
"title": "Welcome to {roomName}",
"user_name_label": "User name",
"shared_computer": "Using a shared computer",
"joining_as": "You are joining as:",
"join": "Join room",
"join_guest": "Join as guest",
"status_logging_in": "Logging in...",
"status_joining": "Joining room...",
"join_failed": "Failed to join room."
},
"invite": {
"title": "Add Friends",
"done": "Done",
"send_invites_to": "Send invites to",
"status_inviting": "Inviting friend {index} of {count}",
"status_error": "Failed to invite one or or more friends!"
},
"leave": {
"title_public": "Goodbye, {user}",
"text_public": "You can always join this room again if you know the link.",
"text_public_lastroom": "If you want to join this group again, you can join under a new identity. To keep {user}, {action}.",
"title_invite": "Are you sure you want to leave?",
"text_invite": "This group is locked. You cannot rejoin without a special permission.",
"create_account": "create an account",
"go_back": "Go back",
"leave": "Leave"
},
"purge_room": {
"title": "Delete room?",
"info": "All members and messages will be removed. This action cannot be undone.",
"button": "Delete",
"n_seconds": "{seconds} seconds",
"self_destruct": "Room will self destruct in seconds.",
"deleting": "Deleting room:",
"notified": "We've notified members.",
"room_deletion_notice": "Time to say goodbye! This room has been deleted by {user}. It will self destruct in seconds."
},
"goodbye": {
"room_deleted": "Room deleted.",
"close_tab": "Close browser tab",
"view_other_rooms": "View other rooms"
},
"room_info": {
"title": "Room Details",
"created_by": "Created by {user}",
"permissions": "Join Permissions",
"join_invite": "Only People Added",
"join_public": "Anyone with a link",
"copy_link": "Copy invite link",
"link_copied": "Link copied!",
"purge": "Delete room",
"members": "Members",
"user": "{user}",
"user_you": "{user} (you)",
"hide_all": "Hide",
"show_all": "Show all >",
"leave_room": "Leave",
"version_info": "Powered by Guardian Project. Version: {version}"
},
"room_info_sheet": {
"this_room": "This group",
"view_details": "View details"
},
"voice_recorder": {
"swipe_to_cancel": "Swipe to cancel",
"release_to_cancel": "Release to cancel",
"failed_to_record": "Failed to record audio",
"not_supported_title": "Not supported",
"not_supported_text": "Unfortunately, this browser does not support audio recording."
},
"power_level": {
"admin": "administrator",
"moderator": "moderator",
"default": "default",
"custom": "custom ({level})",
"restricted": "restricted"
},
"fallbacks": {
"audio_file": "Audio file",
"video_file": "Video file",
"original_text": "<original text>",
"download_name": "Download"
}
}
"language_display_name": "English",
"Keanu Weblite": "Keanu Weblite",
"menu": {
"start_private_chat": "Private chat with this user",
"reply": "Reply",
"edit": "Edit",
"delete": "Delete",
"download": "Download",
"ok": "OK",
"cancel": "Cancel",
"send": "Send",
"back": "BACK",
"login": "Log in",
"logout": "Log out",
"new_room": "New Room",
"undo": "Undo",
"loading": "Loading {appName}"
},
"message": {
"you": "You",
"user_created_room": "{user} created the room",
"user_aliased_room": "{user} made the room alias {alias}",
"user_changed_display_name": "{user} changed display name to {displayName}",
"user_changed_avatar": "{user} changed the avatar",
"user_changed_room_avatar": "{user} changed the room avatar",
"user_encrypted_room": "{user} made the room encrypted",
"user_was_invited": "{user} was invited to the chat…",
"user_joined": "{user} joined the chat",
"user_left": "{user} left the chat",
"user_said": "{user} said:",
"file_prefix": "File: ",
"edited": "(edited)",
"download_progress": "{percentage}% downloaded",
"upload_progress": "Uploaded {count}",
"upload_progress_with_total": "Uploaded {count} of {total}",
"user_changed_room_history": "{user} made room history {type}",
"room_history_world_readable": "readable by anyone",
"room_history_shared": "readable to all members in the room",
"room_history_invited": "readable to members from when they were invited",
"room_history_joined": "readable to members from when they joined",
"user_changed_join_rules": "{user} made the room {type}",
"room_joinrule_invite": "invite only",
"room_joinrule_public": "public",
"user_changed_room_name": "{user} changed room name to {name}",
"user_changed_room_topic": "{user} changed room topic to {topic}",
"unread_messages": "Unread messages",
"replying_to_event": "REPLYING TO EVENT: {message}",
"your_message": "Your message…",
"scale_image": "Scale image",
"user_is_typing": "{user} is typing",
"users_are_typing": "{count} members are typing",
"room_powerlevel_change": "{user} changed powerlevel of {changes}",
"user_powerlevel_change_from_to": "{user} from {powerOld} to {powerNew}",
"user_changed_guest_access_closed": "{user} disallowed guests to join the room",
"user_changed_guest_access_open": "{user} allowed guests to join the room"
},
"room": {
"members": "no members | 1 member | {count} members",
"leave": "Leave",
"purge_set_room_state": "Setting room state",
"purge_redacting_events": "Redacting events",
"purge_removing_members": "Removing members",
"purge_failed": "Failed to purge room!",
"room_list_invites": "Invites",
"room_list_rooms": "Rooms"
},
"room_welcome": {
"info": "Welcome! Here are a few things to know about your room:",
"encrypted": "Messages are end-to-end encrypted.",
"room_history_is": "Room history is {type}.",
"room_history_joined": "People can only see the messages sent after they join.",
"join_public": "Anyone can join by opening this link: {link}.",
"join_invite": "Only people you invite can join.",
"info_permissions": "You can change join permissions at any time in the room settings.",
"got_it": "Got it"
},
"new_room": {
"new_room": "New Room",
"create": "Create",
"next": "Next",
"name_room": "Name group",
"room_topic": "Add a description if you like",
"join_permissions": "Join permissions",
"set_join_permissions": "Set Join Permissions",
"join_permissions_info": "These permissions determine how people can join the group and how easily others can be invited. They can be changed anytime.",
"get_link": "Get link",
"add_people": "Add people",
"link_copied": "Link copied!",
"public_info": "Anyone with a link",
"public_description": "Get a link to share",
"invite_info": "Only people added",
"invite_description": "Choose from a list or search by account ID",
"status_creating": "Creating room",
"status_avatar_total": "Uploading avatar: {count} of {total}",
"status_avatar": "Uploading avatar: {count}"
},
"device_list": {
"title": "Devices",
"blocked": "Blocked",
"verified": "Verified",
"not_verified": "Not verified"
},
"login": {
"title": "Login",
"username": "Username",
"password": "Password",
"username_required": "Username is required",
"password_required": "Password is required",
"login": "Login"
},
"profile": {
"title": "My Profile",
"temporary_identity": "This identity is temporary. Set a password to use it again",
"set_password": "Set password",
"change_name": "Change name",
"change_password": "Change password",
"select_language": "Language",
"password_old": "Old password",
"password_new": "New password",
"password_repeat": "Repeat new password",
"display_name": "Display name"
},
"profile_info_popup": {
"you_are": "You are",
"identity": "{displayName}",
"identity_temporary": "{displayName}",
"edit_profile": "Edit profile",
"logout": "Log out",
"want_more": "Want more?",
"powered_by": "This room is powered by {product}. Learn more at {productLink} or go ahead and create another room!",
"new_room": "+ New room"
},
"join": {
"title": "Welcome to {roomName}",
"user_name_label": "User name",
"shared_computer": "Using a shared computer",
"joining_as": "You are joining as:",
"join": "Join room",
"join_guest": "Join as guest",
"status_logging_in": "Logging in…",
"status_joining": "Joining room…",
"join_failed": "Failed to join room."
},
"invite": {
"title": "Add Friends",
"done": "Done",
"send_invites_to": "Send invites to",
"status_inviting": "Inviting friend {index} of {count}",
"status_error": "Failed to invite one or or more friends!"
},
"leave": {
"title_public": "Goodbye, {user}",
"text_public": "You can always join this room again if you know the link.",
"text_public_lastroom": "If you want to join this group again, you can join under a new identity. To keep {user}, {action}.",
"title_invite": "Are you sure you want to leave?",
"text_invite": "This group is locked. You cannot rejoin without a special permission.",
"create_account": "create an account",
"go_back": "Go back",
"leave": "Leave"
},
"purge_room": {
"title": "Delete room?",
"info": "All members and messages will be removed. This action cannot be undone.",
"button": "Delete",
"n_seconds": "{seconds} seconds",
"self_destruct": "Room will self destruct in seconds.",
"deleting": "Deleting room:",
"notified": "We've notified members.",
"room_deletion_notice": "Time to say goodbye! This room has been deleted by {user}. It will self destruct in seconds."
},
"goodbye": {
"room_deleted": "Room deleted.",
"close_tab": "Close browser tab",
"view_other_rooms": "View other rooms"
},
"room_info": {
"title": "Room Details",
"created_by": "Created by {user}",
"permissions": "Join Permissions",
"join_invite": "Only People Added",
"join_public": "Anyone with a link",
"copy_link": "Copy invite link",
"link_copied": "Link copied!",
"purge": "Delete room",
"members": "Members",
"user": "{user}",
"user_you": "{user} (you)",
"hide_all": "Hide",
"show_all": "Show all >",
"leave_room": "Leave",
"version_info": "Powered by Guardian Project. Version: {version}",
"scan_code": "Scan to join the room"
},
"room_info_sheet": {
"this_room": "This group",
"view_details": "View details"
},
"voice_recorder": {
"swipe_to_cancel": "Swipe to cancel",
"release_to_cancel": "Release to cancel",
"failed_to_record": "Failed to record audio",
"not_supported_title": "Not supported",
"not_supported_text": "Unfortunately, this browser does not support audio recording."
},
"power_level": {
"admin": "administrator",
"moderator": "moderator",
"default": "default",
"custom": "custom ({level})",
"restricted": "restricted"
},
"fallbacks": {
"audio_file": "Audio file",
"video_file": "Video file",
"original_text": "<original text>",
"download_name": "Download"
}
}

View file

@ -0,0 +1,150 @@
{
"message": {
"user_changed_guest_access_open": "{user} tillot gjester å ta del i rommet",
"user_powerlevel_change_from_to": "{user} fra {powerOld} til {powerNew}",
"room_powerlevel_change": "{user} endret maktnivå for {changes}",
"room_history_world_readable": "lesbart for hvem som helst",
"room_history_shared": "lesbart for alle rommets medlemmer",
"user_left": "{user} forlot sludringen",
"user_joined": "{user} tok del i sludringen",
"user_was_invited": "{user} ble invitert til sludringen …",
"user_changed_room_avatar": "{user} endret romavataren",
"user_encrypted_room": "{user} gjorde rommet kryptert",
"user_changed_avatar": "{user} endret avataren",
"user_changed_display_name": "{user} endret visningsnavn til {displayName}",
"user_aliased_room": "{user} lagde et rom ved navn {alias}",
"your_message": "Din melding …",
"user_changed_room_topic": "{user} endret rom-emne til {topic}",
"room_joinrule_public": "offentlig",
"room_joinrule_invite": "kun ved invitasjon",
"upload_progress_with_total": "Opplastet {count} av {total}",
"upload_progress": "Opplastet {count}",
"download_progress": "{percentage}% nedlastet",
"edited": "(redigert)",
"file_prefix": "Fil: ",
"user_said": "{user} sa:",
"user_created_room": "{user} opprettet rommet",
"you": "Deg"
},
"device_list": {
"title": "Enheter",
"not_verified": "Ikke bekreftet",
"verified": "Bekreftet",
"blocked": "Blokkert"
},
"fallbacks": {
"original_text": "<opprinnelig tekst>",
"video_file": "Videofil",
"audio_file": "Lydfil"
},
"power_level": {
"restricted": "begrenset",
"default": "forvalg",
"moderator": "moderator",
"admin": "administrator"
},
"voice_recorder": {
"release_to_cancel": "Slipp for å avbryte"
},
"room_info_sheet": {
"this_room": "Denne gruppen",
"view_details": "Vis detaljer"
},
"room_info": {
"hide_all": "Skjul",
"members": "Medlemmer",
"purge": "Slett rom",
"link_copied": "Lenke kopiert.",
"copy_link": "Kopier invitasjonslenke",
"created_by": "Opprettet av {user}",
"title": "Romdetaljer"
},
"goodbye": {
"view_other_rooms": "Vis andre rom",
"room_deleted": "Rom slettet."
},
"join": {
"join": "Ta del i rom",
"status_joining": "Tar del i rom…",
"status_logging_in": "Logger inn …",
"join_guest": "Ta del som gjest",
"title": "Velkommen til {roomName}"
},
"profile_info_popup": {
"identity_temporary": "{displayName}",
"identity": "{displayName}",
"logout": "Logg ut",
"edit_profile": "Rediger profil",
"you_are": "Du er"
},
"profile": {
"password_new": "Nytt passord",
"password_old": "Gammelt passord",
"select_language": "Språk",
"change_password": "Endre passord",
"change_name": "Endre navn",
"set_password": "Sett passord",
"title": "Min profil",
"display_name": "Visningsnavn",
"password_repeat": "Gjenta nytt passord"
},
"login": {
"password_required": "Passord kreves",
"username_required": "Brukernavn kreves",
"password": "Passord",
"username": "Brukernavn"
},
"new_room": {
"add_people": "Legg til folk",
"link_copied": "Lenke kopiert.",
"next": "Neste",
"create": "Opprett",
"new_room": "Nytt rom"
},
"room_welcome": {
"room_history_is": "Romhistorikken er {type}.",
"encrypted": "Meldinger er ende-til-ende -kryptert.",
"got_it": "Skjønner",
"join_invite": "Kun folk du inviterer kan ta del."
},
"room": {
"room_list_rooms": "Rom",
"room_list_invites": "Invitasjoner",
"purge_set_room_state": "Setter romtilstand",
"leave": "Forlat"
},
"purge_room": {
"n_seconds": "{seconds} sekunder",
"button": "Slett",
"title": "Slett rom?"
},
"leave": {
"go_back": "Gå tilbake",
"create_account": "opprett en konto",
"title_public": "Adjø, {user}"
},
"invite": {
"status_inviting": "Inviterer venn {index} av {count}",
"send_invites_to": "Send invitasjoner til",
"done": "Ferdig",
"title": "Legg til venner"
},
"menu": {
"logout": "Logg ut",
"back": "Tilbake",
"loading": "Laster inn {appName}",
"undo": "Angre",
"new_room": "Nytt rom",
"login": "Logg inn",
"send": "Send",
"ok": "OK",
"cancel": "Avbryt",
"download": "last ned",
"delete": "Slett",
"edit": "Rediger",
"reply": "Svar",
"start_private_chat": "Privat sludring med denne brukeren"
},
"Keanu Weblite": "Keanu Weblite",
"language_display_name": "Engelsk"
}

View file

@ -0,0 +1,219 @@
{
"menu": {
"ok": "OK",
"loading": "Se încarcă {appName}",
"undo": "Anulează",
"new_room": "Cameră nouă",
"logout": "Ieșire",
"login": "Autentificare",
"back": "ÎNAPOI",
"send": "Trimiteți",
"cancel": "Anulează",
"download": "Descărcați",
"delete": "Ștergeți",
"edit": "Editați",
"reply": "Răspuns",
"start_private_chat": "Chat privat cu acest utilizator"
},
"power_level": {
"restricted": "restricționat",
"custom": "personalizat ({nivel})",
"default": "implicit",
"moderator": "coordonator",
"admin": "administrator"
},
"voice_recorder": {
"not_supported_text": "Din păcate, acest browser nu acceptă înregistrarea audio.",
"not_supported_title": "Nu se acceptă",
"failed_to_record": "Nu a reușit să înregistreze audio",
"release_to_cancel": "Eliberare pentru anulare",
"swipe_to_cancel": "Glisați pentru a anula"
},
"room_info_sheet": {
"view_details": "Vezi detalii",
"this_room": "Acest grup"
},
"room_info": {
"scan_code": "Scanare pentru a intra în cameră",
"version_info": "Realizat de Guardian Project. Versiune: {version}",
"leave_room": "Plecare",
"show_all": "Arată tot >",
"hide_all": "Ascundeți",
"user_you": "{user} (tu)",
"user": "{user}",
"members": "Membri",
"purge": "Ștergeți camera",
"link_copied": "Link copiat!",
"copy_link": "Copiați link-ul de invitație",
"join_public": "Oricine are un link",
"join_invite": "Numai persoane adăugate",
"permissions": "Permisiuni de aderare",
"created_by": "Creat de {user}",
"title": "Detalii despre cameră"
},
"goodbye": {
"view_other_rooms": "Vezi alte camere",
"close_tab": "Închideți fila din browser",
"room_deleted": "Cameră ștearsă."
},
"purge_room": {
"room_deletion_notice": "E timpul să ne luăm rămas bun! Această cameră a fost ștearsă de {user}. Se va autodistruge în câteva secunde.",
"notified": "Am notificat membrii.",
"deleting": "Ștergerea camerei:",
"self_destruct": "Camera se va autodistruge în câteva secunde.",
"n_seconds": "{seconds} secunde",
"button": "Ștergeți",
"info": "Toți membrii și toate mesajele vor fi eliminate. Această acțiune nu poate fi anulată.",
"title": "Ștergeți camera?"
},
"leave": {
"leave": "Lăsați",
"go_back": "Înapoi",
"create_account": "creați un cont",
"text_invite": "Acest grup este blocat. Nu vă puteți alătura fără o permisiune specială.",
"title_invite": "Ești sigur că vrei să pleci?",
"text_public_lastroom": "Dacă doriți să vă înscrieți din nou în acest grup, vă puteți înscrie sub o nouă identitate. Pentru a păstra {user}, {action}.",
"text_public": "Puteți oricând să vă alăturați din nou acestei camere dacă știți link-ul.",
"title_public": "La revedere, {user}"
},
"invite": {
"status_error": "Nu ați reușit să invitați unul sau mai mulți prieteni!",
"status_inviting": "Invitați prietenul {index} din {count}",
"send_invites_to": "Trimiteți invitații la",
"done": "Realizat",
"title": "Adăugați prieteni"
},
"join": {
"join_failed": "Nu a reușit să intre în cameră.",
"status_joining": "Intrarea în cameră…",
"status_logging_in": "Autentificare…",
"join_guest": "Alăturați-vă ca invitat",
"join": "Alăturați-vă camerei",
"joining_as": "Vă înscrieți ca:",
"shared_computer": "Utilizarea unui computer partajat",
"user_name_label": "Numele utilizatorului",
"title": "Bine ați venit la {roomName}"
},
"profile_info_popup": {
"new_room": "+ Cameră nouă",
"powered_by": "Această cameră este alimentată de {product}. Aflați mai multe la {productLink} sau mergeți mai departe și creați o altă cameră!",
"want_more": "Vrei mai mult?",
"logout": "Ieșire",
"edit_profile": "Editați profilul",
"identity_temporary": "{displayName}",
"identity": "{displayName}",
"you_are": "Tu ești"
},
"profile": {
"display_name": "Afișați numele",
"password_repeat": "Repetați noua parolă",
"password_new": "Parolă nouă",
"password_old": "Parolă veche",
"select_language": "Limbă",
"change_password": "Schimbați parola",
"change_name": "Schimbă numele",
"set_password": "Setați parola",
"temporary_identity": "Această identitate este temporară. Setați o parolă pentru a o utiliza din nou",
"title": "Profilul meu"
},
"login": {
"login": "Autentificare",
"password_required": "Parola este necesară",
"username_required": "Numele de utilizator este necesar",
"password": "Parola",
"username": "Nume utilizator",
"title": "Autentificare"
},
"device_list": {
"not_verified": "Nu a fost verificat",
"verified": "Verificat",
"blocked": "Blocat",
"title": "DISPOZITIVE"
},
"new_room": {
"status_avatar": "Încărcarea avatarului: {count}",
"status_avatar_total": "Încărcarea avatarului: {count} din {total}",
"status_creating": "Crearea camerei",
"invite_description": "Alegeți dintr-o listă sau căutați după ID-ul contului",
"invite_info": "Numai persoanele adăugate",
"public_description": "Obțineți un link pentru a partaja",
"public_info": "Oricine are un link",
"link_copied": "Link copiat!",
"add_people": "Adăugați persoane",
"get_link": "Obțineți link-ul",
"join_permissions_info": "Aceste permisiuni determină modul în care persoanele se pot alătura grupului și cât de ușor pot fi invitate alte persoane. Acestea pot fi modificate oricând.",
"set_join_permissions": "Setați permisiunile de asociere",
"join_permissions": "Permisiuni de aderare",
"room_topic": "Adăugați o descriere dacă doriți",
"name_room": "Nume grup",
"next": "Următorul",
"create": "Creați",
"new_room": "Cameră nouă"
},
"room_welcome": {
"got_it": "L-am prins",
"info_permissions": "Puteți modifica oricând \"permisiunile de alăturare\" în setările camerei.",
"join_invite": "Numai persoanele pe care le invitați se pot înscrie.",
"join_public": "Oricine se poate înscrie deschizând acest link: {link}.",
"room_history_joined": "Oamenii pot vedea doar mesajele trimise după ce se înscriu.",
"room_history_is": "Istoricul camerei este {type}.",
"encrypted": "Mesajele sunt criptate de la un capăt la altul.",
"info": "Bine ați venit! Iată câteva lucruri pe care trebuie să le știți despre camera dumneavoastră:"
},
"room": {
"room_list_rooms": "Camere",
"room_list_invites": "Invită",
"purge_failed": "Nu a reușit să curețe camera!",
"purge_removing_members": "Îndepărtarea membrilor",
"purge_redacting_events": "Redactarea evenimentelor",
"purge_set_room_state": "Setarea stării camerei",
"leave": "Lăsați",
"members": "fără membri | 1 membru | {count} membri"
},
"message": {
"user_changed_guest_access_open": "{user} a permis oaspeților să intre în cameră",
"user_changed_guest_access_closed": "{user} a interzis oaspeților să intre în cameră",
"user_powerlevel_change_from_to": "{user} de la {powerOld} la {powerNew}",
"room_powerlevel_change": "{user} a schimbat nivelul de putere al {changes}",
"users_are_typing": "{count} membrii tastează",
"user_is_typing": "{user} tastează",
"scale_image": "Imagine la scară",
"your_message": "Mesajul dumneavoastră…",
"replying_to_event": "RĂSPUNS LA EVENIMENT: {message}",
"unread_messages": "Mesaje necitite",
"user_changed_room_topic": "{user} a schimbat subiectul camerei în {topic}",
"user_changed_room_name": "{user} a schimbat numele camerei în {name}",
"room_joinrule_public": "publică",
"room_joinrule_invite": "numai pe bază de invitație",
"user_changed_join_rules": "{user} a făcut camera {type}",
"room_history_joined": "care pot fi citite de membri din momentul în care au aderat",
"room_history_invited": "care pot fi citite de membri din momentul în care au fost invitați",
"room_history_shared": "poate fi citit de toți membrii din cameră",
"room_history_world_readable": "poate fi citit de oricine",
"user_changed_room_history": "{user} a făcut istoricul camerei {type}",
"upload_progress_with_total": "Ați încărcat {count} din {total}",
"upload_progress": "Încărcat {count}",
"download_progress": "{percentage}% descărcat",
"edited": "(editat)",
"file_prefix": "Fișier: ",
"user_said": "{user} a spus:",
"user_left": "{user} a părăsit chat-ul",
"user_joined": "{user} s-a alăturat chat-ului",
"user_was_invited": "{user} a fost invitat la chat…",
"user_encrypted_room": "{user} a făcut camera criptată",
"user_changed_room_avatar": "{user} a schimbat avatarul camerei",
"user_changed_avatar": "{user} a schimbat avatarul",
"user_changed_display_name": "{user} a schimbat numele de afișare în {displayName}",
"user_aliased_room": "{user} a creat aliasul camerei {alias}",
"user_created_room": "{user} a creat camera",
"you": "Tu"
},
"Keanu Weblite": "Keanu Weblite",
"language_display_name": "Engleză",
"fallbacks": {
"download_name": "Descărcați",
"original_text": "<original text>",
"video_file": "Fișier video",
"audio_file": "Fișier audio"
}
}

View file

@ -0,0 +1,23 @@
{
"menu": {
"ok": "හරි",
"download": "බාගන්න",
"edit": "සංස්කරණය",
"reply": "පිලිතුර",
"start_private_chat": "මෙම පරිශීලක සමඟ පුද්ගලික සංවාදය",
"undo": "පෙරසේ",
"new_room": "නව කාමරය",
"logout": "නික්මෙන්න",
"login": "පිවිසෙන්න",
"back": "ආපසු",
"send": "යවන්න",
"cancel": "අවලංගු කරන්න"
},
"language_display_name": "ඉංග්‍රීසි",
"Keanu Weblite": "කීනු වෙබ්ලයිට්",
"message": {
"download_progress": "{percentage}% බාගත වී ඇත",
"file_prefix": "ගොනුව: ",
"you": "ඔබ"
}
}

View file

@ -7,24 +7,25 @@
},
"room_info": {
"hide_all": "隐藏",
"title": "信息",
"title": "聊天室详情",
"version_info": "由守护者计划提供支持.版本:{version}",
"leave_room_info": "注意:此步骤无法撤消。 确保您要注销并永久删除聊天记录。",
"leave_room": "离开群组",
"leave_room": "离开",
"view_profile": "查看",
"identity_temporary": "您的身份 {displayName} 是临时的。 您可以更改您的姓名或设置密码来保留它。",
"identity": "您以 {displayName} 的身份登录。",
"my_profile": "我的简历",
"show_all": "显示所有",
"show_all": "显示所有 >",
"user_you": "{user} (你)",
"user": "{user}",
"members": "成员",
"purge": "删除聊天室",
"link_copied": "链接已复制!",
"join_public": "知道链接的任何人都可以加入",
"join_invite": "聊天室只能通过邀请加入",
"permissions": "权限",
"created_by": "由 {user} 创建"
"join_public": "知道链接的任何人",
"join_invite": "仅添加人员",
"permissions": "加入权限",
"created_by": "由 {user} 创建",
"copy_link": "复制邀请链接"
},
"leave": {
"leave": "离开",
@ -52,10 +53,16 @@
},
"room": {
"leave": "离开",
"members": "无成员 | 1 名成员 | {count} 名成员"
"members": "无成员 | 1 名成员 | {count} 名成员",
"room_list_rooms": "聊天室",
"room_list_invites": "邀请",
"purge_failed": "删除聊天室失败了!",
"purge_removing_members": "移除成员",
"purge_redacting_events": "编辑事件",
"purge_set_room_state": "设置聊天室状态"
},
"message": {
"you": "你",
"you": "",
"user_aliased_room": "{user} 把聊天室别名设为 {alias}",
"user_created_room": "{user} 创建了聊天室",
"user_changed_room_topic": "{user} 把聊天室的话题更改为{topic}",
@ -81,14 +88,16 @@
"user_changed_room_avatar": "{user} 更改了聊天室的头像",
"user_changed_avatar": "{user} 更改了头像",
"user_changed_display_name": "{user} 把显示名更改为 {displayName}",
"unread_messages": "未读息",
"unread_messages": "未读息",
"user_powerlevel_change_from_to": "{user} 从 {powerOld} 到 {powerNew}",
"room_powerlevel_change": "{user}更改了{changes} 的能量等级",
"users_are_typing": "{count} 成员正在输入",
"user_is_typing": "{user} 正在输入",
"scale_image": "缩放图像",
"your_message": "你的信息...",
"replying_to_event": "回复事件:{message}"
"replying_to_event": "回复事件:{message}",
"user_changed_guest_access_open": "{user} 允许客人加入聊天室",
"user_changed_guest_access_closed": "{user} 不允许客人加入聊天室"
},
"menu": {
"login": "登录",
@ -101,7 +110,8 @@
"logout": "退出",
"ok": "好的",
"reply": "回复",
"back": "返回"
"back": "返回",
"new_room": "新的聊天室"
},
"Keanu Weblite": "网络灯",
"power_level": {
@ -124,9 +134,9 @@
"this_room": "这个群组"
},
"purge_room": {
"button": "删除聊天室",
"button": "删除",
"title": "删除聊天室?",
"info": "此操作将会关闭所有成员的聊天室。 它无法撤消。"
"info": "所有成员和消息将被删除。无法撤销这一操作。"
},
"invite": {
"title": "添加好友",
@ -173,14 +183,29 @@
"name_room": "为群组命名",
"next": "下一步",
"done": "完毕",
"new_room": "新的群组"
"new_room": "新的聊天室",
"room_topic": "如果您愿意,请添加说明",
"create": "创建"
},
"room_welcome": {
"got_it": "知道了",
"info_permissions": "在群组设置中,您随时可以更改“加入权限”和“消息历史”。",
"info": "关于您的群组,您需要了解以下几点:",
"info_permissions": "在群组设置中,您随时可以更改“加入权限”。",
"info": "欢迎!关于您的群组,您需要了解以下几点:",
"join_invite": "只有您邀请的人可以加入。",
"join_public": "任何人都可以加入通过打开此链接: {link}",
"welcome": "欢迎!"
"join_public": "任何人都可以加入通过打开此链接: {link}。",
"welcome": "欢迎!",
"room_history_joined": "只有加入后,人们才可以看到发送的信息。",
"room_history_is": "聊天室纪录是{type}.",
"encrypted": "信息是端到端加密的。"
},
"profile_info_popup": {
"new_room": "+ 新的聊天室",
"powered_by": "这个聊天室由 {product} 提供支持。 在 {productLink} 了解更多信息或继续创建另一个聊天室!",
"want_more": "想要更多?",
"logout": "退出登录",
"edit_profile": "编辑个人资料",
"identity_temporary": "{displayName}",
"identity": "{displayName}",
"you_are": "您是"
}
}

View file

@ -18,7 +18,7 @@
:style="{ top: `${isMove ? y : calcY()}px` }"
>
<div class="bottom-sheet-handle"><div class="bottom-sheet-handle-decoration" /></div>
<div style="position:absolute;top:20px;left:0;right:0;bottom:0;overflow-y:auto;padding:20px">
<div ref="sheetContent" style="position:absolute;top:20px;left:0;right:0;bottom:0;overflow-y:auto;padding:20px">
<slot></slot>
</div>
</div>
@ -119,6 +119,9 @@ export default {
},
setState(state) {
this.state = state;
if (state == "closed") {
this.scrollToTop();
}
},
onBackgroundClick() {
if (this.state == "open") {
@ -127,6 +130,12 @@ export default {
this.setState("closed");
}
},
scrollToTop() {
const container = this.$refs.sheetContent;
if (container) {
container.scrollTo(0, 0);
}
},
},
};
</script>

View file

@ -2,7 +2,7 @@
<div class="chat-root fill-height d-flex flex-column" ma-0 pa-0>
<ChatHeader
class="chat-header flex-grow-0 flex-shrink-0"
v-on:header-click="$refs.roomInfoSheet.open()"
v-on:header-click="onHeaderClick"
/>
<div
class="chat-content flex-grow-1 flex-shrink-1"
@ -1704,6 +1704,20 @@ export default {
formatBytes(bytes) {
return prettyBytes(bytes);
},
onHeaderClick() {
const joinedRooms = this.$matrix.joinedRooms;
if (
joinedRooms &&
joinedRooms.length == 1 &&
joinedRooms[0].roomId == this.room.roomId
) {
// Only joined to this room, go directly to room details!
this.$navigation.push({ name: "RoomInfo" });
return;
}
this.$refs.roomInfoSheet.open();
},
},
};
</script>

View file

@ -0,0 +1,102 @@
<template>
<v-dialog v-model="showDialog" class="ma-0 pa-0" width="80%">
<div class="dialog-content text-center" ref="qrContainer">
<div class="d-flex flex-column text-center" style="align-items:center">
<canvas
ref="qr"
class="qr"
id="qr"
:style="qrStyle"
></canvas>
</div>
<div>{{ $t("room_info.scan_code") }}</div>
</div>
</v-dialog>
</template>
<script>
import roomInfoMixin from "./roomInfoMixin";
import QRCode from "qrcode";
export default {
name: "QRCodePopup",
mixins: [roomInfoMixin],
props: {
show: {
type: Boolean,
default: function () {
return false;
},
},
message: {
type: String,
default: function () {
return false;
},
},
},
data() {
return {
showDialog: false,
};
},
mounted() {
this.updateQR(this.message);
},
computed: {
qrStyle() {
const w = document.documentElement.clientWidth;
const h = document.documentElement.clientHeight;
const s = 0.6 * Math.min(w,h);
return "width: " + s + "px;height:" + s + "px;";
}
},
watch: {
show: {
handler(newVal, ignoredOldVal) {
this.showDialog = newVal;
},
},
showDialog() {
if (!this.showDialog) {
this.$emit("close");
} else {
this.$nextTick(() => {
this.updateQR(this.message);
});
}
},
message: {
handler(message) {
this.updateQR(message);
},
},
},
methods: {
updateQR(message) {
var canvas = this.$refs.qr;
var canvasContainer = this.$refs.qrContainer;
if (message && canvas && canvasContainer) {
this.$nextTick(() => {
QRCode.toCanvas(
canvas,
message,
{
type: "image/png",
margin: 1,
width: Math.min(0.7 * canvasContainer.clientWidth, 0.7 * canvasContainer.clientHeight),
},
function (error) {
if (error) console.error(error);
}
);
});
}
}
},
};
</script>
<style lang="scss">
@import "@/assets/css/chat.scss";
</style>

View file

@ -40,7 +40,12 @@
<v-container fluid class="pa-0" v-show="publicRoomLink">
<v-row cols="12" class="qr-container ma-3">
<v-col cols="auto">
<canvas ref="roomQr" class="qr" id="room-qr"></canvas>
<canvas
@click.stop="showFullScreenQR = true"
ref="roomQr"
class="qr"
id="room-qr"
></canvas>
</v-col>
<v-col align-self="center">
<div class="link">{{ publicRoomLink }}</div>
@ -185,6 +190,9 @@
:room="room"
@close="showPurgeConfirmation = false"
/>
<QRCodePopup :show="showFullScreenQR" :message="publicRoomLink" @close="showFullScreenQR = false" />
</div>
</template>
@ -194,6 +202,7 @@ import PurgeRoomDialog from "../components/PurgeRoomDialog";
import DeviceList from "../components/DeviceList";
import QRCode from "qrcode";
import roomInfoMixin from "./roomInfoMixin";
import QRCodePopup from './QRCodePopup.vue';
export default {
name: "RoomInfo",
@ -202,6 +211,7 @@ export default {
LeaveRoomDialog,
PurgeRoomDialog,
DeviceList,
QRCodePopup,
},
data() {
return {
@ -211,6 +221,7 @@ export default {
showAllMembers: false,
showLeaveConfirmation: false,
showPurgeConfirmation: false,
showFullScreenQR: false,
expandedMembers: [],
buildVersion: "",
updatingJoinRule: false, // Flag if we are processing update curerntly

View file

@ -1,13 +1,18 @@
<template>
<!-- BASE CLASS FOR INCOMING MESSAGE -->
<div :class="messageClasses">
<div v-if="showSenderAndTime" class="senderAndTime">
<div class="sender">{{ messageEventDisplayName(event) }}</div>
<div class="time">
{{ formatTime(event.event.origin_server_ts) }}
</div>
</div>
<v-avatar class="avatar" ref="avatar" size="32" color="#ededed" @click.stop="otherAvatarClicked($refs.avatar.$el)">
<img v-if="messageEventAvatar(event)" :src="messageEventAvatar(event)" />
<span v-else class="white--text headline">{{
messageEventDisplayName(event).substring(0, 1).toUpperCase()
}}</span>
</v-avatar>
<QuickReactions :event="event" :reactions="reactions" />
<!-- SLOT FOR CONTENT -->
<slot></slot>
<div class="op-button" ref="opbutton">
@ -15,12 +20,7 @@
><v-icon>more_vert</v-icon></v-btn
>
</div>
<div v-if="showSenderAndTime" class="senderAndTime">
<div class="sender">{{ messageEventDisplayName(event) }}</div>
<div class="time">
{{ formatTime(event.event.origin_server_ts) }}
</div>
</div>
<QuickReactions :event="event" :reactions="reactions" />
</div>
</template>

View file

@ -1,12 +1,19 @@
<template>
<!-- BASE CLASS FOR OUTGOING MESSAGE -->
<div class="messageOut">
<div class="senderAndTime">
<div class="time">
{{ formatTime(event.event.origin_server_ts) }}
</div>
<div class="status">{{ event.status }}</div>
</div>
<QuickReactions :event="event" :reactions="reactions" />
<div class="op-button" ref="opbutton">
<v-btn icon @click.stop="showContextMenu($refs.opbutton)"
><v-icon>more_vert</v-icon></v-btn
>
</div>
<QuickReactions :event="event" :reactions="reactions" />
<!-- SLOT FOR CONTENT -->
<slot></slot>
<v-avatar
@ -18,13 +25,6 @@
<img v-if="userAvatar" :src="userAvatar" />
<span v-else class="white--text headline">{{ userAvatarLetter }}</span>
</v-avatar>
<!-- <div class="sender">{{ $t('message.you') }}</div> -->
<div class="senderAndTime">
<div class="time">
{{ formatTime(event.event.origin_server_ts) }}
</div>
<div class="status">{{ event.status }}</div>
</div>
</div>
</template>