]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-8972 - [verto_communicator] add i18n using angular-translate and static file...
authorDavide Colombo <dcolombo@voismart.it>
Wed, 23 Mar 2016 10:15:44 +0000 (11:15 +0100)
committerDavide Colombo <dcolombo@voismart.it>
Tue, 29 Mar 2016 15:05:18 +0000 (17:05 +0200)
23 files changed:
html5/verto/verto_communicator/Gruntfile.js
html5/verto/verto_communicator/bower.json
html5/verto/verto_communicator/src/css/verto.css
html5/verto/verto_communicator/src/index.html
html5/verto/verto_communicator/src/locales/locale-en.json [new file with mode: 0644]
html5/verto/verto_communicator/src/locales/locale-it.json [new file with mode: 0644]
html5/verto/verto_communicator/src/partials/chat.html
html5/verto/verto_communicator/src/partials/contributors.html
html5/verto/verto_communicator/src/partials/dialpad.html
html5/verto/verto_communicator/src/partials/login.html
html5/verto/verto_communicator/src/partials/menu.html
html5/verto/verto_communicator/src/partials/modal_logininfo.html
html5/verto/verto_communicator/src/partials/preview.html
html5/verto/verto_communicator/src/partials/settings.html
html5/verto/verto_communicator/src/partials/splash_screen.html
html5/verto/verto_communicator/src/partials/video_call.html
html5/verto/verto_communicator/src/storageService/services/splash_screen.js
html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js
html5/verto/verto_communicator/src/vertoControllers/controllers/ChatController.js
html5/verto/verto_communicator/src/vertoControllers/controllers/InCallController.js
html5/verto/verto_communicator/src/vertoControllers/controllers/MainController.js
html5/verto/verto_communicator/src/vertoControllers/controllers/PreviewController.js
html5/verto/verto_communicator/src/vertoControllers/controllers/SettingsController.js

index 4d2174ac9d29dca7945d8dd2dd408d6951c5273c..1962e3263c4b08d43af0ae99cc14097b871254d5 100644 (file)
@@ -120,6 +120,7 @@ module.exports = function (grunt) {
             '<%= config.app %>/**/*.html',
             '.tmp/styles/{,*/}*.css',
             '<%= config.app %>/images/{,*/}*',
+            '<%= config.app %>/locales/{,*/}*',
             '.tmp/**/*.js',
             '<%= config.app %>/**/*.js'
           ],
@@ -150,6 +151,7 @@ module.exports = function (grunt) {
             ],
             routes: {
               '/partials': 'src/partials',
+              '/locales': 'src/locales',
               '/config.json': 'src/config.json',
               '/contributors.txt': 'src/contributors.txt',
               '/bower_components': './bower_components',
@@ -309,7 +311,8 @@ module.exports = function (grunt) {
              'img/*.png',
              'images/{,*/}*.{webp}',
              'css/fonts/{,*/}*.*',
-             'sounds/*.*'
+             'sounds/*.*',
+             'locales/*.*'
            ]
          }, {
            expand: true,
index 73ade295f83d0563853e2a8a04b9fdcde22c2f15..975807de00bf09fafeb6f6492bfe70ea448222f7 100644 (file)
@@ -43,7 +43,9 @@
     "jquery-json": "~2.5.1",
     "datatables": "~1.10.8",
     "angular-bootstrap": "~0.14.3",
-    "bootstrap-material-design": "~0.3.0"
+    "bootstrap-material-design": "~0.3.0",
+    "angular-translate": "~2.10.0",
+    "angular-translate-loader-static-files": "~2.10.0"
   },
   "resolutions": {
     "angular": "~1.3.15",
index d2d3b7add3ece66f9354a129e4e8844c64edca36..418ed83b54ff5dfedf28c92c82700e90ff022d6f 100644 (file)
@@ -1728,6 +1728,10 @@ body:-webkit-full-screen #incall .video-footer {
   color: white;
 }
 
+#settings .checkbox .checkbox-material .check {
+  margin-right: 10px;
+}
+
 #settings .btn {
   color: rgba(0, 10, 66, 0.84);
   background-color: #E8E8E8;
index e10df6455275a149b3e85590dd355995723a009b..736ab14974e34fc66d696130b3b7312bab3e2062 100644 (file)
@@ -97,6 +97,8 @@
     <script src="bower_components/datatables/media/js/jquery.dataTables.js"></script>
     <script src="bower_components/bootstrap-material-design/dist/js/material.js"></script>
     <script src="bower_components/bootstrap-material-design/dist/js/ripples.js"></script>
+    <script src="bower_components/angular-translate/angular-translate.js"></script>
+    <script src="bower_components/angular-translate-loader-static-files/angular-translate-loader-static-files.js"></script>
     <!-- endbower -->
     <!-- endbuild -->
 
diff --git a/html5/verto/verto_communicator/src/locales/locale-en.json b/html5/verto/verto_communicator/src/locales/locale-en.json
new file mode 100644 (file)
index 0000000..c5d32b1
--- /dev/null
@@ -0,0 +1,143 @@
+{
+  "TITLE_ACTIVE_CALL": "Oops, Active Call in Course.",
+  "MESSAGE_ACTIVE_CALL_HANGUP": "It seems that you are in a call. Do you want to hang up?",
+  "MESSAGE_ACTIVE_CALL_BACK": "It seems you were in a call before leaving the last time. Wanna go back to that?",
+  "TITLE_INCOMING_CALL": "Incoming Call",
+  "MESSAGE_INCOMING_CALL": "from ",
+  "MESSAGE_NO_HANGUP_CALL": "There is no call to hangup.",
+  "MESSAGE_ENTER_FILENAME": "Please, enter filename",
+  "TITLE_ENABLE_VIDEO": "Would you like to activate video for this call?",
+  "MESSAGE_ENABLE_VIDEO": "Video will be active during the next calls.",
+  "TITLE_INSERT_BANNER": "Please insert the banner text",
+  "TITLE_INSERT_CANVAS_ID": "Please insert the Canvas Id",
+  "TITLE_INSERT_LAYER": "Please insert the Layer",
+  "TITLE_TRANSFER": "Transfer party?",
+  "MESSAGE_TRANSFER": "To what destination would you like to transfer this call?",
+  "LABEL_TRANSFER": "Destination",
+  "MESSAGE_DISPLAY_SETTINGS": "Can't display preview settings during a call",
+  "BUTTON_END_CALL": "End Call",
+  "BUTTON_CLOSE": "Close",
+  "MESSAGE_PLAY": "Play",
+  "MESSAGE_STOP": "Stop",
+  "MESSAGE_RECORD": "Record",
+  "MESSAGE_STOP_RECORD": "Stop Record",
+  "MESSAGE_SNAPSHOT": "Snapshot",
+  "MESSAGE_VIDEO_MODE": "Video Mode",
+  "MESSAGE_MUTE_MIC": "(un)Mute Mic",
+  "MESSAGE_MUTE_VIDEO": "(un)Mute Video",
+  "MESSAGE_FULLSCREEN": "Toggle Fullscreen Mode",
+  "MESSAGE_SCREENSHARE": "Screenshare",
+  "MESSAGE_OPEN_CLOSE_CHAT": "Open/Close Chat",
+  "MESSAGE_SPEAKER": "Speaker",
+  "MESSAGE_POPUP": "Popup",
+  "CHAT_TITLE_MEMBERS": "Members",
+  "CHAT_TITLE": "Chat",
+  "CHAT_NO_MEMBERS": "There are no members to show.",
+  "CHAT_GENERAL": "General",
+  "CHAT_TITLE_KICK": "Kick",
+  "CHAT_KICK": "Kick",
+  "CHAT_TITLE_VIDEO_FLOOR": "Video Floor",
+  "CHAT_FLOOR": "Floor",
+  "CHAT_TITLE_TRANSFER": "Transfer",
+  "CHAT_TRANSFER": "Transfer",
+  "CHAT_BANNER": "Banner",
+  "CHAT_TITLE_SET": "Set",
+  "CHAT_SET": "Set",
+  "CHAT_TITLE_RESET": "Reset",
+  "CHAT_RESET": "Reset",
+  "CHAT_CANVAS": "Canvas",
+  "CHAT_CANVAS_IN": "Canvas In",
+  "CHAT_CANVAS_OUT": "Canvas Out",
+  "CHAT_PREV": "Prev",
+  "CHAT_NEXT": "Next",
+  "CHAT_LAYER": "Layer",
+  "CHAT_AUDIO_VIDEO": "Audio/Video",
+  "CHAT_TITLE_MUTE_UNMUTE_MIC": "Mute/Unmute Mic",
+  "CHAT_MUTE_MIC": "Mute",
+  "CHAT_UNMUTE_MIC": "Unmute",
+  "CHAT_TITLE_MUTE_UNMUTE_MIC": "Mute/Unmute Video",
+  "CHAT_NO_MESSAGES": "There are no messages to show.",
+  "CHAT_SEND_MESSAGE": "Send",
+  "CHAT_TYPE_MESSAGE": "Type your message here...",
+  "TITLE_CONTRIBUTORS": "Contributors",
+  "MESSAGE_CONNECTION_UNTRUSTED": "This Connection is Untrusted.",
+  "MESSAGE_TOGGLE_NAVIGATION": "Toggle navigation",
+  "BANDWIDTH_INFO": "Bandwidth Info",
+  "BANDWIDTH_INFO_INCOMING": "Incoming:",
+  "BANDWIDTH_INFO_OUTGOING": "Outgoing:",
+  "BANDWIDTH_INFO_VIDEO_RES": "Video Resolution:",
+  "IN_CALL": "In Call:",
+  "LAST_CALL": "Last Call:",
+  "OPEN_NEW_WINDOW": "Open New Window",
+  "CHANGE_LOGIN_INFO": "Change Login Information",
+  "LOGOUT": "Logout",
+  "ABOUT": "About",
+  "HELP": "Help",
+  "CONTRIBUTORS": "Contributors",
+  "TITLE_PREVIEW_SETTINGS": "Setup your camera and microphone settings",
+  "CAMERA__SETTNGS": "Camera:",
+  "MIC_SETTINGS": "Microphone:",
+  "SAVE": "Save",
+  "LOADING": "Loading",
+  "ERRORS" : "Errors",
+  "CALLING_TO": "Calling to ",
+  "CANCELLING": "Cancelling...",
+  "DETERMINING_SPEED": "Determining your speed...",
+  "CALL_HISTORY": "Call History",
+  "CLEAR_CALL_HISTORY": "Clear History",
+  "NO_CALL_HISTORY": "No history calls.",
+  "ENTER_EXTENSION": "Enter an extension",
+  "CALL_EXTENSION": "Call Extension",
+  "LOGIN": "Login",
+  "LOGIN_INFORMATION": "Login Information",
+  "SAVE_LOGIN_INFORMATION": "Save Login Information",
+  "INVALID_LOGIN_FIELDS": "Verify the fields below and try again.",
+  "NAME": "Name",
+  "YOUR_NAME": "Your name",
+  "EMAIL": "Email",
+  "YOUR_EMAIL": "Your email",
+  "USER": "User",
+  "PASSWORD": "Password",
+  "CALLER_ID": "Caller ID",
+  "HOSTNAME": "Hostname",
+  "WEBSOCKET_URL": "Websocket URL",
+  "SETTINGS": "Settings",
+  "DEVICE_SETTINGS": "Device Settings",
+  "SHARE_DEVICE": "Share device",
+  "SPEAKER": "Speaker:",
+  "SPEAKER_FEATURE": "Your browser doesn't seem to support this feature",
+  "PREVIEW_SETTINGS": "Preview Settings",
+  "REFRESH_DEVICE_LIST": "Refresh device list",
+  "GENERAL_SETTINGS": "General settings:",
+  "USE_VIDEO": "Use Video",
+  "USE_STEREO_AUDIO": "Stereo Audio",
+  "USE_STUN": "Use STUN",
+  "SCALE_VIDEO": "Scale Remote Video To Match Camera Resolution",
+  "ASK_BEFORE_RECOVER": "Ask before recovering call",
+  "BEST_FRAME_RATE": "Best frame rate:",
+  "AUDIO_SETTINGS": "Audio settings:",
+  "ECHO_CANCEL": "Echo Cancellation",
+  "NOISE_SUPPRESSION": "Noise Suppression",
+  "HIGHPASS_FILTER": "Highpass Filter",
+  "VIDEO_SETTINGS": "Video settings:",
+  "REMOTE_ENCODER": "Dedicated Remote Encoder enabled.",
+  "AUTO_SPEED_RES": "Automatically determine speed and resolution settings",
+  "RECHECK_BANDWIDTH": "Recheck bandwidth before each outgoing call",
+  "CHECK_NETWORK_SPEED": "Check Network Speed",
+  "VIDEO_QUALITY": "Video quality:",
+  "MAX_INCOMING_BANDWIDTH": "Max incoming bandwidth:",
+  "MAX_OUTGOING_BANDWIDTH": "Max outgoing bandwidth:",
+  "FACTORY_RESET": "Factory reset",
+  "SAVE_DEVICE_SETTINGS": "Save Device Settings",
+  "BROWSER_COMPATIBILITY": "Checking browser compatibility.",
+  "REFRESH_MEDIA_DEVICES": "Refresh Media Devices.",
+  "BROWSER_WITHOUT_WEBRTC": "Error: browser doesn't support WebRTC.",
+  "CHECK_PERMISSION_MEDIA": "Checking media permissions",
+  "CHECK_PROVISIONING_CONF": "Provisioning configuration.",
+  "CHECK_LOGIN": "Checking login.",
+  "CHECK_CONNECTION_SPEED": "Check Connection Speed.",
+  "ERROR_PERMISSION_MEDIA": "Error: Media Permission Denied",
+  "ERROR_PROVISIONING_CONF": "Error: Provision failed.",
+  "PLEASE_WAIT": "Please wait..."
+}
+
diff --git a/html5/verto/verto_communicator/src/locales/locale-it.json b/html5/verto/verto_communicator/src/locales/locale-it.json
new file mode 100644 (file)
index 0000000..be50edc
--- /dev/null
@@ -0,0 +1,144 @@
+{
+  "TITLE_ACTIVE_CALL": "Oops, Chiamata in corso.",
+  "MESSAGE_ACTIVE_CALL_HANGUP": "Sembra che tu sia in conversazione. Vuoi chiudere la chiamata?",
+  "MESSAGE_ACTIVE_CALL_BACK": "Sembra che eri in conversazione prima di abbandonare la sessione l'ultima volta. Vuoi tornare in quella conversazione?",
+  "TITLE_INCOMING_CALL": "Chiamata in arrivo",
+  "MESSAGE_INCOMING_CALL": "da ",
+  "MESSAGE_NO_HANGUP_CALL": "Non ci sono chiamate da chiudere.",
+  "MESSAGE_ENTER_FILENAME": "Per favore, inserisci il nome del file",
+  "TITLE_ENABLE_VIDEO": "Vuoi attivare il video per questa chiamata?",
+  "MESSAGE_ENABLE_VIDEO": "Il video verrĂ  attivato a partire dalla prossima chiamata.",
+  "TITLE_INSERT_BANNER": "Per favore inserisci il testo del banner",
+  "TITLE_INSERT_CANVAS_ID": "Please insert the Canvas Id",
+  "TITLE_INSERT_LAYER": "Please insert the Layer",
+  "TITLE_TRANSFER": "Transfer party?",
+  "MESSAGE_TRANSFER": "To what destination would you like to transfer this call?",
+  "LABEL_TRANSFER": "Destinazione",
+  "MESSAGE_DISPLAY_SETTINGS": "Non Ă¨ possibile mostrare le configurazioni video durante una chiamata",
+  "BUTTON_END_CALL": "Termina la chiamata",
+  "BUTTON_CLOSE": "Chiudi",
+  "MESSAGE_PLAY": "Riproduci",
+  "MESSAGE_STOP": "Ferma",
+  "MESSAGE_RECORD": "Registra",
+  "MESSAGE_STOP_RECORD": "Ferma la registrazione",
+  "MESSAGE_SNAPSHOT": "Snapshot",
+  "MESSAGE_VIDEO_MODE": "Video Mode",
+  "MESSAGE_MUTE_MIC": "(un)Mute Mic",
+  "MESSAGE_MUTE_VIDEO": "(un)Mute Video",
+  "MESSAGE_FULLSCREEN": "Abilita/Disabilita schermo intero",
+  "MESSAGE_SCREENSHARE": "Condividi lo schermo",
+  "MESSAGE_OPEN_CLOSE_CHAT": "Apri/Chiudi Chat",
+  "MESSAGE_SPEAKER": "Speaker",
+  "MESSAGE_POPUP": "Popup",
+  "CHAT_TITLE_MEMBERS": "Membri",
+  "CHAT_TITLE": "Chat",
+  "CHAT_NO_MEMBERS": "Non ci sono membri da mostrare.",
+  "CHAT_GENERAL": "Generale",
+  "CHAT_TITLE_KICK": "Kick",
+  "CHAT_KICK": "Kick",
+  "CHAT_TITLE_VIDEO_FLOOR": "Video Floor",
+  "CHAT_FLOOR": "Floor",
+  "CHAT_TITLE_TRASFER": "Transfer",
+  "CHAT_TRANSFER": "Transfer",
+  "CHAT_BANNER": "Banner",
+  "CHAT_TITLE_SET": "Set",
+  "CHAT_SET": "Set",
+  "CHAT_TITLE_RESET": "Reset",
+  "CHAT_RESET": "Reset",
+  "CHAT_RESET": "Reset",
+  "CHAT_CANVAS": "Canvas",
+  "CHAT_CANVAS_IN": "Canvas In",
+  "CHAT_CANVAS_OUT": "Canvas Out",
+  "CHAT_PREV": "Prev",
+  "CHAT_NEXT": "Next",
+  "CHAT_LAYER": "Layer",
+  "CHAT_AUDIO_VIDEO": "Audio/Video",
+  "CHAT_TITLE_MUTE_UNMUTE_MIC": "Mute/Unmute Mic",
+  "CHAT_MUTE_MIC": "Mute",
+  "CHAT_UNMUTE_MIC": "Unmute",
+  "CHAT_TITLE_MUTE_UNMUTE_MIC": "Mute/Unmute Video",
+  "CHAT_NO_MESSAGES": "Non ci sono messaggi da mostrare.",
+  "CHAT_SEND_MESSAGE": "Invia",
+  "CHAT_TYPE_MESSAGE": "Scrivi il tuo messaggio qui...",
+  "TITLE_CONTRIBUTORS": "Contributori",
+  "MESSAGE_CONNECTION_UNTRUSTED": "Questa connessione non Ă¨ sicura.",
+  "MESSAGE_TOGGLE_NAVIGATION": "Abilita/Disabilita navigazione",
+  "BANDWIDTH_INFO": "Informazioni sulla larghezza di banda",
+  "BANDWIDTH_INFO_INCOMING": "Ingresso:",
+  "BANDWIDTH_INFO_OUTGOING": "Uscita:",
+  "BANDWIDTH_INFO_VIDEO_RES": "Risoluzione Video:",
+  "IN_CALL": "In chiamata: ",
+  "LAST_CALL": "Ultima chiamata: ",
+  "OPEN_NEW_WINDOW": "Apri Una Nuova Finestra",
+  "CHANGE_LOGIN_INFO": "Cambia le informazioni di login",
+  "LOGOUT": "Logout",
+  "ABOUT": "About",
+  "HELP": "Aiuto",
+  "CONTRIBUTORS": "Contributori",
+  "TITLE_PREVIEW_SETTINGS": "Configura le impostazioni della tua video camera e del tuo microfono",
+  "CAMERA_SETTINGS": "Video Camera:",
+  "MIC_SETTINGS": "Microfono:",
+  "SAVE": "Salva",
+  "LOADING": "Caricamento",
+  "ERRORS" : "Errori",
+  "CALLING_TO": "Chiamata verso ",
+  "CANCELLING": "In annullamento",
+  "DETERMINING_SPEED": "Calcolo della tua velocitĂ ...",
+  "CALL_HISTORY": "Cronologia Chiamate",
+  "CLEAR_CALL_HISTORY": "Rimuovi la cronologia",
+  "NO_CALL_HISTORY": "Nessuna chiamata nella cronologia.",
+  "ENTER_EXTENSION": "Inserisci un numero",
+  "CALL_EXTENSION": "Chiama il numero",
+  "LOGIN": "Login",
+  "LOGIN_INFORMATION": "Informazioni di login",
+  "SAVE_LOGIN_INFORMATION": "Salva le informazioni di login",
+  "INVALID_LOGIN_FIELDS": "Verifica i campi e prova di nuovo.",
+  "NAME": "Nome",
+  "YOUR_NAME": "Il tuo nome",
+  "EMAIL": "Email",
+  "YOUR_EMAIL": "Il tuo indirizzo email",
+  "USER": "Utente",
+  "PASSWORD": "Password",
+  "CALLER_ID": "Caller ID",
+  "HOSTNAME": "Hostname",
+  "WEBSOCKET_URL": "Websocket URL",
+  "SETTINGS": "Impostazioni",
+  "DEVICE_SETTINGS": "Configurazione dei dispositivi",
+  "SHARE_DEVICE": "Dispositivo in condivisione",
+  "SPEAKER": "Altoparlante:",
+  "SPEAKER_FEATURE": "Il tuo browser sembra non supportare questa funzionalitĂ ",
+  "PREVIEW_SETTINGS": "Anteprima delle configurazioni",
+  "REFRESH_DEVICE_LIST": "Aggiorna la lista dei dispositivi",
+  "GENERAL_SETTINGS": "Configurazioni generali:",
+  "USE_VIDEO": "Abilita Video",
+  "USE_STEREO_AUDIO": "Abilita Audio Stereo",
+  "USE_STUN": "Abilita STUN",
+  "SCALE_VIDEO": "Scala il video remoto con la risoluzione della video camera",
+  "ASK_BEFORE_RECOVER": "Chiedi prima di recuperare una chiamata",
+  "BEST_FRAME_RATE": "Miglior frame rate:",
+  "AUDIO_SETTINGS": "Impostazioni audio:",
+  "ECHO_CANCEL": "Cancellatore d'eco",
+  "NOISE_SUPPRESSION": "Soppressione del rumore",
+  "HIGHPASS_FILTER": "Highpass Filter",
+  "VIDEO_SETTINGS": "Impostazioni video:",
+  "REMOTE_ENCODER": "Abilita codificatore remoto dedicato.",
+  "AUTO_SPEED_RES": "Rileva in modo automatico la velocitĂ  e le impostazioni",
+  "RECHECK_BANDWIDTH": "Controlla la larghezza di banda per ogni chiamata in uscita",
+  "CHECK_NETWORK_SPEED": "Controllo della velocitĂ  di rete",
+  "VIDEO_QUALITY": "QualitĂ  video:",
+  "MAX_INCOMING_BANDWIDTH": "Massima larghezza di banda in ingresso:",
+  "MAX_OUTGOING_BANDWIDTH": "Massima larghezza di banda in uscita:",
+  "FACTORY_RESET": "Reset ai valori di default",
+  "SAVE_DEVICE_SETTINGS": "Salva le impostazioni dei dispositivi",
+  "BROWSER_COMPATIBILITY": "Verifica compatibilitĂ  browser.",
+  "REFRESH_MEDIA_DEVICES": "Aggiornamento dei dispositivi.",
+  "BROWSER_WITHOUT_WEBRTC": "Errore: il browser non supporta WebRTC.",
+  "CHECK_PERMISSION_MEDIA": "Verifica permessi dispositivi",
+  "CHECK_PROVISIONING_CONF": "Recupero della configurazione.",
+  "CHECK_LOGIN": "Verifica del login.",
+  "CHECK_CONNECTION_SPEED": "Verifica velocitĂ  connessione.",
+  "ERROR_PERMISSION_MEDIA": "Errore: permesso sui dispositivi negato",
+  "ERROR_PROVISIONING_CONF": "Errore: Recupero configurazione fallito.",
+  "PLEASE_WAIT": "Attendere prego..."
+}
+
index 04ef1963ee3213b03d46b9deb5d872f7ce82cc3c..898636d4e7c9dd394bcd214f9d5aed640f71f6a0 100644 (file)
@@ -2,19 +2,19 @@
   <ul class="nav nav-tabs" role="tablist" ng-init="activePane = 'members'">
     <li role="presentation" ng-class="{'active': activePane == 'members'}">
       <a ng-click="activePane = 'members'" href="">
-        Members
+        {{ 'CHAT_TITLE_MEMBERS' | translate}}
       </a>
     </li>
     <li role="presentation" ng-class="{'active': activePane == 'chat'}">
       <a ng-click="activePane = 'chat'" href="">
-        Chat
+        {{ 'CHAT_TITLE' | translate }}
       </a>
     </li>
   </ul>
 
   <div class="chat-members" ng-show="activePane == 'members'">
     <div ng-show="!members.length">
-      <p class="text-center text-muted">There are no members to show.</p>
+      <p class="text-center text-muted">{{ 'CHAT_NO_MEMBERS' | translate }}</p>
     </div>
 
     <div ng-repeat="member in members" class="chat-member-item" ng-class="{ opened: $index == openId }">
       <div class="admin-controls" ng-if="verto.data.confRole == 'moderator'" ng-show="$index == $parent.openId">
         <div>
           <div class="col-md-6 ctrl-section">
-            <h3>General</h3>
+            <h3>{{ 'CHAT_GENERAL' | translate }}</h3>
             <div class="group btn-group-justified">
-              <a href="" class="btn btn-xs" ng-click="confKick(member.id)" title="Kick">
+              <a href="" class="btn btn-xs" ng-click="confKick(member.id)" title="{{ 'CHAT_TITLE_KICK' | translate }}">
                 <i class="mdi-fw mdi-av-not-interested"></i>
-                Kick
+                {{ 'CHAT_KICK' | translate }}
               </a>
-              <a href="" class="btn btn-xs" ng-click="confVideoFloor(member.id)" title="Video Floor">
+              <a href="" class="btn btn-xs" ng-click="confVideoFloor(member.id)" title="{{ 'CHAT_TITLE_VIDEO_FLOOR' | translate }}">
                 <i class="mdi-fw mdi-action-aspect-ratio"></i>
-                Floor
+                {{ 'CHAT_FLOOR' | translate }}
               </a>
-              <a href="" class="btn btn-xs" ng-click="confTransfer(member.id)" title="Transfer">
+              <a href="" class="btn btn-xs" ng-click="confTransfer(member.id)" title="{{ 'CHAT_TITLE_TRANSFER' | translate }}">
                 <i class="mdi-fw mdi-communication-call-made"></i>
-                <span style="margin-left: -9px">Transfer</span>
+                <span style="margin-left: -9px">{{ 'CHAT_TRANSFER' | translate }}</span>
               </a>
             </div>
           </div>
 
           <div class="col-md-6 ctrl-section">
-            <h3>Banner</h3>
+            <h3>{{ 'CHAT_BANNER' | translate }}</h3>
             <div class="group btn-group-justified">
-              <a href="" class="btn btn-xs" ng-click="confBanner(member.id)" title="Set">
+              <a href="" class="btn btn-xs" ng-click="confBanner(member.id)" title="{{ 'CHAT_TITLE_SET' | translate }}">
                 <i class="mdi-fw mdi-toggle-radio-button-on"></i>
-                Set
+                {{ 'CHAT_SET' | translate }}
               </a>
-              <a href="" class="btn btn-xs" ng-click="confResetBanner(member.id)" title="Reset">
+              <a href="" class="btn btn-xs" ng-click="confResetBanner(member.id)" title="{{ 'CHAT_TITLE_RESET' | translate }}">
                 <i class="mdi-fw mdi-content-clear"></i>
-                Reset
+                {{ 'CHAT_RESET' | translate }}
               </a>
             </div>
           </div>
 
         <div>
           <div class="col-md-6 ctrl-section" ng-if="conf.canvasCount > 1">
-            <h3>Canvas</h3>
+            <h3>{{ 'CHAT_CANVAS' | translate }}</h3>
             <div class="group btn-group-justified">
-              <a href="" class="btn btn-xs" ng-click="confCanvasIn(member.id, 'prev')" title="Canvas In">
+              <a href="" class="btn btn-xs" ng-click="confCanvasIn(member.id, 'prev')" title="{{ 'CHAT_CANVAS_IN' | translate }}">
                 <i class="mdi-fw mdi-action-open-in-browser"></i>
-                Prev
+                {{ 'CHAT_PREV' | translate }}
               </a>
-              <a href="" class="btn btn-xs" ng-click="confCanvasIn(member.id)" title="Canvas In">
+              <a href="" class="btn btn-xs" ng-click="confCanvasIn(member.id)" title="{{ 'CHAT_CANVAS_IN' | translate }}">
                 <i class="mdi-fw mdi-action-open-in-browser"></i>
                 Id
               </a>
-              <a href="" class="btn btn-xs" ng-click="confCanvasIn(member.id, 'next')" title="Canvas In">
+              <a href="" class="btn btn-xs" ng-click="confCanvasIn(member.id, 'next')" title="{{ 'CHAT_CANVAS_IN' | translate }}">
                 <i class="mdi-fw mdi-action-open-in-browser"></i>
-                Next
+                {{ 'CHAT_NEXT' | translate }}
               </a>
             </div>
             <div class="group btn-group-justified">
-              <a href="" class="btn btn-xs" ng-click="confCanvasOut(member.id, 'prev')" title="Canvas Out">
+              <a href="" class="btn btn-xs" ng-click="confCanvasOut(member.id, 'prev')" title="{{ 'CHAT_CANVAS_OUT' | translate }}">
                 <i class="mdi-fw mdi-fw mdi-action-system-update-tv"></i>
-                Prev
+                {{ 'CHAT_PREV' | translate }}
               </a>
-              <a href="" class="btn btn-xs" ng-click="confCanvasOut(member.id)" title="Canvas Out">
+              <a href="" class="btn btn-xs" ng-click="confCanvasOut(member.id)" title="{{ 'CHAT_CANVAS_OUT' | translate }}">
                 <i class="mdi-fw mdi-fw mdi-action-system-update-tv"></i>
                 Id
               </a>
-              <a href="" class="btn btn-xs" ng-click="confCanvasOut(member.id, 'next')" title="Canvas Out">
+              <a href="" class="btn btn-xs" ng-click="confCanvasOut(member.id, 'next')" title="{{ 'CHAT_CANVAS_OUT' | translate }}">
                 <i class="mdi-fw mdi-fw mdi-action-system-update-tv"></i>
-                Next
+                {{ 'CHAT_NEXT' | translate }}
               </a>
             </div>
             <div class="group btn-group-justified">
-              <a href="" class="btn btn-xs" ng-click="confLayer(member.id, 'prev')" title="Layer">
+              <a href="" class="btn btn-xs" ng-click="confLayer(member.id, 'prev')" title="{{ 'CHAT_LAYER' | translate }}">
                 <i class="mdi-fw mdi-action-view-carousel"></i>
-                Prev
+                {{ 'CHAT_PREV' | translate }}
               </a>
-              <a href="" class="btn btn-xs" ng-click="confLayer(member.id)" title="Layer">
+              <a href="" class="btn btn-xs" ng-click="confLayer(member.id)" title="{{ 'CHAT_LAYER' | translate }}">
                 <i class="mdi-fw mdi-action-view-carousel"></i>
                 Id
               </a>
-              <a href="" class="btn btn-xs" ng-click="confLayer(member.id, 'next')" title="Layer">
+              <a href="" class="btn btn-xs" ng-click="confLayer(member.id, 'next')" title="{{ 'CHAT_LAYER' | translate }}">
                 <i class="mdi-fw mdi-action-view-carousel"></i>
-                Next
+                {{ 'CHAT_NEXT' | translate }}
               </a>
             </div>
           </div>
 
           <div class="col-md-6 ctrl-section">
-            <h3>Audio/Video</h3>
+            <h3>{{ 'CHAT_AUDIO_VIDEO' | translate }}</h3>
             <div class="group btn-group-justified">
-              <a href="" class="btn btn-xs" ng-click="confMuteMic(member.id)" title="Mute/Unmute Mic">
+              <a href="" class="btn btn-xs" ng-click="confMuteMic(member.id)" title="{{ 'CHAT_TITLE_MUTE_UNMUTE_MIC' | translate }}">
                 <i class="mdi-fw" ng-class="member.status.audio.muted ? 'mdi-av-mic-off' : 'mdi-av-mic'"></i>
-                {{ member.status.audio.muted ? 'Unmute' : 'Mute' }}
+                {{ member.status.audio.muted ? 'CHAT_UNMUTE_MIC' : 'CHAT_MUTE_MIC' | translate }}
               </a>
-              <a href="" ng-class="{ 'disabled': !member.status.video }" class="btn btn-xs" ng-click="confMuteVideo(member.id)" title="Mute/Unmute Video">
+              <a href="" ng-class="{ 'disabled': !member.status.video }" class="btn btn-xs" ng-click="confMuteVideo(member.id)" title="{{ 'CHAT_TITLE_MUTE_UNMUTE_VIDEO' | translate }}">
                 <i class="mdi-fw" ng-class="member.status.video.muted ? 'mdi-av-videocam-off' : 'mdi-av-videocam'"></i>
-                {{ member.status.video.muted ? 'Unmute' : 'Mute' }}
+                {{ member.status.video.muted ? 'CHAT_UNMUTE_MIC' : 'CHAT_MUTE_MIC' | translate }}
               </a>
             </div>
             <div class="group btn-group-justified">
   <div class="chat-history" ng-show="activePane == 'chat'">
     <div class="chat-messages">
       <div class="chat-message" ng-show="!messages.length">
-        <p class="text-center text-muted">There are no messages to show.</p>
+        <p class="text-center text-muted">{{ 'CHAT_NO_MESSAGES' | translate }}</p>
       </div>
       <div class="chat-message" ng-repeat="message in messages" title="Sent at {{ message.created_at|date }}.">
         <div class="chat-message-metadata">{{ message.from }}:</div>
     <div class="chat-message-input">
       <form ng-submit="send()" >
         <div class="chat-message-input-group">
-          <textarea ng-model="message" ng-keydown="($event.keyCode == 13 && $event.shiftKey !== true) && send($event)" required="required" class="form-control input-sm" placeholder="Type your message here..."></textarea>
+          <textarea ng-model="message" ng-keydown="($event.keyCode == 13 && $event.shiftKey !== true) && send($event)" required="required" class="form-control input-sm" placeholder="{{ 'CHAT_TYPE_MESSAGE' | translate }}"></textarea>
           <button class="btn btn-success btn-sm" type="submit">
-            Send
+            {{ 'CHAT_SEND_MESSAGE' | translate }}
             <span class="mdi-navigation-arrow-forward chat-message-input-group-icon-button"></span>
           </button>
         </div>
index 45e129b20ac45e198fdde3e99ab979a1cdf8d39d..86d8c80e7ec2f4ddc17d17068ec9bb13ae0557ab 100644 (file)
@@ -1,5 +1,5 @@
 <div class="modal-header">
-  <h3 class="modal-title">Contributors</h3>
+  <h3 class="modal-title">{{ 'TITLE_CONTRIBUTORS' | translate}}</h3>
 </div>
 <div class="modal-body">
   <ul class="contributors">
index a279e261674464ce62d38efd6f5c7743b108a13a..2069daefae4e4d063c88303a65d6f489c22b1eb5 100644 (file)
@@ -1,9 +1,9 @@
 <div ng-show="loading">
-  <h2 ng-show="cancelled" style="margin-top: 4%;" class="text-center">Cancelling...</h2>
+  <h2 ng-show="cancelled" style="margin-top: 4%;" class="text-center">{{ 'CANCELLING' | translate}}</h2>
   <span ng-show="!cancelled">
-      <h2 style="margin-top: 4%;" class="text-center">Determining your speed...</h2>
+      <h2 style="margin-top: 4%;" class="text-center">{{ 'DETERMINING_SPEED' | translate}}</h2>
       <h4 style="margin-top: 4%;" class="text-center">
-          Calling to {{ dialpadNumber }}...
+          {{ 'CALLING_TO' | translate}} {{ dialpadNumber }}...
           <a class="btn btn-sm btn-raised btn-warning" ng-click="cancel()">
               Cancel<div class="ripple-container"></div>
           </a>
@@ -19,7 +19,7 @@
       <div class="panel-heading">
         <div class="panel-title">
             <i class="mdi-navigation-arrow-back back-icon" ng-click="viewCallsList()" ng-if="call_list"></i>
-            <span ng-if="!call_list">Call History</span>
+            <span ng-if="!call_list">{{ 'CALL_HISTORY' | translate}}</span>
             <span ng-if="call_list">{{ call_list[0].number }}</span>
 
             <span class="pull-right pull-right-margin dropdown">
                 <i class="mdi-navigation-more-vert"></i>
               </a>
               <ul class="dropdown-menu">
-                  <li><a href="" ng-click="clearCallHistory()">Clear History</a></li>
+                  <li><a href="" ng-click="clearCallHistory()">{{ 'CLEAR_CALL_HISTORY' | translate}}</a></li>
               </ul>
             </span>
         </div>
       </div>
       <ul class="call-history">
         <div ng-if="!has_history">
-          <p class="text-center text-muted">No history calls.</p>
+          <p class="text-center text-muted">{{ 'NO_CALL_HISTORY' | translate}}</p>
         </div>
 
         <li ng-repeat="number in history_control track by number" ng-if="!call_list">
@@ -72,7 +72,7 @@
               <i class="mdi-action-settings-phone"></i>
             </a>
           </span>
-          <input name="dialpadnumber" type="text" class="form-control text-center" placeholder="Enter an extension" ng-model="dialpadNumber" autofocus/>
+          <input name="dialpadnumber" type="text" class="form-control text-center" placeholder="{{ 'ENTER_EXTENSION' | translate}}" ng-model="dialpadNumber" autofocus/>
           <span class="input-group-btn">
             <a href="" ng-click="backspace()">
               <i class="mdi-content-backspace"></i>
             </div>
           </div>
           <div class="form-group text-center">
-            <button type="submit" class="btn btn-success btn-fab" ng-click="call(dialpadNumber)" title="Call Extension">
+            <button type="submit" class="btn btn-success btn-fab" ng-click="call(dialpadNumber)" title="{{ 'CALL_EXTENSION' | translate}}">
               <i class="mdi-communication-call"></i>
             </button>
           </div>
index 1d201888854ff663fbba2f5f77dfd3a528caaa23..d8284c2163076a63befab908262143d2c4cc6011 100644 (file)
@@ -2,59 +2,59 @@
   <div class="col-md-4 col-xs-12 col-sm-12 centered-block">
     <div class="panel panel-default shadow-z-2">
       <div class="panel-body">
-        <h3>Login</h3>
+        <h3>{{ 'LOGIN' | translate}}</h3>
 
 
         <div ng-show="form.$submitted && form.$invalid" class="alert alert-danger">
-          <p>Verify the fields bellow and try again.</p>
+          <p>{{ 'INVALID_LOGIN_FIELDS' | translate }}</p>
         </div>
 
         <form name="form" class="css-form" novalidate ng-init="advanced = false">
           <div class="form-group {{ (((!form.name.$pristine || form.$submitted) && !form.name.$valid) ? 'has-error': '') }}">
-            <label class="control-label" for="login-name">Name</label>
-            <input type="text" name="name" class="form-control" id="login-name" placeholder="Your name" required="" ng-model="verto.data.name" autofocus>
+            <label class="control-label" for="login-name">{{ 'NAME' | translate}}</label>
+            <input type="text" name="name" class="form-control" id="login-name" placeholder="{{ 'YOUR_NAME' | translate}}" required="" ng-model="verto.data.name" autofocus>
           </div>
           <div class="form-group {{ (((!form.email.$pristine || form.$submitted) && !form.email.$valid) ? 'has-error': '') }}">
-            <label class="control-label" for="login-email">Email</label>
-            <input type="email" name="email" class="form-control" id="login-email" placeholder="Your email" required="" ng-model="verto.data.email" ng-model-options="{debounce: 250}">
+            <label class="control-label" for="login-email">{{ 'EMAIL' | translate }}</label>
+            <input type="email" name="email" class="form-control" id="login-email" placeholder="{{ 'YOUR_EMAIL' | translate}}" required="" ng-model="verto.data.email" ng-model-options="{debounce: 250}">
           </div>
 
           <div class="form-group" ng-hide="!advanced">
-              <label class="control-label" for="login-user">User</label>
-            <input type="text" class="form-control" id="login-user" placeholder="User" ng-model="verto.data.login">
+              <label class="control-label" for="login-user">{{ 'USER' | translate}}</label>
+            <input type="text" class="form-control" id="login-user" placeholder="{{ 'USER' | translate}}" ng-model="verto.data.login">
           </div>
           <div class="form-group" ng-hide="!advanced">
-            <label class="control-label" for="login-password">Password</label>
-            <input type="password" class="form-control" id="login-password" placeholder="Password" ng-model="verto.data.password">
+            <label class="control-label" for="login-password">{{ 'PASSWORD' | translate}}</label>
+            <input type="password" class="form-control" id="login-password" placeholder={{ 'PASSWORD' | translate}} ng-model="verto.data.password">
           </div>
 
           <div class="form-group" ng-hide="!advanced">
-            <label class="control-label" for="login-callerid">Caller ID</label>
-            <input type="text" class="form-control" id="login-callerid" placeholder="Caller ID" ng-model="verto.data.callerid">
+            <label class="control-label" for="login-callerid">{{ 'CALLER_ID' | translate}}</label>
+            <input type="text" class="form-control" id="login-callerid" placeholder="{{ 'CALLER_ID' | translate}}" ng-model="verto.data.callerid">
           </div>
 
           <div class="form-group" ng-hide="!advanced">
-            <label class="control-label" for="login-hostname">Hostname</label>
-            <input type="text" class="form-control" id="login-hostname" placeholder="Hostname" ng-model="verto.data.hostname">
+            <label class="control-label" for="login-hostname">{{ 'HOSTNAME' | translate}}</label>
+            <input type="text" class="form-control" id="login-hostname" placeholder="{{ 'HOSTNAME' | translate}}" ng-model="verto.data.hostname">
           </div>
           <div class="form-group" ng-hide="!advanced">
-            <label class="control-label" for="login-wsurl">Websocket URL</label>
-            <input type="text" class="form-control" id="login-wsurl" placeholder="Websocket URL" ng-model="verto.data.wsURL">
+            <label class="control-label" for="login-wsurl">{{ 'WEBSOCKET_URL' | translate}}</label>
+            <input type="text" class="form-control" id="login-wsurl" placeholder="{{ 'WEBSOCKET_URL' | translate}}" ng-model="verto.data.wsURL">
           </div>
 
           <div class="form-group hide">
-            <label for="login-login">Login</label>
-            <input type="text" class="form-control" id="login-login" placeholder="Login" ng-model="verto.data.login">
+            <label for="login-login">{{ 'LOGIN' | translate}}</label>
+            <input type="text" class="form-control" id="login-login" placeholder="{{ 'LOGIN' | translate}}" ng-model="verto.data.login">
           </div>
           <div class="form-group hide">
             <label for="login-password">Password</label>
-            <input type="text" class="form-control" id="login-password" placeholder="Password" ng-model="verto.data.password">
+            <input type="text" class="form-control" id="login-password" placeholder="{{ 'PASSWORD' | translate}}" ng-model="verto.data.password">
           </div>
 
 
          <div class="form-group text-right">
-            <div><a style="margin-top: 13px;" href="" ng-click="advanced = !advanced" class="pull-left">Settings</a></div>
-           <div><button type="submit" class="btn btn-success" ng-click="(form.$valid && login())">Login</button></div>
+            <div><a style="margin-top: 13px;" href="" ng-click="advanced = !advanced" class="pull-left">{{ 'SETTINGS' | translate}}</a></div>
+           <div><button type="submit" class="btn btn-success" ng-click="(form.$valid && login())">{{ 'LOGIN' | translate}}</button></div>
            <div ng-if="googlelogin" class="googlelogin">
              <google-plus-signin clientid="{{src/partials/login.html}}" class="center">
              </google-plus-signin>
index e4d190fb12546d53bec0d209fb8be21ae0eeecf6..725fb6e6285afca1b2d9846097cc9aa27272500f 100644 (file)
@@ -2,13 +2,13 @@
   <div class="container-fluid">
     <div class="https-untrusted navbar-center" ng-show="!safeProtocol">
       <div class="https-message">
-        This Connection is Untrusted.
+        {{ 'MESSAGE_CONNECTION_UNTRUSTED' | translate }}
       </div>
     </div>
 
     <div class="navbar-header">
       <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
-        <span class="sr-only">Toggle navigation</span>
+        <span class="sr-only">{{ 'MESSAGE_TOGGLE_NAVIGATION' | translate }}</span>
         <span class="icon-bar"></span>
         <span class="icon-bar"></span>
         <span class="icon-bar"></span>
             <span class="caret"></span>
           </a>
           <ul class="dropdown-menu drop-net-info" role="menu" ng-click="$event.stopPropagation()">
-            <li><a class="title">Bandwidth Info</a></li>
-            <li><a>Outgoing: {{bandUp}} Kbps</a></li>
-            <li><a>Incoming: {{bandDown}} Kbps</a></li>
-            <li><a>Video Resolution: {{vidRes}}</a></li>
+            <li><a class="title">{{ 'BANDWIDTH_INFO' | translate }}</a></li>
+            <li><a>{{ 'BANDWIDTH_INFO_OUTGOING' | translate }} {{bandUp}} Kbps</a></li>
+            <li><a>{{ 'BANDWIDTH_INFO_INCOMING' | translate }} {{bandDown}} Kbps</a></li>
+            <li><a>{{ 'BANDWIDTH_INFO_VIDEO_RES' | translate }} {{vidRes}}</a></li>
           </ul>
         </li>
         <li>
@@ -38,7 +38,7 @@
         </li>
         <li>
           <a href="" class="incall-number" ng-show="storage.data.called_number">
-              {{ storage.data.called_number && storage.data.userStatus != 'connected' ? 'Last Call: ' : 'In Call: '  }} {{ storage.data.called_number  }}
+              {{ storage.data.called_number && storage.data.userStatus != 'connected' ?  'LAST_CALL' : 'IN_CALL' | translate  }} {{ storage.data.called_number  }}
           </a>
         </li>
         <li class="navbar-item-icon" ng-show="verto.data.connected">
             <span class="caret"></span>
           </a>
           <ul class="dropdown-menu" role="menu">
-            <li><a href="#/?sessid=random" target="_blank">Open New Window</a></li>
-            <li><a href="" ng-click="openModal('partials/modal_logininfo.html', 'ModalLoginInformationController')">Change Login Information</a></li>
+            <li><a href="#/?sessid=random" target="_blank">{{ 'OPEN_NEW_WINDOW' | translate}}</a></li>
+            <li><a href="" ng-click="openModal('partials/modal_logininfo.html', 'ModalLoginInformationController')">{{ 'CHANGE_LOGIN_INFO' | translate}}</a></li>
             <!--<li><a href="#">View Device Settings</a></li>-->
-            <li><a href="" ng-click="logout()">Logout</a></li>
+            <li><a href="" ng-click="logout()">{{ 'LOGOUT' | translate}}</a></li>
           </ul>
         </li>
         <li class="navbar-item-icon">
@@ -75,9 +75,9 @@
             <span class="caret"></span>
           </a>
           <ul class="dropdown-menu" role="menu">
-            <li><a href="" ng-click="showAbout()">About</a></li>
-            <li><a href="" ng-click="showContributors()">Contributors</a></li>
-            <li><a href="https://freeswitch.org/confluence/x/MQCT" target="_blank">Help</a></li>
+            <li><a href="" ng-click="showAbout()">{{ 'ABOUT' | translate}}</a></li>
+            <li><a href="" ng-click="showContributors()">{{ 'CONTRIBUTORS' | translate}}</a></li>
+            <li><a href="https://freeswitch.org/confluence/x/MQCT" target="_blank">{{ 'HELP' | translate}}</a></li>
           </ul>
         </li>
 
index efb964f4470697f87fc46e14285d92342238b1ce..ae69611dcffa2d0c03caf4c195aa730257511e29 100644 (file)
@@ -1,35 +1,35 @@
 <div class="modal-header">
-  <h3 class="modal-title">Login Information</h3>
+  <h3 class="modal-title">{{ 'LOGIN_INFORMATION' | translate}}</h3>
 </div>
 <div class="modal-body">
 
   <div class="form-group">
-    <label for="name">Name:</label>
+    <label for="name">{{ 'NAME' | translate}}</label>
     <input type="text" name="name" class="form-control" ng-model="storage.data.name" ng-value="storage.data.name"/>
   </div>
   
   <div class="form-group">
-    <label for="email">Email:</label>
+    <label for="email">{{ 'EMAIL' | translate}}</label>
     <input type="text" name="email" class="form-control" ng-model="storage.data.email" ng-value="storage.data.email"/>
   </div>
 
   <div class="form-group">
-    <label class="control-label" for="user">User</label>
+    <label class="control-label" for="user">{{ 'USER' | translate}}</label>
     <input type="text" class="form-control" id="user" placeholder="User" ng-model="storage.data.login">
   </div>
   
   <div class="form-group">
-    <label class="control-label" for="password">Password</label>
+    <label class="control-label" for="password">{{ 'PASSWORD' | translate}}</label>
     <input type="password" class="form-control" id="password" placeholder="Password" ng-model="verto.data.password">
   </div>
 
   <div class="form-group">
-    <label class="control-label" for="callerid">Caller ID</label>
+    <label class="control-label" for="callerid">{{ 'CALLER_ID' | translate}}</label>
     <input type="text" class="form-control" id="callerid" placeholder="Caller ID" ng-model="verto.data.callerid">
   </div>
 
 </div>
 <div class="modal-footer">
   <!-- <button class="btn btn-primary" ng-click="cancel()">Cancel</button> -->
-  <button class="btn btn-primary" ng-click="ok()">Save Login Information</button>
+  <button class="btn btn-primary" ng-click="ok()">{{ 'SAVE_LOGIN_INFORMATION' | translate}}</button>
 </div>
index 76e3b68744461aec8148da6b58c29212fc2f667f..9c58c30d0bc2b3652db851f00edf81bf4c08d814 100644 (file)
@@ -2,7 +2,7 @@
   <div class="col-md-4 col-sm-12 col-xs-12 centered-block">
     <div class="panel panel-material-blue-900 shadow-z-2 ">
       <div class="panel-heading">
-        <h3 class="panel-title text-center">Setup your camera and microphone settings</h3>
+        <h3 class="panel-title text-center">{{ 'TITLE_PREVIEW_SETTINGS' | translate }}</h3>
       </div>
       <div class="panel-body">
         <div class="preview-wrapper">
         </div>
         <form name="form">
           <div class="form-group col-md-5 col-sm-12 col-xs-12" ng-show="true">
-            <label for="settings-camera">Camera:</label>
+            <label for="settings-camera">{{ 'CAMERA_SETTINGS' | translate }}</label>
             <select name="camera" id="settings-camera" class="form-control" ng-model="storage.data.selectedVideo"
                     ng-options="item.id as item.label for item in verto.data.videoDevices" ng-change="localVideo()" >
             </select>
           </div>
           <div class="form-group col-md-5 col-sm-12 col-xs-12" ng-show="true">
-            <label for="settings-microphone">Microphone:</label>
+            <label for="settings-microphone">{{ 'MIC_SETTINGS' | translate }}</label>
             <select name="microphone" id="settings-microphone" class="form-control" ng-model="storage.data.selectedAudio"
                     ng-options="item.id as item.label for item in verto.data.audioDevices" ng-change="localVideo()">
             </select>
@@ -36,8 +36,8 @@
           </a>
 
           <div class="form-group text-center">
-            <button type="submit" class="btn btn-success" ng-click="endPreview()" title="Save">
-              Save
+            <button type="submit" class="btn btn-success" ng-click="endPreview()" title="{{ 'SAVE' | translate }}">
+              {{ 'SAVE' | translate }}
             </button>
           </div>
         </form>
index 4fc7a2010c2d810bfe580f53895750251e97ffa2..9848fa4e5895075914830fd0dc8751b330a39ee1 100644 (file)
@@ -3,21 +3,21 @@
     <div class="col-md-4">
 
       <div class="form-group" ng-show="mydata.useVideo">
-        <label for="settings-camera">Camera:</label>
+        <label for="settings-camera">{{ 'CAMERA_SETTINGS' | translate }}</label>
         <select name="camera" id="settings-camera" class="form-control"
                 ng-model="mydata.selectedVideo" ng-options="item.id as item.label for item in verto.data.videoDevices">
         </select>
       </div>
 
       <div class="form-group" ng-show="mydata.useVideo">
-        <label for="settings-share-device">Share device:</label>
+        <label for="settings-share-device">{{ 'SHARE_DEVICE' | translate }}</label>
         <select name="share-device" id="settings-share-device" class="form-control"
                 ng-model="mydata.selectedShare" ng-options="item.id as item.label for item in verto.data.shareDevices">
         </select>
       </div>
 
       <div class="form-group">
-        <label for="settings-microphone">Microphone:</label>
+        <label for="settings-microphone">{{ 'MIC_SETTINGS' | translate}}</label>
         <select name="microphone" id="settings-microphone" class="form-control"
                 ng-model="mydata.selectedAudio" ng-options="item.id as item.label for item in verto.data.audioDevices">
         </select>
@@ -25,9 +25,9 @@
 
       <div class="form-group">
         <label for="settings-microphone">
-          Speaker:
+          {{ 'SPEAKER' | translate }}
           <span ng-show="!speakerFeature" class="unsupported">
-            Your browser doesn't seem to support this feature
+            {{ 'SPEAKER_FEATURE' | translate }}
           </span>
         </label>
         <select name="microphone" id="settings-microphone" class="form-control" ng-disabled="!speakerFeature"
       </div>
 
       <div class="form-group">
-        <label for="settings-framerate">Best frame rate:</label>
+        <label for="settings-framerate">{{ 'BEST_FRAME_RATE' | translate }}</label>
         <select name="settings-framerate" id="settings-framerate" class="form-control"
                 ng-model="mydata.bestFrameRate"
                 ng-options="item.id as item.label for item in verto.framerate"></select>
       </div>
 
-      <a class="btn btn-primary" href="" ng-click="showPreview()">Preview Settings</a>
-      <a class="btn btn-primary" href="" ng-click="refreshDeviceList()">Refresh device list</a>
+      <a class="btn btn-primary" href="" ng-click="showPreview()">{{ 'PREVIEW_SETTINGS' | translate }}</a>
+      <a class="btn btn-primary" href="" ng-click="refreshDeviceList()">{{ 'REFRESH_DEVICE_LIST' | translate }}</a>
     </div>
     <div class="col-md-4">
       <div class="form-group">
-        <label for="settings-microphone">General settings:</label>
+        <label for="settings-microphone">{{ 'GENERAL_SETTINGS' | translate }}</label>
         <div class="checkbox">
           <label>
             <input type="checkbox" name="use_video" value="mydata.useVideo" ng-model="mydata.useVideo">
-            Use Video
+            <span ng-bind="'USE_VIDEO' | translate"></span>
           </label>
         </div>
         <div class="checkbox">
           <label>
             <input type="checkbox" name="use_stereo_audio" ng-value="mydata.useStereo" ng-model="mydata.useStereo">
-            Stereo Audio
+            <span ng-bind="'USE_STEREO_AUDIO' | translate"></span>
           </label>
         </div>
         <div class="checkbox">
           <label>
             <input type="checkbox" name="use_stun" ng-value="mydata.useSTUN" ng-model="mydata.useSTUN">
-            Use STUN
+            <span ng-bind="'USE_STUN' | translate"></span>
           </label>
         </div>
         <div class="checkbox">
           <label>
             <input type="checkbox" name="mirror_input" ng-value="mydata.mirrorInput" ng-model="mydata.mirrorInput">
-            Scale Remote Video To Match Camera Resolution
+            <span ng-bind="'SCALE_VIDEO' | translate"></span>
           </label>
         </div>
         <div class="checkbox">
           <label>
             <input type="checkbox" name="ask_recover_call" ng-value="mydata.askRecoverCall" ng-model="mydata.askRecoverCall">
-            Ask before recovering call
+            <span ng-bind="'ASK_BEFORE_RECOVER' | translate"></span>
           </label>
         </div>
 
         <div class="form-group">
-          <label for="settings-microphone">Audio settings:</label>
+          <label for="settings-microphone">{{ 'AUDIO_SETTINGS' | translate }}</label>
           <div class="checkbox">
             <label>
               <input type="checkbox" name="googEchoCancellation" value="mydata.googEchoCancellation" ng-model="mydata.googEchoCancellation">
-              Echo Cancellation
+              <span ng-bind="'ECHO_CANCEL' | translate"></span>
             </label>
           </div>
           <div class="checkbox">
             <label>
               <input type="checkbox" name="googNoiseSuppression" value="mydata.googNoiseSuppression" ng-model="mydata.googNoiseSuppression">
-              Noise Suppression
+              <span ng-bind="'NOISE_SUPPRESSION' | translate"></span>
             </label>
           </div>
           <div class="checkbox">
             <label>
               <input type="checkbox" name="googHighpassFilter" value="mydata.googHighpassFilter" ng-model="mydata.googHighpassFilter">
-              Highpass Filter
+              <span ng-bind="'HIGHPASS_FILTER' | translate"></span>
             </label>
           </div>
         </div>
     <div class="col-md-4">
 
       <div class="form-group">
-        <label>Video settings:</label> <br>
+        <label>{{ 'VIDEO_SETTINGS' | translate }}</label> <br>
         <input type="hidden" name="use_dedenc" ng-value="mydata.useDedenc" ng-model="mydata.useDedenc">
 
 
         <div ng-show="mydata.useDedenc" class="dedicated_encoder">
-          <p>Dedicated Remote Encoder enabled.</b>
+          <p>{{ 'REMOTE_ENCODER' | translate }}</b>
         </div>
 
         <div class="checkbox">
           <label>
             <input type="checkbox" ng-model="mydata.autoBand" ng-change="checkAutoBand(mydata.autoBand)">
-            Automatically determine speed and resolution settings
+            <span ng-bind="'AUTO_SPEED_RES' | translate"></span>
           </label>
         </div>
 
         <div class="checkbox" ng-show="mydata.autoBand">
           <label>
             <input type="checkbox" ng-model="mydata.testSpeedJoin">
-            Recheck bandwidth before each outgoing call
+            <span ng-bind="'RECHECK_BANDWIDTH' | translate"></span>
           </label>
         </div>
 
-        <a ng-show="mydata.autoBand" class="btn btn-primary" href="" ng-click="testSpeed()">Check Network Speed</a> <span ng-bind="speedMsg"></span>
+        <a ng-show="mydata.autoBand" class="btn btn-primary" href="" ng-click="testSpeed()">{{ 'CHECK_NETWORK_SPEED' | translate }}</a> <span ng-bind="speedMsg"></span>
 
         <div ng-show="!mydata.autoBand">
-          <label for="video-quality">Video quality:</label>
+          <label for="video-quality">{{ 'VIDEO_QUALITY' | translate }}</label>
           <select name="video_quality" id="video-quality" class="form-control"
                   ng-disabled="mydata.autoBand"
                   ng-model="mydata.vidQual"
         </div>
 
         <div ng-show="!mydata.autoBand">
-          <label for="incoming-bandwidth">Max incoming bandwidth:</label>
+          <label for="incoming-bandwidth">{{ 'MAX_INCOMING_BANDWIDTH' | translate }}</label>
           <select name="incoming_bandwidth" id="incoming-bandwidth" class="form-control"
                   ng-model="mydata.incomingBandwidth"
            ng-change="checkUseDedRemoteEncoder(mydata.incomingBandwidth)"
         </div>
 
         <div ng-show="!mydata.autoBand">
-          <label for="outgoing-bandwidth">Max outgoing bandwidth:</label>
+          <label for="outgoing-bandwidth">{{ 'MAX_OUTGOING_BANDWIDTH' | translate }}</label>
           <select name="outgoing_bandwidth" id="outgoing-bandwidth" class="form-control"
                   ng-model="mydata.outgoingBandwidth"
                   ng-options="item.id as item.label for item in verto.bandwidth"></select>
index 993999ec3a47ab81ecefaefa658b965a94f9e631..a06a9432ad5a836dbbd05bfb9baf8903894881d9 100644 (file)
@@ -2,14 +2,14 @@
   <div class="col-md-6 centered-block">
     <div class="card">
       <div class="card-body text-center">
-       <h2>Loading</h2>
+       <h2>{{ 'LOADING' | translate }}</h2>
        <div class="progress progress-striped active">
          <div class="progress-bar" ng-class="{'progress-bar-danger': interrupt_next}" style="width: {{ progress_percentage }}%"></div>
        </div>
        <div ng-bind="message"></div>
        
        <div class="splash-errors" ng-if="errors.length">
-         <h4>Errors</h4>
+         <h4>{{ 'ERRORS' | translate }}</h4>
          <ul ng-repeat="error in errors">
            <li>{{ ::error }}</li>
          </ul>
index 5b83e19d5e3ea85ee4e0856498ade20105a7c8be..64bc778aac18d0ac628165578cf61636496c37e3 100644 (file)
@@ -2,28 +2,28 @@
   <div class="video-wrapper">
     <div class="video-hover-buttons" ng-show="verto.data.callState == 'active' && !watcher">
       <div id="moderator-tools" ng-show="verto.data.confRole == 'moderator'">
-        <button tooltip-placement="bottom" tooltip-title="Play" uib-tooltip="Play"
+        <button tooltip-placement="bottom" tooltip-title="{{'MESSAGE_PLAY' | translate}}"  uib-tooltip="{{'MESSAGE_PLAY' | translate}}"
                 class="btn btn-material-blue-900" ng-click="play()">
         <i class="mdi-av-play-circle-outline"></i>
       </button>
-      <button tooltip-placement="bottom" tooltip-title="Stop" uib-tooltip="Stop"
+      <button tooltip-placement="bottom" tooltip-title="{{'MESSAGE_STOP' | translate}}" uib-tooltip="{{'MESSAGE_STOP' | translate}}"
               class="btn btn-material-blue-900" ng-click="stop()">
         <i class="mdi-av-stop"></i>
       </button>
-      <button tooltip-placement="bottom" tooltip-title="Record" uib-tooltip="Record"
+      <button tooltip-placement="bottom" tooltip-title="{{'MESSAGE_RECORD' | translate}}" uib-tooltip="{{'MESSAGE_RECORD' | translate}}"
               class="btn btn-material-blue-900" ng-click="record()">
         <i class="mdi-toggle-radio-button-on"></i>
       </button>
-      <button tooltip-placement="bottom" tooltip-title="Stop Record" uib-tooltip="Stop Record"
+      <button tooltip-placement="bottom" tooltip-title="{{'MESSAGE_STOP_RECORD' | translate}}" uib-tooltip="{{'MESSAGE_STOP_RECORD' | translate}}"
               class="btn btn-material-blue-900" ng-click="stopRecord()">
         <i class="mdi-image-switch-camera"></i>
       </button>
-      <button tooltip-placement="bottom" tooltip-title="Snapshot" uib-tooltip="Snapshot"
+      <button tooltip-placement="bottom" tooltip-title="{{'MESSAGE_SNAPSHOT' | translate}}" uib-tooltip="{{'MESSAGE_SNAPSHOT' | translate}}"
               tooltip-lazy="false" class="btn btn-material-blue-900" ng-click="snapshot()">
         <i class="mdi-image-photo-camera"></i>
       </button>
       <div class="btn-group">
-        <button tooltip-placement="bottom" tooltip-title="Video Mode" uib-tooltip="Video Mode"
+        <button tooltip-placement="bottom" tooltip-title="{{'MESSAGE_VIDEO_MODE' | translate}}" uib-tooltip="{{'MESSAGE_VIDEO_MODE' | translate}}"
                 type="button" class="btn btn-material-blue-900 dropdown-toggle"
                 data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
           <i class="mdi-action-view-module"></i>
       </div>
       </div>
       <div class="user-tools">
-        <button tooltip-placement="bottom" tooltip-title="(un)Mute Mic" uib-tooltip="(un)Mute Mic"
+        <button tooltip-placement="bottom" tooltip-title="{{'MESSAGE_MUTE_MIC' | translate}}" uib-tooltip="{{'MESSAGE_MUTE_MIC' | translate}}"
                 class="btn btn-material-blue-900" ng-click="muteMic(cbMuteMic)">
           <i class="" ng-class="{'mdi-av-mic': !verto.data.mutedMic, 'mdi-av-mic-off': verto.data.mutedMic}"></i>
         </button>
-        <button tooltip-placement="bottom" tooltip-title="(un)Mute Video" uib-tooltip="(un)Mute Video"
+        <button tooltip-placement="bottom" tooltip-title="{{'MESSAGE_MUTE_MIC' | translate}}" uib-tooltip="{{'MESSAGE_MUTE_MIC' | translate}}"
                 class="btn btn-material-blue-900" ng-click="muteVideo(cbMuteVideo)" ng-if="verto.data.canVideo">
           <i class="" ng-class="{'mdi-av-videocam': !verto.data.mutedVideo, 'mdi-av-videocam-off': verto.data.mutedVideo}"></i>
         </button>
-        <button tooltip-placement="bottom" tooltip-title="Toggle Fullscreen Mode" uib-tooltip="Toggle Fullscreen Mode"
+        <button tooltip-placement="bottom" tooltip-title="{{'MESSAGE_FULLSCREEN' | translate}}" uib-tooltip="{{'MESSAGE_FULLSCREEN' | translate}}"
                 class="btn btn-material-blue-900" ng-click="goFullscreen()">
           <i class="" ng-class="{'mdi-navigation-fullscreen': !fullscreenEnabled, 'mdi-navigation-fullscreen-exit': fullscreenEnabled}"></i>
         </button>
-        <button tooltip-placement="bottom" tooltip-title="Screenshare" uib-tooltip="Screenshare"
+        <button tooltip-placement="bottom" tooltip-title="{{'MESSAGE_SCREENSHARE' | translate}}" uib-tooltip="{{'MESSAGE_SCREENSHARE' | translate}}"
                 class="btn btn-material-blue-900" ng-click="screenshare()">
           <i class="mdi-hardware-desktop-windows"></i>
         </button>
-        <button tooltip-placement="bottom" tooltip-title="Open/Close Chat" uib-tooltip="Open/Close Chat"
+        <button tooltip-placement="bottom" tooltip-title="{{'MESSAGE_OPEN_CLOSE_CHAT' | translate}}" uib-tooltip="{{'MESSAGE_OPEN_CLOSE_CHAT' | translate}}"
                 class="btn btn-material-blue-900" ng-click="toggleChat()" ng-show="fullscreenEnabled">
           <i class="mdi-communication-chat"></i>
         </button>
         <div class="btn-group">
-          <button tooltip-placement="bottom" tooltip-title="Speaker" uib-tooltips="Speaker" type="button" class="btn btn-material-blue-900 dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+          <button tooltip-placement="bottom" tooltip-title="{{'MESSAGE_SPEAKER' | translate}}" uib-tooltips="{{'MESSAGE_SPEAKER' | translate}}" type="button" class="btn btn-material-blue-900 dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
             <i class="mdi-hardware-headset"></i>
             <span class="caret"></span>
           </button>
@@ -69,7 +69,7 @@
           </ul>
         </div>
         <div class="btn-group" ng-show="conf.canvasCount > 1">
-          <button tooltip-placement="bottom" tooltip-title="Popup" uib-tooltips="Popup" type="button" class="btn btn-material-blue-900 dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+          <button tooltip-placement="bottom" tooltip-title="{{'MESSAGE_POPUP' | translate}}" uib-tooltips="{{'MESSAGE_POPUP' | translate}}" type="button" class="btn btn-material-blue-900 dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
             <i class="mdi-image-filter-none"></i>
             <span class="caret"></span>
           </button>
@@ -96,9 +96,9 @@
           </div>
         </div>
         <div class="col-md-6 col-xs-6 text-right">
-          <button class="btn btn-danger" ng-click="hangup()">
+          <button class="btn btn-danger" ng-click="hangup()" translate>
             <i class="mdi-communication-call-end"></i>
-            {{ watcher ? 'Close' : 'End Call' }}
+            {{ watcher ? 'BUTTON_CLOSE' : 'BUTTON_END_CALL' }}
           </button>
         </div>
       </div>
index 40c2b6951bf3652c3381875de648c335b9c0938d..ae77d000e752e28cb30b7c7cd91d2ee0ebe96342 100644 (file)
@@ -2,8 +2,8 @@
 
   angular
     .module('storageService')
-    .service('splashscreen', ['$rootScope', '$q', 'storage', 'config', 'verto',
-      function($rootScope, $q, storage, config, verto) {
+    .service('splashscreen', ['$rootScope', '$q', 'storage', 'config', 'verto', '$translate',
+      function($rootScope, $q, storage, config, verto, $translate) {
 
         var checkBrowser = function() {
           return $q(function(resolve, reject) {
               'activity': activity,
               'soft': false,
               'status': 'success',
-              'message': 'Checking browser compability.'
+              'message': $translate.instant('BROWSER_COMPATIBILITY')
             };
-
             navigator.getUserMedia = navigator.getUserMedia ||
               navigator.webkitGetUserMedia ||
               navigator.mozGetUserMedia;
 
             if (!navigator.getUserMedia) {
               result['status'] = 'error';
-              result['message'] = 'Error: browser doesn\'t support WebRTC.';
+              result['message'] = $translate.instant('BROWSER_WITHOUT_WEBRTC');
               reject(result);
             }
 
               'activity': activity,
               'soft': false,
               'status': 'success',
-              'message': 'Checking media permissions'
+              'message': $translate.instant('CHECK_PERMISSION_MEDIA')
             };
 
             verto.mediaPerm(function(status) {
               if(!status) {
                 result['status'] = 'error';
-                result['message'] = 'Error: Media Permission Denied';
+                result['message'] = $translate.instant('ERROR_PERMISSION_MEDIA');
                 verto.data.mediaPerm = false;
                 reject(result);
               }
@@ -60,7 +59,7 @@
               'status': 'success',
               'soft': true,
               'activity': activity,
-              'message': 'Refresh Media Devices.'
+              'message': $translate.instant('REFRESH_MEDIA_DEVICES')
             };
 
             verto.refreshDevices(function(status) {
@@ -79,7 +78,7 @@
               'status': 'success',
               'soft': true,
               'activity': activity,
-              'message': 'Check Connection Speed.'
+              'message': $translate.instant('CHECK_CONNECTION_SPEED')
             };
 
             if (storage.data.autoBand && verto.data.instance) {
               'status': 'promise',
               'soft': true,
               'activity': activity,
-              'message': 'Provisioning configuration.'
+              'message': $translate.instant('CHECK_PROVISIONING_CONF')
             };
 
             var configResponse = config.configure();
                   return result;
                 } else {
                   result['status'] = 'error';
-                  result['message'] = 'Error: Provision failed.';
+                  result['message'] = $translate.instant('ERROR_PROVISIONING_CONF');
                   return result;
                 }
               });
               'status': 'success',
               'soft': true,
               'activity': activity,
-              'message': 'Checking login.'
+              'message': $translate.instant('CHECK_LOGIN'),
             };
 
             if(verto.data.connecting || verto.data.connected) {
         ];
 
         var progress_message = [
-          'Checking browser compability.',
-          'Checking media permissions',
-          'Refresh Media Devices.',
-          'Provisioning configuration.',
-          'Checking login.',
-          'Check Connection Speed.'
+          $translate.instant('BROWSER_COMPATIBILITY'),
+          $translate.instant('CHECK_PERMISSION_MEDIA'),
+          $translate.instant('REFRESH_MEDIA_DEVICES'),
+          $translate.instant('CHECK_PROVISIONING_CONF'),
+          $translate.instant('CHECK_LOGIN'),
+          $translate.instant('CHECK_CONNECTION_SPEED'),
         ];
 
         var getProgressMessage = function(current_progress) {
           if(progress_message[current_progress] != undefined) {
             return progress_message[current_progress];
           } else {
-            return 'Please wait...';
+            return $translate.instant('PLEASE_WAIT');
           }
         };
 
index 2edbad2d375e33874e1333d90aa36bcded1ed5a3..77626ef6f2c655f51f49ceeb2be2441fc37c0779 100644 (file)
     'ui.gravatar',
     'ui.bootstrap',
     'directive.g+signin',
+    'pascalprecht.translate',
   ]);
 
-  vertoApp.config(['$routeProvider', 'gravatarServiceProvider',
-    function($routeProvider, gravatarServiceProvider) {
+  vertoApp.config(['$routeProvider', 'gravatarServiceProvider', '$translateProvider',
+    function($routeProvider, gravatarServiceProvider, $translateProvider) {
       $routeProvider.
       when('/', {
         title: 'Loading',
       gravatarServiceProvider.defaults = {
         default: 'mm'  // Mystery man as default for missing avatars
       };
+
+
+      $translateProvider
+      .useStaticFilesLoader({
+        prefix: 'locales/locale-',
+        suffix: '.json'
+      })
+      .registerAvailableLanguageKeys(['en', 'it'], {
+        'en' : 'en', 'en_GB': 'en', 'en_US': 'en',
+        'it' : 'it', 'it_IT' : 'it'
+      })
+      .preferredLanguage('en')
+      .fallbackLanguage('en')
+      .determinePreferredLanguage()
+      .useSanitizeValueStrategy(null);
     }
   ]);
 
index c74e25ab2c3780676d99e2cf6798f716708636a9..115da6ddf35536951ccd4476f811ca9b9438793b 100644 (file)
@@ -5,9 +5,9 @@
   angular
   .module('vertoControllers')
   .controller('ChatController', ['$scope', '$rootScope', '$http',
-    '$location', '$anchorScroll', '$timeout', 'verto', 'prompt',
+    '$location', '$anchorScroll', '$timeout', 'verto', 'prompt', '$translate',
     function($scope, $rootScope, $http, $location, $anchorScroll, $timeout,
-      verto, prompt) {
+      verto, prompt, $translate) {
       console.debug('Executing ChatController.');
 
       function scrollToChatBottom() {
         console.log('$scope.confBanner');
 
         prompt({
-          title: 'Please insert the banner text',
+          title: $translate.instant('TITLE_INSERT_BANNER'),
           input: true,
           label: '',
           value: '',
           return;
         }
 
-        shortPrompt('Please insert the Canvas Id', function(canvasID) {
+        shortPrompt($translate.instant('TITLE_INSERT_CANVAS_ID'), function(canvasID) {
           console.log(memberID, canvasID);
           verto.setCanvasIn(memberID, canvasID);
         });
           return;
         }
 
-        shortPrompt('Please insert the Canvas Id', function(canvasID) {
+        shortPrompt($translate.instant('TITLE_INSERT_CANVAS_ID'), function(canvasID) {
           verto.setCanvasOut(memberID, canvasID);
         });
       };
           return;
         }
 
-        shortPrompt('Please insert the Layer', function(canvasID) {
+        shortPrompt($translate.instant('TITLE_INSERT_LAYER'), function(canvasID) {
           verto.setLayer(memberID, canvasID);
         });
       };
       $scope.confTransfer = function(memberID) {
         console.log('$scope.confTransfer');
         prompt({
-          title: 'Transfer party?',
-          message: 'To what destination would you like to transfer this call?',
+          title: $translate.instant('TITLE_TRANSFER'),
+          message: $translate.instant('MESSAGE_TRANSFER'),
           input: true,
-          label: 'Destination',
+          label: $translate.instant('LABEL_TRANSFER'),
           value: '',
         }).then(function(exten) {
           if (exten) {
index d5e5484fa665a8f6ca183902289ba631cd2cccc5..557bb2b7a411c4352324055c99cb91e97e301abe 100644 (file)
@@ -4,9 +4,9 @@
   angular
     .module('vertoControllers')
     .controller('InCallController', ['$rootScope', '$scope',
-      '$http', '$location', '$modal', '$timeout', 'toastr', 'verto', 'storage', 'prompt', 'Fullscreen',
+      '$http', '$location', '$modal', '$timeout', 'toastr', 'verto', 'storage', 'prompt', 'Fullscreen', '$translate',
       function($rootScope, $scope, $http, $location, $modal, $timeout, toastr,
-        verto, storage, prompt, Fullscreen) {
+        verto, storage, prompt, Fullscreen, $translate) {
 
         console.debug('Executing InCallController.');
         $scope.layout = null;
@@ -55,8 +55,8 @@
          */
         $scope.videoCall = function() {
           prompt({
-            title: 'Would you like to activate video for this call?',
-            message: 'Video will be active during the next calls.'
+            title: $translate.instant('TITLE_ENABLE_VIDEO'),
+            message: $translate.instant('MESSAGE_ENABLE_VIDEO')
           }).then(function() {
             storage.data.videoCall = true;
             $scope.callTemplate = 'partials/video_call.html';
index dc21cb10772c6022b814c020f0de24f96fda93e7..b3d1c6e88608ce9c7f1747159214d51d5fb0c1d1 100644 (file)
@@ -4,7 +4,7 @@
   angular
     .module('vertoControllers')
     .controller('MainController',
-      function($scope, $rootScope, $location, $modal, $timeout, $q, verto, storage, CallHistory, toastr, Fullscreen, prompt, eventQueue) {
+      function($scope, $rootScope, $location, $modal, $timeout, $q, verto, storage, CallHistory, toastr, Fullscreen, prompt, eventQueue, $translate) {
 
       console.debug('Executing MainController.');
 
 
         if (verto.data.call) {
           prompt({
-            title: 'Oops, Active Call in Course.',
-            message: 'It seems that you are in a call. Do you want to hang up?'
+            title: $translate.instant('TITLE_ACTIVE_CALL'),
+            message: $translate.instant('MESSAGE_ACTIVE_CALL_HANGUP')
           }).then(function() {
             disconnect();
           });
           return $q(function(resolve, reject) {
             if (storage.data.askRecoverCall) {
               prompt({
-                title: 'Oops, Active Call in Course.',
-                message: 'It seems you were in a call before leaving the last time. Wanna go back to that?'
+                title: $translate.instant('TITLE_ACTIVE_CALL'),
+                message: $translate.instant('MESSAGE_ACTIVE_CALL_BACK')
               }).then(function() {
                 console.log('redirect to incall page');
                 $location.path('/incall');
         storage.data.mutedMic = false;
 
         prompt({
-          title: 'Incoming Call',
-          message: 'from ' + data
+          title: $translate.instant('TITLE_INCOMING_CALL'),
+          message: $translate.instant('MESSAGE_INCOMING_CALL') + data
         }).then(function() {
           var call_start = new Date(storage.data.call_start);
           $rootScope.start_time = call_start;
        */
       $scope.hangup = function() {
         if (!verto.data.call) {
-          toastr.warning('There is no call to hangup.');
+          toastr.warning($translate.instant('MESSAGE_NO_HANGUP_CALL'));
           $location.path('/dialpad');
           return;
         }
       };
 
       $scope.play = function() {
-        var file = $scope.promptInput('Please, enter filename', '', 'File',
+        var file = $scope.promptInput($translate.instant('MESSAGE_ENTER_FILENAME'), '', 'File',
           function(file) {
             verto.data.conf.play(file);
             console.log('play file :', file);
       };
 
       $scope.record = function() {
-        var file = $scope.promptInput('Please, enter filename', '', 'File',
+        var file = $scope.promptInput($translate.instant('MESSAGE_ENTER_FILENAME'), '', 'File',
           function(file) {
             verto.data.conf.record(file);
             console.log('recording file :', file);
       };
 
       $scope.snapshot = function() {
-        var file = $scope.promptInput('Please, enter filename', '', 'File',
+        var file = $scope.promptInput($translate.instant('MESSAGE_ENTER_FILENAME'), '', 'File',
           function(file) {
             verto.data.conf.snapshot(file);
             console.log('snapshot file :', file);
index 6a1d6494302418816e212fd52d3bf1a701eae9f7..7a8945ec029faa4299266403b8c3085823e948a5 100644 (file)
@@ -4,9 +4,9 @@
   angular
     .module('vertoControllers')
     .controller('PreviewController', ['$rootScope', '$scope',
-      '$http', '$location', '$modal', '$timeout', 'toastr', 'verto', 'storage', 'prompt', 'Fullscreen',
+      '$http', '$location', '$modal', '$timeout', 'toastr', 'verto', 'storage', 'prompt', 'Fullscreen', '$translate',
       function($rootScope, $scope, $http, $location, $modal, $timeout, toastr,
-        verto, storage, prompt, Fullscreen) {
+        verto, storage, prompt, Fullscreen, $translate) {
 
         $scope.storage = storage;
         console.debug('Executing PreviewController.');
@@ -87,8 +87,8 @@
 
         $scope.videoCall = function() {
           prompt({
-            title: 'Would you like to activate video for this call?',
-            message: 'Video will be active during the next calls.'
+            title: $translate.instant('TITLE_ENABLE_VIDEO'),
+            message: $translate.instant('MESSAGE_ENABLE_VIDEO')
           }).then(function() {
             storage.data.videoCall = true;
             $scope.callTemplate = 'partials/video_call.html';
index 784a2e6dd931223db9f5b58d55ca1fa80289deb3..d6f4d0453bebd37411fe2cb000ce3d92a9733eed 100644 (file)
@@ -4,8 +4,8 @@
   angular
     .module('vertoControllers')
     .controller('SettingsController', ['$scope', '$http',
-      '$location', '$rootScope', 'storage', 'verto',
-      function($scope, $http, $location, $rootScope, storage, verto) {
+      '$location', '$rootScope', 'storage', 'verto', '$translate',
+      function($scope, $http, $location, $rootScope, storage, verto, $translate) {
         console.debug('Executing ModalSettingsController.');
 
         $.material.init();
@@ -47,7 +47,7 @@
             return;
           }
           else {
-            toastr.warning('Can\'t display preview settings during a call');
+            toastr.warning($translate.instant('MESSAGE_DISPLAY_SETTINGS'));
           }
         };