Compare commits

...

21 Commits

Author SHA1 Message Date
erinn 722fa37db9 Merge branch 'master' of git.openprivacy.ca:cwtch.im/ui into newzoom
the build failed Details
2020-12-16 19:41:18 -08:00
Dan Ballard 1f98899f6b drone: android auto increment AndroidManifest versionCode for second android build (arm64) - fix: don't overwrite file while reading
the build was successful Details
2020-12-15 17:58:17 -08:00
Dan Ballard b586248bda drone: android auto increment AndroidManifest versionCode for second android build (arm64)
the build failed Details
2020-12-15 17:24:45 -08:00
Sarah Jamie Lewis f44cb450a5 Merge pull request 'build.gradle include' (#455) from android-packaging into master
the build was successful Details
Reviewed-on: #455
2020-12-15 13:27:10 -08:00
Sarah Jamie Lewis f354f5a81a Merge branch 'master' into android-packaging
the build was successful Details
2020-12-15 13:27:02 -08:00
Dan Ballard e6145d6e12 extend build.gradle to have seperate paths for arm7 and arm64 and perform the appropriate link/rename so androiddeployqt and therecipeqt can pick up as tho it was not a splits build
the build was successful Details
2020-12-15 00:06:46 -08:00
Sarah Jamie Lewis ee1a8dbed5 Merge pull request 'linux build can now access assets in various */share/cwtch/assets folders. linux installer installs multiple sized icons' (#456) from dan/ui:share into master
the build was successful Details
Reviewed-on: #456
2020-12-11 19:02:27 -08:00
Dan Ballard 4bb5a52b9f linux build can now access assets in various */share/cwtch/assets folders. linux installer installs multiple sized icons
the build was successful Details
2020-12-11 18:53:43 -08:00
Sarah Jamie Lewis bf27590afe build.gradle include
the build was successful Details
2020-12-11 15:47:37 -08:00
erinn 4cdb507e5e Merge pull request 'new spanish and italian translations' (#454) from dan/ui:esIt into master
the build was successful Details
Reviewed-on: #454
2020-12-11 15:33:02 -08:00
Dan Ballard 3dbcf07396 new spanish and italian translations
the build was successful Details
2020-12-11 14:15:23 -08:00
Dan Ballard afcceac8cf Merge pull request 'Bugfix: Copy Address Regression' (#452) from group-add into master
the build was successful Details
Reviewed-on: #452
2020-12-11 12:48:33 -08:00
Sarah Jamie Lewis 66c46714b7 Bugfix: Copy Address Regression
the build was successful Details
2020-12-11 12:04:27 -08:00
Dan Ballard 288e14ede2 drone: add android arm64-v6a step (fix?)
the build was successful Details
2020-12-10 13:02:02 -08:00
Dan Ballard 1962cf9df5 drone: add android arm64-v6a step (fix?)
the build failed Details
2020-12-10 12:47:25 -08:00
Dan Ballard ae8702cda2 drone: add android arm64-v6a step
the build failed Details
2020-12-10 12:35:18 -08:00
Dan Ballard 85dc5b5714 adding android libs for arm64-v8a 2020-12-10 12:31:54 -08:00
Dan Ballard 4932c728ec drone: android upload sign (strip newline/spaces)
the build was successful Details
2020-12-09 17:38:47 -08:00
Dan Ballard 0f15141f73 drone: android upload sign (typo)
the build failed Details
2020-12-09 17:31:18 -08:00
Dan Ballard db0e8a2395 drone: android upload sign (typo)
the build failed Details
2020-12-09 17:26:59 -08:00
Dan Ballard be1959b60c drone: android upload sign
the build failed Details
2020-12-09 17:20:49 -08:00
29 changed files with 1702 additions and 51 deletions

View File

@ -33,9 +33,10 @@ pipeline:
- tar -czf $FILENAME cwtch
- sha256sum $FILENAME > $FILENAME.sha256
- rm -r cwtch
build-android:
build-android-arm-v7a:
mem_limit: 3G
image: therecipe/qt:android
secrets: [upload_jks_file,upload_jks_pass]
when:
repo: cwtch.im/ui
branch: master
@ -52,6 +53,11 @@ pipeline:
- apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git
- rm -r vendor/
- make clean
- echo "cwtch-upload" > android/jks_alias
- echo $UPLOAD_JKS_PASS > android/jks_pass
- echo $UPLOAD_JKS_FILE | tr -d '\n ' > android/ui.jks.b64
- base64 --decode android/ui.jks.b64 > android/ui.jks
- export GOARCH=arm
- go mod download
- export VERSION=`git describe --tags`
- export BUILDDATE=`date +%G-%m-%d-%H-%M`
@ -61,8 +67,49 @@ pipeline:
- ANDROID_MODULES_INCLUDE="Core,Gui,Svg,QuickWidgets,Xml" qtdeploy -ldflags "-X main.buildVer=$VERSION -X main.buildDate=$BUILDDATE" build android
- mv android/assets assets
- cd deploy
- export FILENAME=cwtch-android-$BUILDDATE.apk
- cp android/build-debug.apk $FILENAME
- export FILENAME=cwtch-android-arm-v7a-$BUILDDATE.apk
- cp android/build-release-signed.apk $FILENAME
- sha256sum $FILENAME > $FILENAME.sha256
- rm -r android
build-android-arm64-v8a:
mem_limit: 3G
image: therecipe/qt:android
secrets: [upload_jks_file,upload_jks_pass]
when:
repo: cwtch.im/ui
branch: master
event: push
environment:
- QT_DIR=/opt/Qt
- QT_DOCKER='true'
- QT_API=5.13.0
- ANDROID_NDK_DIR=/home/user/android-ndk-r18b
- ANDROID_SDK_DIR=/home/user/android-sdk-linux
- GO111MODULE=on
commands:
- export PATH=$PATH:/home/user/work/bin:/media/sf_GOPATH1/bin
- apt-get -qq update && apt-get --no-install-recommends -qq -y install ca-certificates curl git
- rm -r vendor/
- make clean
- echo "cwtch-upload" > android/jks_alias
- echo $UPLOAD_JKS_PASS > android/jks_pass
- echo $UPLOAD_JKS_FILE | tr -d '\n ' > android/ui.jks.b64
- base64 --decode android/ui.jks.b64 > android/ui.jks
- export GOARCH=arm64
- perl -pe 's/versionCode="(\d+)"/"versionCode=\"" .($1+1)."\""/eg' android/AndroidManifest.xml > android/AndroidManifest.xml.inc
- rm android/AndroidManifest.xml
- mv android/AndroidManifest.xml.inc android/AndroidManifest.xml
- go mod download
- export VERSION=`git describe --tags`
- export BUILDDATE=`date +%G-%m-%d-%H-%M`
- go mod vendor
- qtsetup generate android
- mv assets android/
- ANDROID_MODULES_INCLUDE="Core,Gui,Svg,QuickWidgets,Xml" qtdeploy -ldflags "-X main.buildVer=$VERSION -X main.buildDate=$BUILDDATE" build android
- mv android/assets assets
- cd deploy
- export FILENAME=cwtch-android-arm64-v8a-$BUILDDATE.apk
- cp android/build-release-signed.apk $FILENAME
- sha256sum $FILENAME > $FILENAME.sha256
- rm -r android
build-windows:

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?>
<manifest package="ca.openprivacy.cwtch.ui" xmlns:android="http://schemas.android.com/apk/res/android"
android:versionName="1.0"
android:versionCode="1"
android:versionCode="4"
android:installLocation="auto">
<application android:hardwareAccelerated="true"
android:name="org.qtproject.qt5.android.bindings.QtApplication"

150
android/build.gradle Normal file
View File

@ -0,0 +1,150 @@
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.0'
}
}
repositories {
google()
jcenter()
}
apply plugin: 'com.android.application'
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
}
android {
/*******************************************************
* The following variables:
* - androidBuildToolsVersion,
* - androidCompileSdkVersion
* - qt5AndroidDir - holds the path to qt android files
* needed to build any Qt application
* on Android.
*
* are defined in gradle.properties file. This file is
* updated by QtCreator and androiddeployqt tools.
* Changing them manually might break the compilation!
*******************************************************/
compileSdkVersion androidCompileSdkVersion.toInteger()
buildToolsVersion '28.0.3'
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = [qt5AndroidDir + '/src', 'src', 'java']
aidl.srcDirs = [qt5AndroidDir + '/src', 'src', 'aidl']
res.srcDirs = [qt5AndroidDir + '/res', 'res']
resources.srcDirs = ['src']
renderscript.srcDirs = ['src']
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
}
}
// kinda of cheaty, would prefer to use if (System.getEnv("GOARCH") == "arm64") {
// but it doesn't want to work in this context
if (qt5AndroidDir.contains("arm64")) {
splits {
// Configures multiple APKs based on ABI.
abi {
// Enables building multiple APKs per ABI.
enable true
// By default all ABIs are included, so use reset() and include to specify that we only
// want APKs for x86 and x86_64.
// Resets the list of ABIs that Gradle should create APKs for to none.
reset()
// Specifies a list of ABIs that Gradle should create APKs for.
// Note that because of the way that therecipe/qt bundles libraries
// only the specific architecture specified by GOARCH /GOARM will *actually*
// work so we currently have to do separate builds for each arch - this needs to be fixed.
include "arm64-v8a"
// Specifies that we do not want to also generate a universal APK that includes all ABIs.
// QT deploy has to be run twice to generate the libgo_base.so for each arch
universalApk false
}
}
task linkBuildDebugArm64(type: Exec) {
workingDir '../build/build/outputs/apk/debug/'
commandLine 'ln', '-sf', 'build-arm64-v8a-debug.apk', 'build-debug.apk'
}
task renameBuildReleaseArm64(type: Exec) {
workingDir '../build/build/outputs/apk/release/'
commandLine 'mv', 'build-arm64-v8a-release-unsigned.apk', 'build-release-unsigned.apk'
}
afterEvaluate {
assembleDebug.finalizedBy(linkBuildDebugArm64)
assembleRelease.finalizedBy(renameBuildReleaseArm64)
}
} else {
splits {
// Configures multiple APKs based on ABI.
abi {
// Enables building multiple APKs per ABI.
enable true
// By default all ABIs are included, so use reset() and include to specify that we only
// want APKs for x86 and x86_64.
// Resets the list of ABIs that Gradle should create APKs for to none.
reset()
// Specifies a list of ABIs that Gradle should create APKs for.
// Note that because of the way that therecipe/qt bundles libraries
// only the specific architecture specified by GOARCH /GOARM will *actually*
// work so we currently have to do separate builds for each arch - this needs to be fixed.
include "armeabi-v7a"
// Specifies that we do not want to also generate a universal APK that includes all ABIs.
// QT deploy has to be run twice to generate the libgo_base.so for each arch
universalApk false
}
}
task linkBuildDebugArm7(type: Exec) {
workingDir '../build/build/outputs/apk/debug/'
commandLine 'ln', '-sf', 'build-armeabi-v7a-debug.apk', 'build-debug.apk'
}
task renameBuildReleaseArm7(type: Exec) {
workingDir '../build/build/outputs/apk/release/'
commandLine 'mv', 'build-armeabi-v7a-release-unsigned.apk', 'build-release-unsigned.apk'
}
afterEvaluate {
assembleDebug.finalizedBy(linkBuildDebugArm7)
assembleRelease.finalizedBy(renameBuildReleaseArm7)
}
}
lintOptions {
abortOnError true
}
}

Binary file not shown.

BIN
android/libs/arm64-v8a/libtor.so Executable file

Binary file not shown.

2
go.mod
View File

@ -3,7 +3,7 @@ module cwtch.im/ui
go 1.12
require (
cwtch.im/cwtch v0.4.10
cwtch.im/cwtch v0.4.11
git.openprivacy.ca/openprivacy/connectivity v1.3.3
git.openprivacy.ca/openprivacy/log v1.0.2
github.com/c-bata/go-prompt v0.2.3 // indirect

2
go.sum
View File

@ -17,6 +17,8 @@ cwtch.im/cwtch v0.4.9 h1:X/6r5rARHSEjk4h0ZPw9NA/oFa+XdWgih0zEdrier40=
cwtch.im/cwtch v0.4.9/go.mod h1:Mh7vQQ3z55+prpX6EuUkg4QNQkBACMoDcgCNBeAH2EY=
cwtch.im/cwtch v0.4.10 h1:sgEyJRY+ck3otC+mc4bgCcUWBHhZGbPWdXK0oP+xXIk=
cwtch.im/cwtch v0.4.10/go.mod h1:snHZIZwRQPAZG2LRZsN5SpAIbeR597VJoDS+KHm7q9w=
cwtch.im/cwtch v0.4.11 h1:AcqRyHQH1/aR57ALnx7qfwg8IfYhkZnkZThAB7NRyHQ=
cwtch.im/cwtch v0.4.11/go.mod h1:snHZIZwRQPAZG2LRZsN5SpAIbeR597VJoDS+KHm7q9w=
cwtch.im/tapir v0.2.0 h1:7MkoR5+uEuPW34/O0GZRidnIjq/01Cfm8nl5IRuqpGc=
cwtch.im/tapir v0.2.0/go.mod h1:xzzZ28adyUXNkYL1YodcHsAiTt3IJ8Loc29YVn9mIEQ=
cwtch.im/tapir v0.2.1 h1:t1YJB9q5sV1A9xwiiwL6WVfw3dwQWLoecunuzT1PQtw=

View File

@ -633,7 +633,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="46"/>
<location filename="../qml/panes/SettingsPane.qml" line="49"/>
<source>locale-pt</source>
<translation type="unfinished"></translation>
</message>
@ -643,7 +643,17 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="65"/>
<location filename="../qml/panes/SettingsPane.qml" line="46"/>
<source>locale-es</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="48"/>
<source>locale-it</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="67"/>
<source>setting-interface-zoom</source>
<extracomment>Interface Zoom</extracomment>
<translation type="unfinished"></translation>
@ -655,41 +665,44 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="101"/>
<source>large-text-label</source>
<location filename="../qml/panes/SettingsPane.qml" line="97"/>
<extracomment>large text</extracomment>
<translation>Groß</translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="164"/>
<location filename="../qml/panes/SettingsPane.qml" line="105"/>
<source>setting-theme</source>
<extracomment>Theme</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="173"/>
<location filename="../qml/panes/SettingsPane.qml" line="114"/>
<source>theme-light</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="174"/>
<location filename="../qml/panes/SettingsPane.qml" line="115"/>
<source>theme-dark</source>
<translation type="unfinished"></translation>
</message>
<message>
<<<<<<< HEAD
<location filename="../qml/panes/SettingsPane.qml" line="193"/>
=======
<location filename="../qml/panes/SettingsPane.qml" line="134"/>
>>>>>>> 1f98899f6be1eea1ab05dd2d5d63c7f7d927ebd5
<source>experiments-enabled</source>
<extracomment>Theme</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="224"/>
<location filename="../qml/panes/SettingsPane.qml" line="164"/>
<source>version %1 tor %2</source>
<extracomment>Version %1 with tor %2</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="232"/>
<location filename="../qml/panes/SettingsPane.qml" line="171"/>
<source>builddate %2</source>
<extracomment>Built on: %2</extracomment>
<translation type="unfinished"></translation>
@ -700,7 +713,8 @@
<translation type="vanished">defaultmäßige Textgröße (Skalierungsfaktor:</translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="91"/>
<location filename="../qml/panes/SettingsPane.qml" line="74"/>
<source>small-text-label</source>
<extracomment>small text</extracomment>
<translation>Klein</translation>

Binary file not shown.

View File

@ -772,7 +772,7 @@ Right-click to reset.</translation>
<translation>Frances</translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="46"/>
<location filename="../qml/panes/SettingsPane.qml" line="49"/>
<source>locale-pt</source>
<translation>Portuguesa</translation>
</message>
@ -782,7 +782,17 @@ Right-click to reset.</translation>
<translation>Deutsche</translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="65"/>
<location filename="../qml/panes/SettingsPane.qml" line="46"/>
<source>locale-es</source>
<translation>Espanol</translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="48"/>
<source>locale-it</source>
<translation>Italiana</translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="67"/>
<source>setting-interface-zoom</source>
<extracomment>Interface Zoom</extracomment>
<translation>Zoom level</translation>
@ -800,29 +810,29 @@ Right-click to reset.</translation>
<translation>Large</translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="164"/>
<location filename="../qml/panes/SettingsPane.qml" line="105"/>
<source>setting-theme</source>
<extracomment>Theme</extracomment>
<translation>Theme</translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="173"/>
<location filename="../qml/panes/SettingsPane.qml" line="114"/>
<source>theme-light</source>
<translation>Light</translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="174"/>
<location filename="../qml/panes/SettingsPane.qml" line="115"/>
<source>theme-dark</source>
<translation>Dark</translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="193"/>
<location filename="../qml/panes/SettingsPane.qml" line="134"/>
<source>experiments-enabled</source>
<extracomment>Theme</extracomment>
<translation>Experiments enabled</translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="224"/>
<location filename="../qml/panes/SettingsPane.qml" line="164"/>
<source>version %1 tor %2</source>
<extracomment>Version %1 with tor %2</extracomment>
<translation>Version %1 with tor %2</translation>
@ -833,7 +843,7 @@ Right-click to reset.</translation>
<translation type="vanished">Version %1</translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="232"/>
<location filename="../qml/panes/SettingsPane.qml" line="171"/>
<source>builddate %2</source>
<extracomment>Built on: %2</extracomment>
<translation>Built on: %2</translation>
@ -844,7 +854,7 @@ Right-click to reset.</translation>
<translation type="vanished">Default size text (scale factor:</translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="91"/>
<location filename="../qml/panes/SettingsPane.qml" line="74"/>
<source>small-text-label</source>
<extracomment>small text</extracomment>
<translation>Small</translation>

BIN
i18n/translation_es.qm Normal file

Binary file not shown.

721
i18n/translation_es.ts Normal file
View File

@ -0,0 +1,721 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="es">
<context>
<name>AddGroupPane</name>
<message>
<source>create-group-title</source>
<translation type="vanished">Crear un grupo</translation>
</message>
<message>
<source>server-label</source>
<translation type="vanished">Servidor</translation>
</message>
<message>
<source>group-name-label</source>
<translation type="vanished">Nombre del grupo</translation>
</message>
<message>
<source>default-group-name</source>
<translation type="vanished">El Grupo Asombroso</translation>
</message>
<message>
<source>create-group-btn</source>
<translation type="vanished">Crear</translation>
</message>
</context>
<context>
<name>AddPeerGroupPane</name>
<message>
<source>profile-oniblon-label</source>
<extracomment>Send this address to peers you want to connect with</extracomment>
<translation>Envía esta dirección a los contactos con los que quieras conectarte</translation>
</message>
<message>
<source>copy-btn</source>
<translation>Copiar</translation>
</message>
<message>
<source>copied-to-clipboard-notification</source>
<extracomment>notification: copied to clipboard</extracomment>
<translation>Copiado al portapapeles</translation>
</message>
<message>
<source>add-peer-tab</source>
<translation>Agregar Contacto</translation>
</message>
<message>
<source>create-group-tab</source>
<translation>Crear un grupo</translation>
</message>
<message>
<source>join-group-tab</source>
<translation>Únete a un grupo</translation>
</message>
<message>
<source>peer-address</source>
<extracomment>Address</extracomment>
<translation>Dirección</translation>
</message>
<message>
<source>peer-name</source>
<extracomment>Name</extracomment>
<translation>Nombre</translation>
</message>
<message>
<source>group-name</source>
<extracomment>Group Name</extracomment>
<translation>Nombre del grupo</translation>
</message>
<message>
<source>server</source>
<extracomment>Server</extracomment>
<translation>Servidor</translation>
</message>
<message>
<source>invitation</source>
<extracomment>Invitation</extracomment>
<translation>Invitación</translation>
</message>
<message>
<source>group-addr</source>
<extracomment>Address</extracomment>
<translation>Dirección</translation>
</message>
<message>
<source>add-peer</source>
<translation type="vanished">Agregar Contacto</translation>
</message>
<message>
<source>create-group</source>
<translation type="vanished">Crear perfil</translation>
</message>
<message>
<source>join-group</source>
<translation type="vanished">Únete al grupo</translation>
</message>
</context>
<context>
<name>BulletinOverlay</name>
<message>
<source>new-bulletin-label</source>
<translation>Nuevo Boletín</translation>
</message>
<message>
<source>post-new-bulletin-label</source>
<extracomment>Post a new Bulletin Post</extracomment>
<translation>Publicar nuevo boletín</translation>
</message>
<message>
<source>title-placeholder</source>
<extracomment>title place holder text</extracomment>
<translation>título...</translation>
</message>
</context>
<context>
<name>ChatOverlay</name>
<message>
<source>chat-history-default</source>
<extracomment>This conversation will be deleted when Cwtch is closed! Message history can be enabled per-conversation via the Settings menu in the upper right.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>chat-history-disabled</source>
<extracomment>Message history is disabled.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>chat-history-enabled</source>
<extracomment>Message history is enabled.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ContactList</name>
<message>
<source>paste-address-to-add-contact</source>
<translation type="vanished">...pegar una dirección aquí para añadir contacto...</translation>
</message>
<message>
<source>blocked</source>
<translation>Bloqueado</translation>
</message>
</context>
<context>
<name>EmojiDrawer</name>
<message>
<source>cycle-cats-android</source>
<translation type="vanished">Click para cambiar categoría. Mantenga pulsado para reiniciar.</translation>
</message>
<message>
<source>cycle-cats-desktop</source>
<translation type="vanished">Click para cambiar categoría. Click derecho para reiniciar.</translation>
</message>
<message>
<source>cycle-morphs-android</source>
<translation type="vanished">Click para cambiar transformaciones. Mantenga pulsado para reiniciar.</translation>
</message>
<message>
<source>cycle-morphs-desktop</source>
<translation type="vanished">Click para cambiar transformaciones. Click derecho para reiniciar.</translation>
</message>
<message>
<source>cycle-colours-android</source>
<translation type="vanished">Click para cambiar colores. Mantenga pulsado para reiniciar.</translation>
</message>
<message>
<source>cycle-colours-desktop</source>
<translation type="vanished">Click para cambiar colores. Click derecho para reiniciar.</translation>
</message>
<message>
<source>search</source>
<translation type="vanished">Búsqueda...</translation>
</message>
</context>
<context>
<name>GroupSettingsPane</name>
<message>
<source>server-label</source>
<translation>Servidor</translation>
</message>
<message>
<source>copy-btn</source>
<translation>Copiar</translation>
</message>
<message>
<source>copied-to-clipboard-notification</source>
<extracomment>notification: copied to clipboard</extracomment>
<translation>Copiado al portapapeles</translation>
</message>
<message>
<source>invitation-label</source>
<translation>Invitación</translation>
</message>
<message>
<source>server-info</source>
<translation>Información del servidor</translation>
</message>
<message>
<source>server-connectivity-connected</source>
<translation>Servidor conectado</translation>
</message>
<message>
<source>server-connectivity-disconnected</source>
<translation>Servidor desconectado</translation>
</message>
<message>
<source>server-synced</source>
<translation>Sincronizado</translation>
</message>
<message>
<source>server-not-synced</source>
<translation>Fuera de sincronización con el servidor</translation>
</message>
<message>
<source>view-server-info</source>
<translation>Información del servidor</translation>
</message>
<message>
<source>group-name-label</source>
<translation>Nombre del grupo</translation>
</message>
<message>
<source>save-btn</source>
<translation>Guardar</translation>
</message>
<message>
<source>invite-to-group-label</source>
<translation type="vanished">Invitar al grupo</translation>
</message>
<message>
<source>invite-btn</source>
<translation type="vanished">Invitar</translation>
</message>
<message>
<source>delete-btn</source>
<translation>Eliminar</translation>
</message>
</context>
<context>
<name>InplaceEditText</name>
<message>
<source>Update</source>
<translation type="vanished">Actualizar</translation>
</message>
</context>
<context>
<name>ListOverlay</name>
<message>
<source>search-list</source>
<extracomment>ex: &quot;Find...&quot;</extracomment>
<translation>Buscar en la lista</translation>
</message>
<message>
<source>peer-not-online</source>
<translation>Este contacto no está en línea, la aplicación no puede ser usada en este momento</translation>
</message>
<message>
<source>add-list-item-btn</source>
<translation>Agregar artículo</translation>
</message>
<message>
<source>add-list-item</source>
<translation type="vanished">Añadir un nuevo elemento a la lista</translation>
</message>
<message>
<source>add-new-item</source>
<translation type="vanished">Añadir un nuevo elemento a la lista</translation>
</message>
<message>
<source>todo-placeholder</source>
<translation type="vanished">Por hacer...</translation>
</message>
</context>
<context>
<name>MembershipOverlay</name>
<message>
<source>membership-description</source>
<extracomment>Below is a list of users who have sent messages to the group. This list may not reflect all users who have access to the group.</extracomment>
<translation>La lista a continuación solo muestra los miembros que han enviado mensajes al grupo, no incluye a todos los usuarios dentro del grupo</translation>
</message>
</context>
<context>
<name>Message</name>
<message>
<source>dm-tooltip</source>
<extracomment>Click to DM</extracomment>
<translation>Haz clic para enviar mensaje directo</translation>
</message>
<message>
<source>could-not-send-msg-error</source>
<extracomment>Could not send this message</extracomment>
<translation>No se pudo enviar este mensaje</translation>
</message>
<message>
<source>acknowledged-label</source>
<translation>Reconocido</translation>
</message>
<message>
<source>pending-label</source>
<translation>Pendiente</translation>
</message>
</context>
<context>
<name>MessageEditor</name>
<message>
<source>peer-blocked-message</source>
<extracomment>Peer is blocked</extracomment>
<translation>Contacto bloqueado</translation>
</message>
<message>
<source>peer-offline-message</source>
<extracomment>Peer is offline, messages can&apos;t be delivered right now</extracomment>
<translation>Este contacto no está en línea, los mensajes no pueden ser entregados en este momento</translation>
</message>
</context>
<context>
<name>MyProfile</name>
<message>
<source>copy-btn</source>
<translation type="vanished">Copiar</translation>
</message>
<message>
<source>copied-clipboard-notification</source>
<translation type="vanished">Copiado al portapapeles</translation>
</message>
<message>
<source>new-group-btn</source>
<translation type="vanished">Crear un nuevo grupo de chat</translation>
</message>
<message>
<source>paste-address-to-add-contact</source>
<translation type="vanished">...pegar una dirección aquí para añadir un contacto...</translation>
</message>
</context>
<context>
<name>OverlayPane</name>
<message>
<source>accept-group-invite-label</source>
<translation type="vanished">¿Quieres aceptar la invitación a </translation>
</message>
<message>
<source>accept-group-btn</source>
<translation type="vanished">Aceptar</translation>
</message>
<message>
<source>reject-group-btn</source>
<translation type="vanished">Rechazar</translation>
</message>
<message>
<source>chat-btn</source>
<translation>Chat</translation>
</message>
<message>
<source>lists-btn</source>
<translation>Listas</translation>
</message>
<message>
<source>bulletins-btn</source>
<translation>Boletines</translation>
</message>
<message>
<source>puzzle-game-btn</source>
<translation type="vanished">Juego de rompecabezas</translation>
</message>
</context>
<context>
<name>PeerSettingsPane</name>
<message>
<source>address-label</source>
<translation>Dirección</translation>
</message>
<message>
<source>copy-btn</source>
<translation>Copiar</translation>
</message>
<message>
<source>copied-to-clipboard-notification</source>
<extracomment>notification: copied to clipboard</extracomment>
<translation>Copiado al portapapeles</translation>
</message>
<message>
<source>display-name-label</source>
<translation>Nombre de Usuario</translation>
</message>
<message>
<source>save-btn</source>
<translation>Guardar</translation>
</message>
<message>
<source>block-btn</source>
<translation>Bloquear contacto</translation>
</message>
<message>
<source>save-peer-history</source>
<extracomment>Save Peer History</extracomment>
<translation>Guardar el historial con contacto</translation>
</message>
<message>
<source>save-peer-history-description</source>
<translation>Determina si eliminar o no el historial asociado con el contacto.</translation>
</message>
<message>
<source>dont-save-peer-history</source>
<translation>Eliminar historial de contacto</translation>
</message>
<message>
<source>unblock-btn</source>
<translation type="vanished">Desbloquear contacto</translation>
</message>
<message>
<source>delete-btn</source>
<translation>Eliminar</translation>
</message>
</context>
<context>
<name>ProfileAddEditPane</name>
<message>
<source>add-profile-title</source>
<translation type="vanished">Agregar nuevo perfil</translation>
</message>
<message>
<source>edit-profile-title</source>
<translation type="vanished">Editar perfil</translation>
</message>
<message>
<source>profile-name</source>
<translation type="vanished">Nombre de Usuario</translation>
</message>
<message>
<source>default-profile-name</source>
<translation type="vanished">Alicia</translation>
</message>
<message>
<source>new-profile</source>
<extracomment>New Profile || Edit Profile</extracomment>
<translation>Nuevo perfil</translation>
</message>
<message>
<source>edit-profile</source>
<translation>Editar perfil</translation>
</message>
<message>
<source>profile-onion-label</source>
<translation type="vanished">Envía esta dirección a los contactos con los que quieras conectarte</translation>
</message>
<message>
<source>copy-btn</source>
<translation>Copiar</translation>
</message>
<message>
<source>copied-to-clipboard-notification</source>
<extracomment>notification: copied to clipboard</extracomment>
<translation>Copiado al portapapeles</translation>
</message>
<message>
<source>radio-use-password</source>
<extracomment>Password</extracomment>
<translation>Contraseña</translation>
</message>
<message>
<source>radio-no-password</source>
<extracomment>Unencrypted (No password)</extracomment>
<translation>Sin cifrado (sin contraseña)</translation>
</message>
<message>
<source>no-password-warning</source>
<extracomment>Not using a password on this account means that all data stored locally will not be encrypted</extracomment>
<translation>No usar una contraseña para esta cuenta significa que los datos almacenados localmente no serán encriptados</translation>
</message>
<message>
<source>profile-oniblon-label</source>
<extracomment>Send this address to peers you want to connect with</extracomment>
<translation>Envía esta dirección a los contactos con los que quieras conectarte</translation>
</message>
<message>
<source>your-display-name</source>
<extracomment>Your Display Name</extracomment>
<translation>Tu nombre de usuario</translation>
</message>
<message>
<source>current-password-label</source>
<extracomment>Current Password</extracomment>
<translation>Contraseña actual</translation>
</message>
<message>
<source>password1-label</source>
<extracomment>Password</extracomment>
<translation>Contraseña</translation>
</message>
<message>
<source>password2-label</source>
<extracomment>Reenter password</extracomment>
<translation>Vuelve a ingresar tu contraseña</translation>
</message>
<message>
<source>password-error-empty</source>
<extracomment>Passwords do not match</extracomment>
<translation>El campo de contraseña no puede estar vacío</translation>
</message>
<message>
<source>create-profile-btn</source>
<extracomment>Create || Save</extracomment>
<translation>Crear perfil</translation>
</message>
<message>
<source>save-profile-btn</source>
<translation>Guardar perfil</translation>
</message>
<message>
<source>password-error-match</source>
<translation>Las contraseñas no coinciden</translation>
</message>
<message>
<source>password-change-error</source>
<extracomment>Error changing password: Supplied password rejected</extracomment>
<translation>Hubo un error cambiando tu contraseña: la contraseña ingresada fue rechazada</translation>
</message>
<message>
<source>delete-profile-btn</source>
<extracomment>Delete Profile</extracomment>
<translation>Eliminar Perfil</translation>
</message>
<message>
<source>delete-confirm-label</source>
<extracomment>Type DELETE to confirm</extracomment>
<translation>Escribe ELIMINAR para confirmar</translation>
</message>
<message>
<source>delete-profile-confirm-btn</source>
<extracomment>Really Delete Profile</extracomment>
<translation>Confirmar eliminar perfil</translation>
</message>
<message>
<source>delete-confirm-text</source>
<extracomment>DELETE</extracomment>
<translation>ELIMINAR</translation>
</message>
</context>
<context>
<name>ProfileList</name>
<message>
<source>add-new-profile-btn</source>
<translation>Agregar nuevo perfil</translation>
</message>
</context>
<context>
<name>ProfileManagerPane</name>
<message>
<source>enter-profile-password</source>
<extracomment>Enter a password to view your profiles</extracomment>
<translation>Ingresa tu contraseña para ver tus perfiles</translation>
</message>
<message>
<source>password</source>
<translation>Contraseña</translation>
</message>
<message>
<source>error-0-profiles-loaded-for-password</source>
<extracomment>0 profiles loaded with that password</extracomment>
<translation>0 perfiles cargados con esa contraseña</translation>
</message>
<message>
<source>your-profiles</source>
<extracomment>Your Profiles</extracomment>
<translation>Tus perfiles</translation>
</message>
<message>
<source>your-servers</source>
<extracomment>Your Profiles</extracomment>
<translation>Tus servidores</translation>
</message>
<message>
<source>unlock</source>
<extracomment>Unlock</extracomment>
<translation>Desbloquear</translation>
</message>
</context>
<context>
<name>SettingsPane</name>
<message>
<source>cwtch-settings-title</source>
<translation type="vanished">Configuración de Cwtch</translation>
</message>
<message>
<source>version %1 builddate %2</source>
<translation type="vanished">Versión: %1 Basado en %2</translation>
</message>
<message>
<source>zoom-label</source>
<translation type="vanished">Zoom de la interfaz (afecta principalmente el tamaño del texto y de los botones)</translation>
</message>
<message>
<source>block-unknown-label</source>
<translation type="vanished">Bloquear conexiones desconocidas</translation>
</message>
<message>
<source>setting-language</source>
<extracomment>Language</extracomment>
<translation>Idioma</translation>
</message>
<message>
<source>locale-en</source>
<translation>Inglés</translation>
</message>
<message>
<source>locale-fr</source>
<translation>Francés</translation>
</message>
<message>
<source>locale-pt</source>
<translation>Portugués</translation>
</message>
<message>
<source>locale-de</source>
<translation>Alemán</translation>
</message>
<message>
<source>setting-interface-zoom</source>
<extracomment>Interface Zoom</extracomment>
<translation>Nivel de zoom</translation>
</message>
<message>
<source>large-text-label</source>
<translation>Grande</translation>
</message>
<message>
<source>setting-theme</source>
<extracomment>Theme</extracomment>
<translation>Tema</translation>
</message>
<message>
<source>theme-light</source>
<translation>Claro</translation>
</message>
<message>
<source>theme-dark</source>
<translation>Oscuro</translation>
</message>
<message>
<source>experiments-enabled</source>
<extracomment>Theme</extracomment>
<translation>Experimentos habilitados</translation>
</message>
<message>
<source>version %1 tor %2</source>
<extracomment>Version %1 with tor %2</extracomment>
<translation>Versión %1 con tor %2</translation>
</message>
<message>
<source>version %1</source>
<translation type="vanished">Versión %1</translation>
</message>
<message>
<source>builddate %2</source>
<extracomment>Built on: %2</extracomment>
<translation>Basado en: %2</translation>
</message>
<message>
<source>default-scaling-text</source>
<translation type="vanished">Tamaño predeterminado de texto (factor de escala:</translation>
</message>
<message>
<source>small-text-label</source>
<translation>Pequeño</translation>
</message>
<message>
<source>locale-es</source>
<translation>Español</translation>
</message>
<message>
<source>locale-it</source>
<translation>Italiano</translation>
</message>
</context>
<context>
<name>SplashPane</name>
<message>
<source>loading-tor</source>
<extracomment>Loading tor...</extracomment>
<translation>Cargando tor...</translation>
</message>
</context>
<context>
<name>StackToolbar</name>
<message>
<source>view-group-membership-tooltip</source>
<translation type="vanished">Ver membresía del grupo</translation>
</message>
</context>
<context>
<name>Statusbar</name>
<message>
<source>network-status-disconnected</source>
<extracomment>Disconnected from the internet, check your connection</extracomment>
<translation>Sin conexión, comprueba tu conexión</translation>
</message>
<message>
<source>network-status-attempting-tor</source>
<extracomment>Attempting to connect to Tor network</extracomment>
<translation>Intentando conectarse a la red Tor</translation>
</message>
<message>
<source>network-status-connecting</source>
<extracomment>Connecting...</extracomment>
<translation>Conectando a la red y a los contactos...</translation>
</message>
<message>
<source>network-status-online</source>
<extracomment>Online</extracomment>
<translation>En línea</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<source>new-connection-pane-title</source>
<extracomment>New Connection</extracomment>
<translation>Nueva conexión</translation>
</message>
</context>
</TS>

View File

@ -633,7 +633,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="46"/>
<location filename="../qml/panes/SettingsPane.qml" line="49"/>
<source>locale-pt</source>
<translation type="unfinished"></translation>
</message>
@ -643,7 +643,17 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="65"/>
<location filename="../qml/panes/SettingsPane.qml" line="46"/>
<source>locale-es</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="48"/>
<source>locale-it</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="67"/>
<source>setting-interface-zoom</source>
<extracomment>Interface Zoom</extracomment>
<translation type="unfinished"></translation>
@ -661,35 +671,35 @@
<translation type="unfinished">Large</translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="164"/>
<location filename="../qml/panes/SettingsPane.qml" line="105"/>
<source>setting-theme</source>
<extracomment>Theme</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="173"/>
<location filename="../qml/panes/SettingsPane.qml" line="114"/>
<source>theme-light</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="174"/>
<location filename="../qml/panes/SettingsPane.qml" line="115"/>
<source>theme-dark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="193"/>
<location filename="../qml/panes/SettingsPane.qml" line="134"/>
<source>experiments-enabled</source>
<extracomment>Theme</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="224"/>
<location filename="../qml/panes/SettingsPane.qml" line="164"/>
<source>version %1 tor %2</source>
<extracomment>Version %1 with tor %2</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="232"/>
<location filename="../qml/panes/SettingsPane.qml" line="171"/>
<source>builddate %2</source>
<extracomment>Built on: %2</extracomment>
<translation type="unfinished"></translation>
@ -700,7 +710,7 @@
<translation type="vanished">Taille par défaut du texte (échelle:</translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="91"/>
<location filename="../qml/panes/SettingsPane.qml" line="74"/>
<source>small-text-label</source>
<extracomment>small text</extracomment>
<translation>Petit</translation>

BIN
i18n/translation_it.qm Normal file

Binary file not shown.

654
i18n/translation_it.ts Normal file
View File

@ -0,0 +1,654 @@
<!DOCTYPE TS><TS version="2.1" language="it">
<context>
<name>AddGroupPane</name>
<message>
<source>create-group-title</source>
<translation>Crea un gruppo</translation>
</message>
<message>
<source>server-label</source>
<translation>Server</translation>
</message>
<message>
<source>group-name-label</source>
<translation>Nome del gruppo</translation>
</message>
<message>
<source>default-group-name</source>
<translation>Gruppo fantastico</translation>
</message>
<message>
<source>create-group-btn</source>
<translation>Crea</translation>
</message>
</context>
<context>
<name>AddPeerGroupPane</name>
<message>
<source>profile-oniblon-label</source>
<translation>Inviare questo indirizzo ai peer con cui si desidera connettersi</translation>
</message>
<message>
<source>copy-btn</source>
<translation>Copia</translation>
</message>
<message>
<source>copied-to-clipboard-notification</source>
<translation>Copiato negli Appunti</translation>
</message>
<message>
<source>add-peer-tab</source>
<translation>Aggiungi un peer</translation>
</message>
<message>
<source>create-group-tab</source>
<translation>Crea un gruppo</translation>
</message>
<message>
<source>join-group-tab</source>
<translation>Unisciti a un gruppo</translation>
</message>
<message>
<source>peer-address</source>
<translation>Indirizzo</translation>
</message>
<message>
<source>peer-name</source>
<translation>Nome</translation>
</message>
<message>
<source>group-name</source>
<translation>Nome del gruppo</translation>
</message>
<message>
<source>server</source>
<translation>Server</translation>
</message>
<message>
<source>invitation</source>
<translation>Invito</translation>
</message>
<message>
<source>group-addr</source>
<translation>Indirizzo</translation>
</message>
<message>
<source>add-peer</source>
<translation>Aggiungi peer</translation>
</message>
<message>
<source>create-group</source>
<translation>Crea un gruppo</translation>
</message>
<message>
<source>join-group</source>
<translation>Unisciti al gruppo</translation>
</message>
</context>
<context>
<name>BulletinOverlay</name>
<message>
<source>new-bulletin-label</source>
<translation>Nuovo bollettino</translation>
</message>
<message>
<source>post-new-bulletin-label</source>
<translation>Pubblica un nuovo bollettino</translation>
</message>
<message>
<source>title-placeholder</source>
<translation>titolo...</translation>
</message>
</context>
<context>
<name>ContactList</name>
<message>
<source>paste-address-to-add-contact</source>
<translation>... incolla qui un indirizzo per aggiungere un contatto...</translation>
</message>
<message>
<source>blocked</source>
<translation>Bloccato</translation>
</message>
</context>
<context>
<name>EmojiDrawer</name>
<message>
<source>cycle-cats-android</source>
<translation>Fare clic per scorrere le categorie.
Pressione lunga per resettare.</translation>
</message>
<message>
<source>cycle-cats-desktop</source>
<translation>Fare clic per scorrere le categorie.
Cliccare con il tasto destro per resettare.</translation>
</message>
<message>
<source>cycle-morphs-android</source>
<translation>Fare clic per scorrere i morph.
Pressione lunga per resettare.</translation>
</message>
<message>
<source>cycle-morphs-desktop</source>
<translation>Fare clic per scorrere i morph.
Cliccare con il tasto destro per resettare.</translation>
</message>
<message>
<source>cycle-colours-android</source>
<translation>Fare clic per scorrere i colori.
Pressione lunga per resettare.</translation>
</message>
<message>
<source>cycle-colours-desktop</source>
<translation>Fare clic per scorrere i colori.
Cliccare con il tasto destro per resettare.</translation>
</message>
<message>
<source>search</source>
<translation>Ricerca...</translation>
</message>
</context>
<context>
<name>GroupSettingsPane</name>
<message>
<source>server-label</source>
<translation>Server</translation>
</message>
<message>
<source>copy-btn</source>
<translation>Copia</translation>
</message>
<message>
<source>copied-to-clipboard-notification</source>
<translation>Copiato negli Appunti</translation>
</message>
<message>
<source>invitation-label</source>
<translation>Invito</translation>
</message>
<message>
<source>server-info</source>
<translation>Informazioni sul server</translation>
</message>
<message>
<source>server-connectivity-connected</source>
<translation>Server connesso</translation>
</message>
<message>
<source>server-connectivity-disconnected</source>
<translation>Server disconnesso</translation>
</message>
<message>
<source>server-synced</source>
<translation>Sincronizzato</translation>
</message>
<message>
<source>server-not-synced</source>
<translation>Non sincronizzato</translation>
</message>
<message>
<source>view-server-info</source>
<translation>Informazioni sul server</translation>
</message>
<message>
<source>group-name-label</source>
<translation>Nome del gruppo</translation>
</message>
<message>
<source>save-btn</source>
<translation>Salva</translation>
</message>
<message>
<source>invite-to-group-label</source>
<translation>Invitare nel gruppo</translation>
</message>
<message>
<source>invite-btn</source>
<translation>Invitare</translation>
</message>
<message>
<source>delete-btn</source>
<translation>Elimina</translation>
</message>
</context>
<context>
<name>InplaceEditText</name>
<message>
<source>Update</source>
<translation>Aggiornamento</translation>
</message>
</context>
<context>
<name>ListOverlay</name>
<message>
<source>search-list</source>
<translation>Cerca nella lista</translation>
</message>
<message>
<source>peer-not-online</source>
<translation>Il peer è offline. Le applicazioni non possono essere utilizzate in questo momento.</translation>
</message>
<message>
<source>add-list-item-btn</source>
<translation>Aggiungi elemento</translation>
</message>
<message>
<source>add-list-item</source>
<translation>Aggiungi un nuovo elemento alla lista</translation>
</message>
<message>
<source>add-new-item</source>
<translation>Aggiungi un nuovo elemento alla lista</translation>
</message>
<message>
<source>todo-placeholder</source>
<translation>Da fare...</translation>
</message>
</context>
<context>
<name>MembershipOverlay</name>
<message>
<source>membership-description</source>
<translation>Di seguito è riportato un elenco di utenti che hanno inviato messaggi al gruppo. Questo elenco potrebbe non corrispondere a tutti gli utenti che hanno accesso al gruppo.</translation>
</message>
</context>
<context>
<name>Message</name>
<message>
<source>dm-tooltip</source>
<translation>Clicca per inviare un Messagio Diretto</translation>
</message>
<message>
<source>could-not-send-msg-error</source>
<translation>Impossibile inviare questo messaggio</translation>
</message>
<message>
<source>acknowledged-label</source>
<translation>Riconosciuto</translation>
</message>
<message>
<source>pending-label</source>
<translation>In corso</translation>
</message>
</context>
<context>
<name>MessageEditor</name>
<message>
<source>peer-blocked-message</source>
<translation>Il peer è bloccato</translation>
</message>
<message>
<source>peer-offline-message</source>
<translation>Il peer è offline, i messaggi non possono essere recapitati in questo momento</translation>
</message>
</context>
<context>
<name>MyProfile</name>
<message>
<source>copy-btn</source>
<translation>Copia</translation>
</message>
<message>
<source>copied-clipboard-notification</source>
<translation>Copiato negli Appunti</translation>
</message>
<message>
<source>new-group-btn</source>
<translation>Crea un nuovo gruppo</translation>
</message>
<message>
<source>paste-address-to-add-contact</source>
<translation>... incolla qui un indirizzo per aggiungere un contatto ...</translation>
</message>
</context>
<context>
<name>OverlayPane</name>
<message>
<source>accept-group-invite-label</source>
<translation>Vuoi accettare l&apos;invito a</translation>
</message>
<message>
<source>accept-group-btn</source>
<translation>Accetta</translation>
</message>
<message>
<source>reject-group-btn</source>
<translation>Rifiuta</translation>
</message>
<message>
<source>chat-btn</source>
<translation>Chat</translation>
</message>
<message>
<source>lists-btn</source>
<translation>Liste</translation>
</message>
<message>
<source>bulletins-btn</source>
<translation>Bollettini</translation>
</message>
<message>
<source>puzzle-game-btn</source>
<translation>Gioco di puzzle</translation>
</message>
</context>
<context>
<name>PeerSettingsPane</name>
<message>
<source>address-label</source>
<translation>Indirizzo</translation>
</message>
<message>
<source>copy-btn</source>
<translation>Copia</translation>
</message>
<message>
<source>copied-to-clipboard-notification</source>
<translation>Copiato negli Appunti</translation>
</message>
<message>
<source>display-name-label</source>
<translation>Nome visualizzato</translation>
</message>
<message>
<source>save-btn</source>
<translation>Salva</translation>
</message>
<message>
<source>block-btn</source>
<translation>Blocca il peer</translation>
</message>
<message>
<source>save-peer-history</source>
<translation>Salva cronologia peer</translation>
</message>
<message>
<source>save-peer-history-description</source>
<translation>Determina se eliminare o meno ogni cronologia eventualmente associata al peer.</translation>
</message>
<message>
<source>dont-save-peer-history</source>
<translation>Elimina cronologia dei peer</translation>
</message>
<message>
<source>unblock-btn</source>
<translation>Sblocca il peer</translation>
</message>
<message>
<source>delete-btn</source>
<translation>Elimina</translation>
</message>
</context>
<context>
<name>ProfileAddEditPane</name>
<message>
<source>add-profile-title</source>
<translation>Aggiungi nuovo profilo</translation>
</message>
<message>
<source>edit-profile-title</source>
<translation>Modifica profilo</translation>
</message>
<message>
<source>profile-name</source>
<translation>Nome visualizzato</translation>
</message>
<message>
<source>default-profile-name</source>
<translation>Alice</translation>
</message>
<message>
<source>new-profile</source>
<translation>Nuovo profilo</translation>
</message>
<message>
<source>edit-profile</source>
<translation>Modifica profilo</translation>
</message>
<message>
<source>profile-onion-label</source>
<translation>Inviare questo indirizzo ai peer con cui si desidera connettersi</translation>
</message>
<message>
<source>copy-btn</source>
<translation>Copia</translation>
</message>
<message>
<source>copied-to-clipboard-notification</source>
<translation>Copiato negli appunti</translation>
</message>
<message>
<source>radio-use-password</source>
<translation>Password</translation>
</message>
<message>
<source>radio-no-password</source>
<translation>Non criptato (senza password)</translation>
</message>
<message>
<source>no-password-warning</source>
<translation>Non utilizzare una password su questo account significa che tutti i dati archiviati localmente non verranno criptati</translation>
</message>
<message>
<source>profile-oniblon-label</source>
<translation>Inviare questo indirizzo ai peer con cui si desidera connettersi</translation>
</message>
<message>
<source>your-display-name</source>
<translation>Il tuo nome visualizzato</translation>
</message>
<message>
<source>current-password-label</source>
<translation>Password corrente</translation>
</message>
<message>
<source>password1-label</source>
<translation>Password</translation>
</message>
<message>
<source>password2-label</source>
<translation>Reinserire la password</translation>
</message>
<message>
<source>password-error-empty</source>
<translation>La password non può essere vuota</translation>
</message>
<message>
<source>create-profile-btn</source>
<translation>Crea un profilo</translation>
</message>
<message>
<source>save-profile-btn</source>
<translation>Salva il profilo</translation>
</message>
<message>
<source>password-error-match</source>
<translation>Le password non corrispondono</translation>
</message>
<message>
<source>password-change-error</source>
<translation>Errore durante la modifica della password: password fornita rifiutata</translation>
</message>
<message>
<source>delete-profile-btn</source>
<translation>Elimina profilo</translation>
</message>
<message>
<source>delete-confirm-label</source>
<translation>Digita ELIMINA per confermare</translation>
</message>
<message>
<source>delete-profile-confirm-btn</source>
<translation>Elimina realmente il profilo</translation>
</message>
<message>
<source>delete-confirm-text</source>
<translation>ELIMINA</translation>
</message>
</context>
<context>
<name>ProfileList</name>
<message>
<source>add-new-profile-btn</source>
<translation>Aggiungi nuovo profilo</translation>
</message>
</context>
<context>
<name>ProfileManagerPane</name>
<message>
<source>enter-profile-password</source>
<translation>Inserisci una password per visualizzare i tuoi profili</translation>
</message>
<message>
<source>password</source>
<translation>Password</translation>
</message>
<message>
<source>error-0-profiles-loaded-for-password</source>
<translation>0 profili caricati con quella password</translation>
</message>
<message>
<source>your-profiles</source>
<translation>I tuoi profili</translation>
</message>
<message>
<source>your-servers</source>
<translation>I tuoi server</translation>
</message>
<message>
<source>unlock</source>
<translation>Sblocca</translation>
</message>
</context>
<context>
<name>SettingsPane</name>
<message>
<source>cwtch-settings-title</source>
<translation>Impostazioni di Cwtch</translation>
</message>
<message>
<source>version %1 builddate %2</source>
<translation>Versione: %1 Costruito il: %2</translation>
</message>
<message>
<source>zoom-label</source>
<translation>Zoom dell&apos;interfaccia (influisce principalmente sulle dimensioni del testo e dei pulsanti)</translation>
</message>
<message>
<source>block-unknown-label</source>
<translation>Blocca peer sconosciuti</translation>
</message>
<message>
<source>setting-language</source>
<translation>Lingua</translation>
</message>
<message>
<source>locale-en</source>
<translation>Inglese</translation>
</message>
<message>
<source>locale-fr</source>
<translation>Francese</translation>
</message>
<message>
<source>locale-pt</source>
<translation>Portoghese</translation>
</message>
<message>
<source>locale-de</source>
<translation>Tedesco</translation>
</message>
<message>
<source>setting-interface-zoom</source>
<translation>Livello di zoom</translation>
</message>
<message>
<source>large-text-label</source>
<translation>Grande</translation>
</message>
<message>
<source>setting-theme</source>
<translation>Tema</translation>
</message>
<message>
<source>theme-light</source>
<translation>Chiaro</translation>
</message>
<message>
<source>theme-dark</source>
<translation>Scuro</translation>
</message>
<message>
<source>experiments-enabled</source>
<translation>Esperimenti abilitati</translation>
</message>
<message>
<source>version %1 tor %2</source>
<translation>Versione %1 con tor %2</translation>
</message>
<message>
<source>version %1</source>
<translation>Versione %1</translation>
</message>
<message>
<source>builddate %2</source>
<translation>Costruito il: %2</translation>
</message>
<message>
<source>default-scaling-text</source>
<translation>Testo di dimensioni predefinite (fattore di scala:</translation>
</message>
<message>
<source>small-text-label</source>
<translation>Piccolo</translation>
</message>
<message>
<source>locale-es</source>
<translation>Spagnolo</translation>
</message>
<message>
<source>locale-it</source>
<translation>Italiano</translation>
</message>
</context>
<context>
<name>SplashPane</name>
<message>
<source>loading-tor</source>
<translation>Caricamento di tor...</translation>
</message>
</context>
<context>
<name>StackToolbar</name>
<message>
<source>view-group-membership-tooltip</source>
<translation>Visualizza i membri del gruppo</translation>
</message>
</context>
<context>
<name>Statusbar</name>
<message>
<source>network-status-disconnected</source>
<translation>Disconnesso da Internet, controlla la tua connessione</translation>
</message>
<message>
<source>network-status-attempting-tor</source>
<translation>Tentativo di connessione alla rete Tor</translation>
</message>
<message>
<source>network-status-connecting</source>
<translation>Connessione alla rete e ai peer ...</translation>
</message>
<message>
<source>network-status-online</source>
<translation>Online</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<source>new-connection-pane-title</source>
<translation>Nuova connessione</translation>
</message>
</context>
</TS>

View File

@ -633,7 +633,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="46"/>
<location filename="../qml/panes/SettingsPane.qml" line="49"/>
<source>locale-pt</source>
<translation type="unfinished"></translation>
</message>
@ -643,7 +643,17 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="65"/>
<location filename="../qml/panes/SettingsPane.qml" line="46"/>
<source>locale-es</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="48"/>
<source>locale-it</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="67"/>
<source>setting-interface-zoom</source>
<extracomment>Interface Zoom</extracomment>
<translation type="unfinished"></translation>
@ -655,41 +665,40 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="101"/>
<location filename="../qml/panes/SettingsPane.qml" line="97"/>
<source>large-text-label</source>
<extracomment>large text</extracomment>
<translation>Grande</translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="164"/>
<location filename="../qml/panes/SettingsPane.qml" line="105"/>
<source>setting-theme</source>
<extracomment>Theme</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="173"/>
<location filename="../qml/panes/SettingsPane.qml" line="114"/>
<source>theme-light</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="174"/>
<location filename="../qml/panes/SettingsPane.qml" line="115"/>
<source>theme-dark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="193"/>
<location filename="../qml/panes/SettingsPane.qml" line="134"/>
<source>experiments-enabled</source>
<extracomment>Theme</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="224"/>
<location filename="../qml/panes/SettingsPane.qml" line="164"/>
<source>version %1 tor %2</source>
<extracomment>Version %1 with tor %2</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="232"/>
<location filename="../qml/panes/SettingsPane.qml" line="171"/>
<source>builddate %2</source>
<extracomment>Built on: %2</extracomment>
<translation type="unfinished"></translation>
@ -700,7 +709,7 @@
<translation type="vanished">Texto tamanho padrão (fator de escala: </translation>
</message>
<message>
<location filename="../qml/panes/SettingsPane.qml" line="91"/>
<location filename="../qml/panes/SettingsPane.qml" line="74"/>
<source>small-text-label</source>
<extracomment>small text</extracomment>
<translation>Pequeno</translation>

View File

@ -2,7 +2,7 @@
Name=Cwtch
Comment=Metadata Resistant Instant Messaging
Exec=~/.local/bin/cwtch
Icon=~/.local/share/icons/cwtch.png
Icon=cwtch
StartupNotify=true
Type=Application
Keywords=Internet;IM;Instant Messaging;Messaging;Chat

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 798 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -6,5 +6,10 @@ cp ui ~/.local/bin/cwtch
mkdir -p ~/.local/share/icons
cp cwtch.png ~/.local/share/icons
mkdir -p ~/.local/share/cwtch
cp -r assets ~/.local/share/cwtch
cp -r icons ~/.local/share/
mkdir -p ~/.local/share/applications
sed "s|~|$HOME|" cwtch.desktop > $HOME/.local/share/applications/cwtch.desktop

32
main.go
View File

@ -181,14 +181,38 @@ func mainUi(flagLocal bool, flagClientUI bool) {
log.Infof("core.QCoreApplication_ApplicationDirPath(): %v\n", dir)
if runtime.GOOS == "android" {
gcd.SetAssetPath("assets:/")
} else {
} else if runtime.GOOS == "windows" {
// all of these access are QML based, and QML takes URIs which use forward slashes and translates them to local OS sperators
// also windows paths need to be like /c:/PATH
if runtime.GOOS == "windows" {
dir = "/" + dir
}
dir = "/" + dir
// QML uses '/' regardless of platform (so we use path.Join here not filepath.Join)
gcd.SetAssetPath("file://" + path.Join(dir, "assets") + "/")
} else {
if buildVer == "" || flagLocal {
if _, err := os.Stat(path.Join(dir, "assets")); !os.IsNotExist(err) {
gcd.SetAssetPath("file://" + path.Join(dir, "assets") + "/")
}
} else {
usr, err := user.Current()
if err != nil {
log.Errorf("\nerror: could not load current user: %v\n", err)
os.Exit(1)
}
localCwtch := path.Join(usr.HomeDir, ".local/share/cwtch")
if _, err := os.Stat(localCwtch); !os.IsNotExist(err) {
gcd.SetAssetPath("file://" + path.Join(localCwtch, "assets") + "/")
} else if _, err := os.Stat("/usr/share/cwtch"); !os.IsNotExist(err) {
gcd.SetAssetPath("file://" + "/usr/share/cwtch/assets/")
} else if _, err := os.Stat("/usr/local/share/cwtch/"); !os.IsNotExist(err) {
gcd.SetAssetPath("file://" + "/usr/local/share/cwtch/assets/")
} else if _, err := os.Stat(path.Join(dir, "assets")); !os.IsNotExist(err) {
gcd.SetAssetPath("file://" + path.Join(dir, "assets") + "/")
}
}
if gcd.AssetPath() == "" {
log.Errorf("Could not find assets folder")
os.Exit(-1)
}
}
log.Infof("gcd.assetPath = '%v'\n", gcd.AssetPath())

View File

@ -24,6 +24,8 @@
<file>i18n/translation_de.qm</file>
<file>i18n/translation_en.qm</file>
<file>i18n/translation_fr.qm</file>
<file>i18n/translation_es.qm</file>
<file>i18n/translation_it.qm</file>
<file>i18n/translation_pt.qm</file>
<file>qml/images/cwtch_logo.png</file>
<file>qml/images/cwtch_title.png</file>

View File

@ -26,7 +26,6 @@ Rectangle {
groupNameCreate.text = ""
groupAddr.text = ""
onionLabel.text = gcd.selectedProfile
}

View File

@ -45,8 +45,10 @@ Opaque.SettingsList { // settingsPane
id: cbLangItems
ListElement { text: qsTr("locale-en"); value: "en" }
ListElement { text: qsTr("locale-fr"); value: "fr" }
ListElement { text: qsTr("locale-pt"); value: "pt" }
ListElement { text: qsTr("locale-es"); value: "es" }
ListElement { text: qsTr("locale-de"); value: "de" }
ListElement { text: qsTr("locale-it"); value: "it" }
ListElement { text: qsTr("locale-pt"); value: "pt" }
}
onCurrentIndexChanged: {

2
ui.pro
View File

@ -20,6 +20,8 @@ RESOURCES += qml.qrc
TRANSLATIONS = i18n/translation_en.ts \
i18n/translation_de.ts \
i18n/translation_es.ts \
i18n/translation_it.ts \
i18n/translation_pt.ts \
i18n/translation_fr.ts