InstallScreen + i18n. TODO : Call Install API to get settings and assets
117
ComApp/App.js
|
|
@ -1,117 +0,0 @@
|
|||
/**
|
||||
* Sample React Native App
|
||||
* https://github.com/facebook/react-native
|
||||
*
|
||||
* @format
|
||||
* @flow strict-local
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
import type {Node} from 'react';
|
||||
import {
|
||||
SafeAreaView,
|
||||
ScrollView,
|
||||
StatusBar,
|
||||
StyleSheet,
|
||||
Text,
|
||||
useColorScheme,
|
||||
View,
|
||||
} from 'react-native';
|
||||
|
||||
import {
|
||||
Colors,
|
||||
DebugInstructions,
|
||||
Header,
|
||||
LearnMoreLinks,
|
||||
ReloadInstructions,
|
||||
} from 'react-native/Libraries/NewAppScreen';
|
||||
|
||||
/* $FlowFixMe[missing-local-annot] The type annotation(s) required by Flow's
|
||||
* LTI update could not be added via codemod */
|
||||
const Section = ({children, title}): Node => {
|
||||
const isDarkMode = useColorScheme() === 'dark';
|
||||
return (
|
||||
<View style={styles.sectionContainer}>
|
||||
<Text
|
||||
style={[
|
||||
styles.sectionTitle,
|
||||
{
|
||||
color: isDarkMode ? Colors.white : Colors.black,
|
||||
},
|
||||
]}>
|
||||
{title}
|
||||
</Text>
|
||||
<Text
|
||||
style={[
|
||||
styles.sectionDescription,
|
||||
{
|
||||
color: isDarkMode ? Colors.light : Colors.dark,
|
||||
},
|
||||
]}>
|
||||
{children}
|
||||
</Text>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
const App: () => Node = () => {
|
||||
const isDarkMode = useColorScheme() === 'dark';
|
||||
|
||||
const backgroundStyle = {
|
||||
backgroundColor: isDarkMode ? Colors.darker : Colors.lighter,
|
||||
};
|
||||
|
||||
return (
|
||||
<SafeAreaView style={backgroundStyle}>
|
||||
<StatusBar
|
||||
barStyle={isDarkMode ? 'light-content' : 'dark-content'}
|
||||
backgroundColor={backgroundStyle.backgroundColor}
|
||||
/>
|
||||
<ScrollView
|
||||
contentInsetAdjustmentBehavior="automatic"
|
||||
style={backgroundStyle}>
|
||||
<Header />
|
||||
<View
|
||||
style={{
|
||||
backgroundColor: isDarkMode ? Colors.black : Colors.white,
|
||||
}}>
|
||||
<Section title="Step One">
|
||||
Edit <Text style={styles.highlight}>App.js</Text> to change this
|
||||
screen and then come back to see your edits.
|
||||
</Section>
|
||||
<Section title="See Your Changes">
|
||||
<ReloadInstructions />
|
||||
</Section>
|
||||
<Section title="Debug">
|
||||
<DebugInstructions />
|
||||
</Section>
|
||||
<Section title="Learn More">
|
||||
Read the docs to discover what to do next:
|
||||
</Section>
|
||||
<LearnMoreLinks />
|
||||
</View>
|
||||
</ScrollView>
|
||||
</SafeAreaView>
|
||||
);
|
||||
};
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
sectionContainer: {
|
||||
marginTop: 32,
|
||||
paddingHorizontal: 24,
|
||||
},
|
||||
sectionTitle: {
|
||||
fontSize: 24,
|
||||
fontWeight: '600',
|
||||
},
|
||||
sectionDescription: {
|
||||
marginTop: 8,
|
||||
fontSize: 18,
|
||||
fontWeight: '400',
|
||||
},
|
||||
highlight: {
|
||||
fontWeight: '700',
|
||||
},
|
||||
});
|
||||
|
||||
export default App;
|
||||
3
ComApp/README.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# ComApp
|
||||
## Dependencies
|
||||
- i18n-js
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
*/
|
||||
|
||||
import {AppRegistry} from 'react-native';
|
||||
import App from './App';
|
||||
import App from './src/App';
|
||||
import {name as appName} from './app.json';
|
||||
|
||||
AppRegistry.registerComponent(appName, () => App);
|
||||
|
|
|
|||
21643
ComApp/package-lock.json
generated
Normal file
|
|
@ -10,6 +10,7 @@
|
|||
"lint": "eslint ."
|
||||
},
|
||||
"dependencies": {
|
||||
"i18n-js": "^4.1.1",
|
||||
"react": "18.1.0",
|
||||
"react-native": "0.70.1"
|
||||
},
|
||||
|
|
|
|||
22
ComApp/src/App.js
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
/**
|
||||
* Sample React Native App
|
||||
* https://github.com/facebook/react-native
|
||||
*
|
||||
* @format
|
||||
* @flow strict-local
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
import type {Node} from 'react';
|
||||
|
||||
// Views
|
||||
import InstallScreen from './App/Views/InstallScreen';
|
||||
|
||||
const App: () => Node = () => {
|
||||
|
||||
return (
|
||||
<InstallScreen />
|
||||
);
|
||||
};
|
||||
|
||||
export default App;
|
||||
9
ComApp/src/App/Controllers/InstallController.js
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
class InstallController {
|
||||
|
||||
getConfig(url) {
|
||||
console.log(url);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default new InstallController();
|
||||
62
ComApp/src/App/Views/InstallScreen.js
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
import React from 'react';
|
||||
import { ImageBackground, View, Image, TextInput, Button, StyleSheet } from 'react-native';
|
||||
// Helpers
|
||||
import Helpers from '../../Helpers';
|
||||
// Common Styles
|
||||
import commonStyles from '../../Resources/CommonStyles';
|
||||
// Translations
|
||||
import i18n from "../../I18n";
|
||||
// Controller
|
||||
import InstallController from '../Controllers/InstallController';
|
||||
|
||||
class InstallScreen extends React.Component {
|
||||
state = {
|
||||
url: "",
|
||||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
<ImageBackground source={require('../../Resources/assets/img/background_ldc.png')} style={commonStyles.background}>
|
||||
<View style={commonStyles.container}>
|
||||
<Image source={require('../../Resources/assets/img/logo-square-ldc.png')} style={styles.logo} />
|
||||
<View style={styles.actions}>
|
||||
<TextInput
|
||||
style={commonStyles.textInput}
|
||||
placeholder={i18n.t("install.enter_url")}
|
||||
onChangeText={(newText) => this.setState({ url: newText })}
|
||||
value={this.state.url}
|
||||
/>
|
||||
<Button
|
||||
color={'#D4021D'}
|
||||
title={ i18n.t('install.install')}
|
||||
onPress={() => {
|
||||
if (this.state.url.length === 0) {
|
||||
alert(i18n.t("install.enter_url"));
|
||||
} else {
|
||||
if (Helpers.isUrlValid(this.state.url)) {
|
||||
InstallController.getConfig(this.state.url);
|
||||
} else {
|
||||
alert(i18n.t("install.url_invalid"));
|
||||
}
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
</ImageBackground>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
logo: {
|
||||
width: 150,
|
||||
height: 150,
|
||||
marginBottom: 20
|
||||
},
|
||||
actions: {
|
||||
marginTop: 20
|
||||
},
|
||||
});
|
||||
|
||||
export default InstallScreen;
|
||||
51
ComApp/src/Helpers.js
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
class Helpers {
|
||||
compareValues(key, order = 'asc') {
|
||||
return function innerSort(a, b) {
|
||||
if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {
|
||||
// property doesn't exist on either object
|
||||
return 0;
|
||||
}
|
||||
|
||||
const varA = (typeof a[key] === 'string')
|
||||
? a[key].toUpperCase() : a[key];
|
||||
const varB = (typeof b[key] === 'string')
|
||||
? b[key].toUpperCase() : b[key];
|
||||
|
||||
let comparison = 0;
|
||||
if (varA > varB) {
|
||||
comparison = 1;
|
||||
} else if (varA < varB) {
|
||||
comparison = -1;
|
||||
}
|
||||
return (
|
||||
(order === 'desc') ? (comparison * -1) : comparison
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
isEmailValid(email) {
|
||||
const expression = /(?!.*\.{2})^([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)*|"((([\t]*\r\n)?[\t]+)?([\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*(([\t]*\r\n)?[\t]+)?")@(([a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.)+([a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.?$/i;
|
||||
return expression.test(String(email).toLowerCase());
|
||||
}
|
||||
|
||||
isUrlValid(value) {
|
||||
return /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(value);
|
||||
}
|
||||
|
||||
generateUUID() { // Public Domain/MIT
|
||||
let d = new Date().getTime();//Timestamp
|
||||
let d2 = new Date().getUTCMilliseconds() + Math.random();//Time in microseconds since page-load or 0 if unsupported
|
||||
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
|
||||
let r = Math.random() * 16;//random number between 0 and 16
|
||||
if(d > 0){//Use timestamp until depleted
|
||||
r = (d + r)%16 | 0;
|
||||
d = Math.floor(d/16);
|
||||
} else {//Use microseconds since page-load if supported
|
||||
r = (d2 + r)%16 | 0;
|
||||
d2 = Math.floor(d2/16);
|
||||
}
|
||||
return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
|
||||
});
|
||||
}
|
||||
}
|
||||
export default new Helpers();
|
||||
17
ComApp/src/I18n.js
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
import { I18n } from 'i18n-js';
|
||||
|
||||
import fr from './Resources/Locales/fr';
|
||||
import en from './Resources/Locales/en';
|
||||
import de from './Resources/Locales/de';
|
||||
|
||||
const i18n = new I18n({
|
||||
fr: fr,
|
||||
en: en,
|
||||
de: de
|
||||
});
|
||||
|
||||
i18n.defaultLocale = 'fr';
|
||||
i18n.locale = 'fr';
|
||||
i18n.enableFallback = true;
|
||||
|
||||
export default i18n;
|
||||
24
ComApp/src/Resources/CommonStyles.js
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
import { StyleSheet } from 'react-native';
|
||||
|
||||
const commonStyles = StyleSheet.create({
|
||||
background: {
|
||||
width: '100%',
|
||||
height: '100%'
|
||||
},
|
||||
container: {
|
||||
flex: 1,
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
},
|
||||
textInput: {
|
||||
height: 40,
|
||||
width: 300,
|
||||
borderColor: 'grey',
|
||||
borderWidth: 1,
|
||||
marginBottom: 20,
|
||||
backgroundColor: 'white',
|
||||
paddingLeft: 10
|
||||
}
|
||||
});
|
||||
|
||||
export default commonStyles;
|
||||
157
ComApp/src/Resources/Locales/de.json
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
{
|
||||
"global": {
|
||||
"install": "Installieren",
|
||||
"yes": "Ja",
|
||||
"no": "Nein",
|
||||
"home": "Startseite",
|
||||
"search": "Suche",
|
||||
"login": "Verbindung",
|
||||
"email": "Email",
|
||||
"message_sent": "Email geschickt",
|
||||
"message_will_be_sent_after_sync": "Die Nachricht wird nach Synchronisation geschickt",
|
||||
"warning": "Achtung",
|
||||
"synchronization": "Synchronisation ",
|
||||
"videos": "Videos",
|
||||
"contacts": "Kontakt",
|
||||
"confirmation": "Bestätigung",
|
||||
"name": "Name",
|
||||
"firstname": "Vorname",
|
||||
"address": "Adresse",
|
||||
"phone": "Telefonnummer",
|
||||
"company": "Firma",
|
||||
"add": "Addieren",
|
||||
"cancel": "Abbrechen",
|
||||
"subject": "Betreff",
|
||||
"message": "Nachricht",
|
||||
"send": "Senden",
|
||||
"required": "erforderlich",
|
||||
"save": "Speichern",
|
||||
"retry": "Noch einmal versuchen",
|
||||
"next": "Nächstes"
|
||||
},
|
||||
"app": {
|
||||
"file_sharing": " Dateifreigabe",
|
||||
"folders": "Ordner",
|
||||
"video": "Video",
|
||||
"contact_details": "Kontaktdaten",
|
||||
"results_search": "Suchergebnisse",
|
||||
"my_space": "Mein Raum"
|
||||
},
|
||||
"login_s": {
|
||||
"username": "Benutzername",
|
||||
"password": "Passwort"
|
||||
},
|
||||
"home_s": {
|
||||
"1": "Kataloge",
|
||||
"2": "Datenblätter",
|
||||
"3": "Andere"
|
||||
},
|
||||
"search_s": {
|
||||
"no_result": "Keine Ergebnisse"
|
||||
},
|
||||
"sync_s": {
|
||||
"download": "Download",
|
||||
"update_completed": "Update abgeschlossen",
|
||||
"updating_docs": "Dokumentaktualisierung",
|
||||
"updating_folders": "Dateien aktualisieren",
|
||||
"sending_flyers": "Brochure senden",
|
||||
"updating_contacts": "Kontakt aktualisieren",
|
||||
"user_install_completed": "Benutzerinstallation abgeschlossen",
|
||||
"updating_users": "Benutzer-Update",
|
||||
"user_install": "Benutzerinstallation",
|
||||
"start_sync": "Synchronisation starten",
|
||||
"new_app_version": "Eine neue Version der Anwendung ist verfügbar!",
|
||||
"open_store": "Öffnen Sie den App Store"
|
||||
},
|
||||
"contact_s": {
|
||||
"contact_transferred": "Kontakt weiterleiten",
|
||||
"contact_will_be_sent_after_sync": "Der Kontakt wird nach der Synchronisation gesendet",
|
||||
"confirm_contact_delete": "Möchten Sie diesen Kontakt wirklich löschen?",
|
||||
"contact_deleted": "Kontakt gelöscht",
|
||||
"contact_added": "Kontakt hinzugefügt",
|
||||
"send_flyer": "Senden Sie eine Broschüre",
|
||||
"select_contact": "Wählen Sie den Kontakt",
|
||||
"transfer": "weiterleiten",
|
||||
"contact_list": "Kontaktliste",
|
||||
"documents_list": "Liste der Dokumente"
|
||||
},
|
||||
"contact_details_s": {
|
||||
"visits": "Besuche",
|
||||
"notes": "Notes",
|
||||
"contact_saved": "Kontakt gespeichert",
|
||||
"confirm_visit_delete": "Sind Sie sicher, dass Sie diesen Besuch löschen möchten?",
|
||||
"qrcode_not_vcard_format": "Dieser QRCode ist nicht im vCard-Format",
|
||||
"customer": "Kunde",
|
||||
"prospect": "potenzieller Kunde",
|
||||
"other": "Andere",
|
||||
"description": "Beschreibung",
|
||||
"no_visits": "Kein Besuch",
|
||||
"visit_name": "Besuchsname"
|
||||
},
|
||||
"error": {
|
||||
"error": "Fehler ",
|
||||
"tablet_not_connected_internet": "Das Tablet ist nicht mit dem Internet verbunden.",
|
||||
"tablet_not_synced_last_user": "Das Tablet wurde vom vorherigen Benutzer nicht synchronisiert",
|
||||
"incorrect_credentials": "Falsche Anmeldeinformationen",
|
||||
"must_fill_login_fields": "Sie müssen die Verbindungsfelder ausfüllen",
|
||||
"invalid_email_address": "Ungültige E-Mail-Adresse",
|
||||
"error_has_occurred": "Ein Fehler ist aufgetreten",
|
||||
"must_be_connected_internet_sync": "Sie müssen mit dem Internet verbunden sein, um die Synchronisierung zu starten",
|
||||
"incomplete_form": "Unvollständiges Formular",
|
||||
"fill_all_fields_and_1_doc_min": "Bitte füllen Sie alle Felder, mindestens 1 Dokument und eine gültige E-Mail-Adresse aus.",
|
||||
"fill_other_field": "Füllen Sie das Beschreibungsfeld für: Andere",
|
||||
"specify_type_contact": "Bitte geben Sie die Art des Kontakts an",
|
||||
"invalid_name": "ungültiger Name",
|
||||
"invalid_firstname": "ungültiger Vorname",
|
||||
"camera_permission_denied": "Kameraerlaubnis verweigert",
|
||||
"pending_camera_permission": "Warten auf Kameraerlaubnis"
|
||||
},
|
||||
"custom": {
|
||||
"select-1": {
|
||||
"title": "Type de commerce",
|
||||
"c1": "Commerce de détail",
|
||||
"c2": "Home Service / Freezer Center",
|
||||
"c3": "Restauration service à table",
|
||||
"c4": "Fast food et snacking",
|
||||
"c5": "Cafétaria / Self Service",
|
||||
"c6": "Société de restauration",
|
||||
"c7": "Restauration gré à gré / cuisine Centrale",
|
||||
"c8": "Distributeur indépendant",
|
||||
"c9": "Boulangerie pâtisserie",
|
||||
"c10": "PAI",
|
||||
"c11": "Destockeur",
|
||||
"c12": "Commerce Halal",
|
||||
"c13": "Restauration d'hébergement",
|
||||
"c14": "Centrale restauration commerciale",
|
||||
"c15": "Restauration évenementielle et parc",
|
||||
"c16": "Restauration de transport",
|
||||
"c17": "Marché public",
|
||||
"c18": "Cash",
|
||||
"c19": "Distributeur national",
|
||||
"c20": "Rungis",
|
||||
"c21": "Abbatoir",
|
||||
"c22": "Autre"
|
||||
},
|
||||
"select-2": {
|
||||
"title": "Site",
|
||||
"c1": "Celvia Dinde",
|
||||
"c2": "Celvia Elaborés",
|
||||
"c3": "Celvia Sérent",
|
||||
"c4": "Procanar",
|
||||
"c5": "Celtys",
|
||||
"c6": "Farmor",
|
||||
"c7": "Robichon",
|
||||
"c8": "Les Volailles de Kerana",
|
||||
"c9": "Bosher Volaille",
|
||||
"c10": "LDC Bretagne",
|
||||
"c11": "Doux Farmor",
|
||||
"c12": "Favreau"
|
||||
},
|
||||
"interest": {
|
||||
"p1": "Poulet",
|
||||
"p2": "Dinde",
|
||||
"p3": "Canard",
|
||||
"p4": "Autre"
|
||||
}
|
||||
}
|
||||
}
|
||||
157
ComApp/src/Resources/Locales/en.json
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
{
|
||||
"global": {
|
||||
"install": "Install",
|
||||
"yes": "Yes",
|
||||
"no": "No",
|
||||
"home": "Home",
|
||||
"search": "Search",
|
||||
"login": "Login",
|
||||
"email": "Email",
|
||||
"message_sent": "Message Sent",
|
||||
"message_will_be_sent_after_sync": "Message will be send after synchronization",
|
||||
"warning": "Warning",
|
||||
"synchronization": "Synchronization",
|
||||
"videos": "Videos",
|
||||
"contacts": "Contacts",
|
||||
"confirmation": "Confirmation",
|
||||
"name": "Lastname",
|
||||
"firstname": "Firstname",
|
||||
"address": "Adress",
|
||||
"phone": "Phone number",
|
||||
"company": "Company",
|
||||
"add": "Add",
|
||||
"cancel": "Cancel",
|
||||
"subject": "Object",
|
||||
"message": "Message",
|
||||
"send": "Send",
|
||||
"required": "required",
|
||||
"save": "Save",
|
||||
"retry": "Retry",
|
||||
"next": "Next"
|
||||
},
|
||||
"app": {
|
||||
"file_sharing": "File Sharing",
|
||||
"folders": "Folders",
|
||||
"video": "Video",
|
||||
"contact_details": "Contact information",
|
||||
"results_search": "Search results",
|
||||
"my_space": "Personal Dashboard"
|
||||
},
|
||||
"login_s": {
|
||||
"username": "Username",
|
||||
"password": "Password"
|
||||
},
|
||||
"home_s": {
|
||||
"1": "Catalogs",
|
||||
"2": "Data sheets",
|
||||
"3": "Others"
|
||||
},
|
||||
"search_s": {
|
||||
"no_result": "No Result"
|
||||
},
|
||||
"sync_s": {
|
||||
"download": "Download",
|
||||
"update_completed": "Update Done",
|
||||
"updating_docs": "Updating documents",
|
||||
"updating_folders": "Updating folders",
|
||||
"sending_flyers": "Sending documents",
|
||||
"updating_contacts": "Updating contacts",
|
||||
"user_install_completed": "User install completed",
|
||||
"updating_users": "Updating Users",
|
||||
"user_install": "Installing Users",
|
||||
"start_sync": "START SYNCHRONIZATION",
|
||||
"new_app_version": "A new version of the application is available!",
|
||||
"open_store": "Open the store"
|
||||
},
|
||||
"contact_s": {
|
||||
"contact_transferred": "Contact Transferred",
|
||||
"contact_will_be_sent_after_sync": "The contact will be sent after synchronization",
|
||||
"confirm_contact_delete": "Are you sure to delete this contact ?",
|
||||
"contact_deleted": "Contact deleted",
|
||||
"contact_added": "Contact added",
|
||||
"send_flyer": "Send a document",
|
||||
"select_contact": "Select the contact",
|
||||
"transfer": "Transfer",
|
||||
"contact_list": "Contact List",
|
||||
"documents_list": "Documents List"
|
||||
},
|
||||
"contact_details_s": {
|
||||
"visits": "Visits",
|
||||
"notes": "Notes",
|
||||
"contact_saved": "Contact saved",
|
||||
"confirm_visit_delete": "are you sure to delete this visit ?",
|
||||
"qrcode_not_vcard_format": "This QRCode is not a VCard",
|
||||
"customer": "Customer",
|
||||
"prospect": "Prospect",
|
||||
"other": "Other",
|
||||
"description": "Description",
|
||||
"no_visits": "No visits available",
|
||||
"visit_name": "visits name"
|
||||
},
|
||||
"error": {
|
||||
"error": "Error",
|
||||
"tablet_not_connected_internet": "The tablet is not connected to Internet",
|
||||
"tablet_not_synced_last_user": "The previous user didn't synchronised the tablet",
|
||||
"incorrect_credentials": "Incorrect Credentials",
|
||||
"must_fill_login_fields": "You must fill the login fields.",
|
||||
"invalid_email_address": "Invalid E-mail adress",
|
||||
"error_has_occurred": "An error occured",
|
||||
"must_be_connected_internet_sync": "You must be connected to internet to be able to synchronize",
|
||||
"incomplete_form": "Incomplete Form",
|
||||
"fill_all_fields_and_1_doc_min": "Please fill up all the fields, at least one document and a valid e-mail adress",
|
||||
"fill_other_field": "You must fill the description field for : Other",
|
||||
"specify_type_contact": "You must specify the contact type",
|
||||
"invalid_name": "Invalid lastname",
|
||||
"invalid_firstname": "Invalid firstname",
|
||||
"camera_permission_denied": "Camera Permission Denied",
|
||||
"pending_camera_permission": "Waiting for the camera permission"
|
||||
},
|
||||
"custom": {
|
||||
"select-1": {
|
||||
"title": "Type de commerce",
|
||||
"c1": "Commerce de détail",
|
||||
"c2": "Home Service / Freezer Center",
|
||||
"c3": "Restauration service à table",
|
||||
"c4": "Fast food et snacking",
|
||||
"c5": "Cafétaria / Self Service",
|
||||
"c6": "Société de restauration",
|
||||
"c7": "Restauration gré à gré / cuisine Centrale",
|
||||
"c8": "Distributeur indépendant",
|
||||
"c9": "Boulangerie pâtisserie",
|
||||
"c10": "PAI",
|
||||
"c11": "Destockeur",
|
||||
"c12": "Commerce Halal",
|
||||
"c13": "Restauration d'hébergement",
|
||||
"c14": "Centrale restauration commerciale",
|
||||
"c15": "Restauration évenementielle et parc",
|
||||
"c16": "Restauration de transport",
|
||||
"c17": "Marché public",
|
||||
"c18": "Cash",
|
||||
"c19": "Distributeur national",
|
||||
"c20": "Rungis",
|
||||
"c21": "Abbatoir",
|
||||
"c22": "Autre"
|
||||
},
|
||||
"select-2": {
|
||||
"title": "Site",
|
||||
"c1": "Celvia Dinde",
|
||||
"c2": "Celvia Elaborés",
|
||||
"c3": "Celvia Sérent",
|
||||
"c4": "Procanar",
|
||||
"c5": "Celtys",
|
||||
"c6": "Farmor",
|
||||
"c7": "Robichon",
|
||||
"c8": "Les Volailles de Kerana",
|
||||
"c9": "Bosher Volaille",
|
||||
"c10": "LDC Bretagne",
|
||||
"c11": "Doux Farmor",
|
||||
"c12": "Favreau"
|
||||
},
|
||||
"interest": {
|
||||
"p1": "Poulet",
|
||||
"p2": "Dinde",
|
||||
"p3": "Canard",
|
||||
"p4": "Autre"
|
||||
}
|
||||
}
|
||||
}
|
||||
161
ComApp/src/Resources/Locales/fr.json
Normal file
|
|
@ -0,0 +1,161 @@
|
|||
{
|
||||
"install": {
|
||||
"install": "Installer",
|
||||
"enter_url": "Veuillez entrer le lien de votre back-office",
|
||||
"url_invalid": "Le lien saisi est invalide."
|
||||
},
|
||||
"global": {
|
||||
"yes": "Oui",
|
||||
"no": "Non",
|
||||
"home": "Accueil",
|
||||
"search": "Recherche",
|
||||
"login": "Connexion",
|
||||
"email": "Email",
|
||||
"message_sent": "Message envoyé",
|
||||
"message_will_be_sent_after_sync": "Le message sera envoyé après synchronisation",
|
||||
"warning": "Attention",
|
||||
"synchronization": "Synchronisation",
|
||||
"videos": "Vidéos",
|
||||
"contacts": "Contacts",
|
||||
"confirmation": "Confirmation",
|
||||
"name": "Nom",
|
||||
"firstname": "Prénom",
|
||||
"address": "Adresse",
|
||||
"phone": "Téléphone",
|
||||
"company": "Société",
|
||||
"add": "Ajouter",
|
||||
"cancel": "Annuler",
|
||||
"subject": "Objet",
|
||||
"message": "Message",
|
||||
"send": "Envoyer",
|
||||
"required": "requis",
|
||||
"save": "Enregistrer",
|
||||
"retry": "Réessayer",
|
||||
"next": "Suivant"
|
||||
},
|
||||
"app": {
|
||||
"file_sharing": "Partage de fichier",
|
||||
"folders": "Dossiers",
|
||||
"video": "Vidéo",
|
||||
"contact_details": "Détails du contact",
|
||||
"results_search": "Résultat(s) de votre recherche",
|
||||
"my_space": "Mon espace"
|
||||
},
|
||||
"login_s": {
|
||||
"username": "Identifiant",
|
||||
"password": "Mot de passe"
|
||||
},
|
||||
"home_s": {
|
||||
"1": "Catalogues",
|
||||
"2": "Fiches techniques",
|
||||
"3": "Autres"
|
||||
},
|
||||
"search_s": {
|
||||
"no_result": "Aucun résultat"
|
||||
},
|
||||
"sync_s": {
|
||||
"download": "Téléchargement",
|
||||
"update_completed": "Mise à jour effectuée",
|
||||
"updating_docs": "Mise à jour des documents",
|
||||
"updating_folders": "Mise à jour des dossiers",
|
||||
"sending_flyers": "Envoi des brochures",
|
||||
"updating_contacts": "Mise à jour des contacts",
|
||||
"user_install_completed": "Installation des utilisateurs effectuée",
|
||||
"updating_users": "Mise à jour des utilisateurs",
|
||||
"user_install": "Installation des utilisateurs",
|
||||
"start_sync": "LANCER LA SYNCHRONISATION",
|
||||
"new_app_version": "Une nouvelle version de l'application est disponible !",
|
||||
"open_store": "Ouvrir le store"
|
||||
},
|
||||
"contact_s": {
|
||||
"contact_transferred": "Contact transféré",
|
||||
"contact_will_be_sent_after_sync": "Le contact sera envoyé après synchronisation",
|
||||
"confirm_contact_delete": "Êtes-vous sûr de vouloir supprimer ce contact ?",
|
||||
"contact_deleted": "Contact supprimé",
|
||||
"contact_added": "Contact ajouté",
|
||||
"send_flyer": "Envoyer une brochure",
|
||||
"select_contact": "Sélectionnez le contact",
|
||||
"transfer": "Transférer",
|
||||
"contact_list": "Liste des contacts",
|
||||
"documents_list": "Liste des documents"
|
||||
},
|
||||
"contact_details_s": {
|
||||
"visits": "Visites",
|
||||
"notes": "Notes",
|
||||
"contact_saved": "Contact enregistré",
|
||||
"confirm_visit_delete": "Êtes-vous sûr de vouloir supprimer cette visite ?",
|
||||
"qrcode_not_vcard_format": "Ce QRCode n'est pas au format vCard",
|
||||
"customer": "Client",
|
||||
"prospect": "Prospect",
|
||||
"other": "Autre",
|
||||
"description": "Description",
|
||||
"no_visits": "Aucune visites",
|
||||
"visit_name": "Nom de la visite"
|
||||
},
|
||||
"error": {
|
||||
"error": "Erreur",
|
||||
"tablet_not_connected_internet": "La tablette n'est pas connectée à internet.",
|
||||
"tablet_not_synced_last_user": "La tablette n'as pas été synchronisée par l'utilisateur précédent.",
|
||||
"incorrect_credentials": "Identifiants incorrect.",
|
||||
"must_fill_login_fields": "Vous devez-remplir les champs de connexion.",
|
||||
"invalid_email_address": "Adresse email invalide",
|
||||
"error_has_occurred": "Une erreur est survenue",
|
||||
"must_be_connected_internet_sync": "Vous devez être connecté à internet pour lancer la synchronisation",
|
||||
"incomplete_form": "Formulaire incomplet",
|
||||
"fill_all_fields_and_1_doc_min": "Veuillez remplir tous les champs, 1 document minimum et une adresse email valide",
|
||||
"fill_other_field": "Vous devez remplir le champs description pour : Autre",
|
||||
"specify_type_contact": "Vous devez préciser le type de contact",
|
||||
"invalid_name": "Nom invalide",
|
||||
"invalid_firstname": "Prénom invalide",
|
||||
"camera_permission_denied": "Permission caméra refusée",
|
||||
"pending_camera_permission": "En attente de permission caméra"
|
||||
},
|
||||
"custom": {
|
||||
"select-1": {
|
||||
"title": "Type de commerce",
|
||||
"c1": "Commerce de détail",
|
||||
"c2": "Home Service / Freezer Center",
|
||||
"c3": "Restauration service à table",
|
||||
"c4": "Fast food et snacking",
|
||||
"c5": "Cafétaria / Self Service",
|
||||
"c6": "Société de restauration",
|
||||
"c7": "Restauration gré à gré / cuisine Centrale",
|
||||
"c8": "Distributeur indépendant",
|
||||
"c9": "Boulangerie pâtisserie",
|
||||
"c10": "PAI",
|
||||
"c11": "Destockeur",
|
||||
"c12": "Commerce Halal",
|
||||
"c13": "Restauration d'hébergement",
|
||||
"c14": "Centrale restauration commerciale",
|
||||
"c15": "Restauration évenementielle et parc",
|
||||
"c16": "Restauration de transport",
|
||||
"c17": "Marché public",
|
||||
"c18": "Cash",
|
||||
"c19": "Distributeur national",
|
||||
"c20": "Rungis",
|
||||
"c21": "Abbatoir",
|
||||
"c22": "Autre"
|
||||
},
|
||||
"select-2": {
|
||||
"title": "Site",
|
||||
"c1": "Celvia Dinde",
|
||||
"c2": "Celvia Elaborés",
|
||||
"c3": "Celvia Sérent",
|
||||
"c4": "Procanar",
|
||||
"c5": "Celtys",
|
||||
"c6": "Farmor",
|
||||
"c7": "Robichon",
|
||||
"c8": "Les Volailles de Kerana",
|
||||
"c9": "Bosher Volaille",
|
||||
"c10": "LDC Bretagne",
|
||||
"c11": "Doux Farmor",
|
||||
"c12": "Favreau"
|
||||
},
|
||||
"interest": {
|
||||
"p1": "Poulet",
|
||||
"p2": "Dinde",
|
||||
"p3": "Canard",
|
||||
"p4": "Autre"
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
ComApp/src/Resources/assets/img/arrow_down.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
ComApp/src/Resources/assets/img/background_ldc.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
ComApp/src/Resources/assets/img/flags/de.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
ComApp/src/Resources/assets/img/flags/en.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
ComApp/src/Resources/assets/img/flags/es.png
Normal file
|
After Width: | Height: | Size: 7.8 KiB |
BIN
ComApp/src/Resources/assets/img/flags/fr.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
ComApp/src/Resources/assets/img/left.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
ComApp/src/Resources/assets/img/logo-square-ldc.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
ComApp/src/Resources/assets/img/right.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |