From e8ac77ecbc3ad9af50065b87b288b132fcd39eca Mon Sep 17 00:00:00 2001
From: arnaud4d In the "Certificate Assistant", be sure to select the appropriate options:  
+* **Generate self-signed certificate** - runs the "Certificate Assistant" that allows you to generate a self-signed certificate. If you do not have an Apple developer certificate, you need to provide a self-signed certificate. With this certificate, no alert message is displayed if the application is deployed internally. If the application is deployed externally (i.e. through http or email), at launch macOS displays an alert message that the application's developer is unidentified. The user can "force" the opening of the application. In the "Certificate Assistant", be sure to select the appropriate options:  
> 4D recommends to subscribe to the Apple Developer Program to get access to Developer Certificates that are necessary to notarize applications (see below).
@@ -532,7 +524,7 @@ With your compiled applications, 4D automatically uses the last data file opened
This may be unsuitable if you want to duplicate a merged application intended to use different data files. Duplicated applications actually share the application's user preferences folder and thus, always use the same data file -- even if the data file is renamed, because the last file used for the application is opened.
-4D therefore lets you link the data file path to the application path. Dans ce cas, le fichier de données sera relié via un chemin spécifique et ne sera plus simplement le dernier fichier utilisé. You therefore link your data **by application path**.
+4D therefore lets you link the data file path to the application path. In this case, the data file will be linked using a specific path and will not just be the last file opened. You therefore link your data **by application path**.
This mode allows you to duplicate your merged applications without breaking the link to the data file. However, with this option, if the application package is moved on the disk, the user will be prompted for a data file, since the application path will no longer match the "executablePath" attribute (after a user has selected a data file, the *lastDataPath.xml* file is updated accordingly).
@@ -541,7 +533,7 @@ This mode allows you to duplicate your merged applications without breaking the
*Duplication when data linked by application path:* 
-You can select the data linking mode during the build application process. Vous pouvez :
+You can select the data linking mode during the build application process. You can either:
- Use the [Application page](#application) or [Client/Server page](#client-server) of the Build Application dialog box.
- Use the **LastDataPathLookup** XML key (single-user application or server application).
@@ -549,7 +541,7 @@ You can select the data linking mode during the build application process. Vous
### Defining a default data folder
-4D allows you to define a default data file at the application building stage. Au premier lancement de l'application, en l'absence de fichier local (cf. [séquence de lancement décrite ci-dessus](#opening-the-data-file)), le fichier de données par défaut est automatiquement ouvert silencieusement en mode lecture seule par 4D. Cela vous donne un meilleur contrôle sur la création et/ou l'ouverture des fichiers de données lors du premier lancement d'une application fusionnée.
+4D allows you to define a default data file at the application building stage. When the application is launched for the first time, if no local data file is found (see [opening sequence described above](#opening-the-data-file)), the default data file is automatically opened silently in read-only mode by 4D. This gives you better control over data file creation and/or opening when launching a merged application for the first time.
More specifically, the following cases are covered:
@@ -559,7 +551,7 @@ More specifically, the following cases are covered:
To define and use a default data file:
-- You provide a default data file (named "Default.4DD") and store it in a default folder (named "Default Data") inside the application project folder. This file must be provided along with all other necessary files, depending on the project configuration: index (.4DIndx), external Blobs, journal, etc. Il est de votre responsabilité de livrer un fichier de données par défaut valide. Note however that since a default data file is opened in read-only mode, it is recommended to uncheck the "Use Log File" option in the original structure file before creating the data file.
+- You provide a default data file (named "Default.4DD") and store it in a default folder (named "Default Data") inside the application project folder. This file must be provided along with all other necessary files, depending on the project configuration: index (.4DIndx), external Blobs, journal, etc. It is your responsibility to provide a valid default data file. Note however that since a default data file is opened in read-only mode, it is recommended to uncheck the "Use Log File" option in the original structure file before creating the data file.
- When the application is built, the default data folder is integrated into the merged application. All files within this default data folder are also embedded.
The following graphic illustrates this feature:
@@ -594,9 +586,9 @@ The last used and validated server path is automatically saved in a file named "
userPrefs:=Get 4D folder(Active 4D Folder)
```
-This mechanism addresses the case where the primary targeted server is temporary unavailable for some reason (maintenance mode for example). Lorsque ce cas se produit pour la première fois, la boîte de dialogue de sélection de serveur est affichée (si elle est autorisée, cf. ci-dessous) et l'utilisateur peut manuellement sélectionner un serveur alternatif, dont le chemin est alors sauvegardé si la connexion est établie et validée. Any subsequent unavailability would be handled automatically through the "lastServer.xml" path information.
+This mechanism addresses the case where the primary targeted server is temporary unavailable for some reason (maintenance mode for example). When this case occurs for the first time, the server selection dialog box is displayed (if allowed, see below) and the user can manually select an alternate server, whose path is then saved if the connection is successful. Any subsequent unavailability would be handled automatically through the "lastServer.xml" path information.
-> - When client applications cannot permanently benefit from the discovery service, for example because of the network configuration, it is recommended that the developer provide a host name at build time using the [IPAddress](https://doc.4d.com/4Dv17R6/4D/17-R6/IPAddress.300-4465710.en.html) key in the "BuildApp.4DSettings" file. Le mécanisme de sauvegarde du chemin du dernier serveur est conçu pour les cas d'indisponibilité temporaire uniquement.
+> - When client applications cannot permanently benefit from the discovery service, for example because of the network configuration, it is recommended that the developer provide a host name at build time using the [IPAddress](https://doc.4d.com/4Dv17R6/4D/17-R6/IPAddress.300-4465710.en.html) key in the "BuildApp.4DSettings" file. The mechanism addresses cases of temporary unavailability.
> - Pressing the **Alt/Option** key at startup to display the server selection dialog box is still supported in all cases.
@@ -605,7 +597,7 @@ This mechanism addresses the case where the primary targeted server is temporary
You can choose whether or not to display the standard server selection dialog box on merged client applications when the server cannot be reached. The configuration depends on the value of the [ServerSelectionAllowed](https://doc.4d.com/4Dv17R6/4D/17-R6/ServerSelectionAllowed.300-4465714.en.html) XML key on the machine where the application was built:
-- **Display of an error message with no access possible to the server selection dialog box**. Fonctionnement par défaut. The application can only quit.
+- **Display of an error message with no access possible to the server selection dialog box**. Default operation. The application can only quit.
`ServerSelectionAllowed`: **False** or key omitted 
- **Display of an error message with access to the server selection dialog box possible**. The user can access the server selection window by clicking on the **Select...** button.
From 9a6090cf23f9f3d4906475eb66e0e4f3947fe66b Mon Sep 17 00:00:00 2001
From: arnaud4d  OU (4D uniquement) Sélectionnez **Projet...** depuis le bouton de la barre d'outils **Nouveau** :  Un dialogue standard **Sauvegarde** apparaît, de façon à ce que vous choisissiez le nom et l'emplacement du dossier principal du projet 4D.
+1. Launch 4D or 4D Server.
+2. Select **New > Project...** from the **File** menu:  OR (4D only) Select **Project...** from the **New** toolbar button:  A standard **Save** dialog appears so you can choose the name and location of the 4D project's main folder.
-3. Saisissez le nom du dossier de projet et cliquez sur **Sauvegarder**. Ce nom sera utilisé :
- - comme le nom du dossier du projet,
- - comme nom du fichier .4DProject au premier niveau du dossier "Project".
+3. Enter the name of your project folder and click **Save**. This name will be used:
+ - as the name of the entire project folder,
+ - as the name of the .4DProject file at the first level of the "Project" folder.
- Vous pouvez choisir n'importe quel nom autorisé par votre système d'exploitation. Toutefois, si votre projet est destiné à fonctionner sur d'autres systèmes ou à être enregistré via un outil de gestion de version, vous devez tenir compte de leurs recommandations de dénomination spécifiques.
+ You can choose any name allowed by your operating system. However, if your project is intended to work on other systems or to be saved via a source control tool, you must take their specific naming recommendations into account.
-Lorsque vous validez la boîte de dialogue **Enregistrer**, 4D ferme le projet en cours (le cas échéant), crée un dossier de projet à l'emplacement indiqué et y place tous les fichiers nécessaires au projet. Pour plus d'informations, voir [Architecture d'un projet 4D](Project/architecture.md).
+When you validate the **Save** dialog, 4D closes the current project (if any), creates a project folder at the indicated location, and puts all files needed for the project into it. For more information, refer to [Architecture of a 4D Project](Project/architecture.md).
-Vous pouvez alors commencer à développer votre projet.
+You can then start developing your project.
-## Ouvrir un projet local
+## Opening a local project
-Pour ouvrir un projet existant en local depuis 4D :
+To open an existing project locally from 4D:
-1. Sélectionnez **Ouvrir un projet d'application local** dans la boite de dialogue de l'Assistant de bienvenue OU Sélectionnez **Ouvrir > Projet local...** à partir du menu **Fichier** ou du bouton **Ouvrir** de la barre d'outils. La boîte de dialogue standard d’ouverture de fichiers apparaît.
+1. Select **Open a local application project** in the Welcome Wizard dialog, OR Select **Open/Local Project...** from the **File** menu or the **Open** toolbar button. The standard Open dialog appears.
-2. Sélectionnez le fichier `.4dproject` du projet et cliquez sur **Ouvrir**. By default, the project is opened with its current data file. Other file types are suggested:
+2. Select the project's `.4dproject` file and click **Open**. By default, the project is opened with its current data file. Other file types are suggested:
- *Packed project files*: `.4dz` extension - deployment projects
- *Shortcut files*: `.4dlink` extension - store additional parameters needed for opening projects or applications (addresses, identifiers, etc.)
@@ -53,7 +53,7 @@ The first time you connect to a 4D Server project via a remote 4D, you will usua
To connect remotely to a 4D Server project:
-1. Select **Connect to 4D Server** in the Welcome Wizard dialog, OU Select **Open/Remote Project...** from the **File** menu or the **Open** toolbar button.
+1. Select **Connect to 4D Server** in the Welcome Wizard dialog, OR Select **Open/Remote Project...** from the **File** menu or the **Open** toolbar button.
The 4D Server connection dialog appears. This dialog has three tabs: **Recent**, **Available**, and **Custom**.
@@ -81,13 +81,13 @@ Once a connection to the server has been established, the remote project will be
-## Raccourcis d’ouverture des projets
+## Project opening shortcuts
-4D propose deux façons d’ouvrir directement des projets, sans passer par la boîte de dialogue d’ouverture :
+4D offers two ways to let you open projects directly and bypass the Open dialog:
-- via les options du menu :
- - *Barre de menu* - **Fichier** > **Ouvrir Projets récents / {project name}**
- - *Barre d'outils 4D* - Sélectionnez le projetà partir du menu associé au bouton **Ouvrir**
+- via menu options:
+ - *Menu bar* - **File** > **Open Recent Projects / {project name}**
+ - *4D Tool bar* - Select the project from the menu associated with the **Open** button
-- via les préférences :
+- via preferences:
- Set the **At startup** general preference to **Open last used project**.
\ No newline at end of file
From 19bc664d5b374b11a58865aadf5cdbc77a18ecbf Mon Sep 17 00:00:00 2001
From: arnaud4d
Insérez votre exemple ici \` `` | Utilisé pour formater des exemples de code 4D (utilise la bibliothèque highlight.js) |
+| Line | Description |
+| -------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
+| \| HTML comment. Used in priority as the method description in the [code editor tips](#viewing-documentation-in-the-code-editor) |
+| ## Description | Heading level 2 in Markdown. The first sentence after this tag is used as the method description in the code editor tips if HTML comment is not used |
+| ## Example | Heading level 2, you can use this area to show sample code |
+| \``` 4D
Type your example here \` `` | Used to format 4D code examples (uses highlight.js library) |
-### Prise en charge du markdown
-- La balise de titre est prise en charge :
+### Supported Markdown
+- The title tag is supported:
```
# Title 1
## Title 2
### Title 3
```
-- Les balises de style (italique, gras, barré) sont prises en charge :
+- The style tags (italic, bold, strikethrough) are supported:
```
_italic_
@@ -151,15 +151,15 @@ _italic_
```
-- La balise du bloc de code (\```4d ... ```) est supportée avec le surlignage du code 4D :
+- The code block tag (\```4d ... ```) is supported with 4D code highlight:
\``` 4d
-C_TEXT($txt)
-$txt:="Hello world!"
+ C_TEXT($txt)
+ $txt:="Hello world!"
\` ``
-- La balise de tableau est prise en charge :
+- The table tag is supported:
```
| Parameter | Type | Description |
@@ -168,7 +168,7 @@ $txt:="Hello world!"
| toolbar | String |Toolbar name |
```
-- La balise de lien est prise en charge :
+- The link tag is supported:
```
// Case 1
@@ -180,7 +180,7 @@ The [documentation](https://doc.4d.com) of the command ....
[1]: https://blog.4d.com
```
-- Les balises d'image sont prises en charge :
+- The image tags are supported:
```

@@ -189,18 +189,24 @@ The [documentation](https://doc.4d.com) of the command ....
[](https://blog.4d.com)
```
-[](https://blog.4d.com)
+[](https://blog.4d.com)
-> Pour plus d'informations, consultez le [guide Markdown GitHug](https://guides.github.com/features/mastering-markdown/).
+> For more information, see the [GitHug Markdown guide](https://guides.github.com/features/mastering-markdown/).
-## Exemple
+## Example
-Dans le fichier `WP SwitchToolbar.md`, vous pouvez entrer le code suivant :
+In the `WP SwitchToolbar.md` file, you can write:
```4d
+
+
+
+GetLogo (size) -> logo
+
+
| Parameter | Type | in/out | Description |
| --------- | ------ | ------ | ----------- |
| size | Longint | in | Logo style selector (1 to 5) |
@@ -209,18 +215,18 @@ Dans le fichier `WP SwitchToolbar.md`, vous pouvez entrer le code suivant :
## Description
-Cette méthode retourne un logo de taille spécifique, selon la valeur du paramètre *size*.
-1 = plus petite taille, 5 = plus grande taille.
+This method returns a logo of a specific size, depending on the value of the *size* parameter value.
+1 = smallest size, 5 = largest size.
-## Exemple
+## Example
C_PICTURE($logo)
C_LONGINT($size)
-//Obtenir le plus grand logo
+//Get the largest logo
$logo:=GetLogo(5)
```
-- Vue de l'Explorateur : 
+- Explorer view: 
-- Vue de l’Éditeur de code : 
+- Code editor view: 
From 4faf1eecb3375e7b1d8ad56d23f19733ea9834fd Mon Sep 17 00:00:00 2001
From: arnaud4d
ou
Développe un attribut BLOB pour l'enregistrer.
+Expands an image stored in an Image attribute (*e.g.*, `Employee(1)/photo?$imageformat=best&$expand=photo`)
or
Expands an BLOB attribute to save it.
-> **Compatibilité** : pour des raisons de compatibilité, $expand peut être utilisé pour développer un attribut relationnel (par exemple, `Company(1)?$expand= staff` ou `EmployeeEmployee/?$filter="firstName BEGIN a"&$expand=employer`). Il est cependant recommandé d'utiliser [`$attributes`]($attributes.md) pour cette fonctionnalité.
+> **Compatibility**: For compatibility reasons, $expand can be used to expand a relational attribute (*e.g.*, `Company(1)?$expand=staff` or `Employee/?$filter="firstName BEGIN a"&$expand=employer`). It is however recommended to use [`$attributes`]($attributes.md) for this feature.
-## Affichage d'un attribut d'image
+## Viewing an image attribute
-Si vous souhaitez afficher intégralement un attribut d'image, saisissez ce qui suit :
+If you want to view an image attribute in its entirety, write the following:
`GET /rest/Employee(1)/photo?$imageformat=best&$version=1&$expand=photo`
-Pour plus d'informations sur les formats d'image, reportez-vous à [`$imageformat`]($imageformat.md). Pour plus d'informations sur le paramètre de version, reportez-vous à [`$version`]($version.md).
+For more information about the image formats, refer to [`$imageformat`]($imageformat.md). For more information about the version parameter, refer to [`$version`]($version.md).
-## Enregistrement d'un attribut BLOB sur le disque
+## Saving a BLOB attribute to disk
-Si vous souhaitez enregistrer un BLOB stocké dans votre classe de datastore, vous pouvez écrire ce qui suit en passant également "true" à $binary :
+If you want to save a BLOB stored in your datastore class, you can write the following by also passing "true" to $binary:
`GET /rest/Company(11)/blobAtt?$binary=true&$expand=blobAtt`
\ No newline at end of file
From bec1f13e469fd5a0f5694661e7e82046a14afb51 Mon Sep 17 00:00:00 2001
From: arnaud4d
**Attention** : dans les applications compilées, les paramètres de structure sont stockés dans le fichier .4dz (lecture seule). Pour le déploiement, il est nécessaire d'utiliser les *paramètres utilisateur* ou les *paramètres utilisateur pour les données* afin de définir des paramètres personnalisés. | XML | -| tips.json | Définit les messages d'aide | JSON | -| lists.json | Listes définies | JSON | -| filters.json | Filtres définis | JSON | -| styleSheets.css | Feuilles de style CSS | CSS | -| styleSheets_mac.css | Feuilles de style css sur Mac (à partir d'une base binaire convertie) | CSS | -| styleSheets_windows.css | Feuilles de style css sur Windows (à partir d'une base binaire convertie) | CSS | +| Contents | Description | Format | +| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ | +| catalog.4DCatalog | Table and field definitions | XML | +| folders.json | Explorer folder definitions | JSON | +| menus.json | Menu definitions | JSON | +| settings.4DSettings | *Structure* database settings. They are not taken into account if *[user settings](#settings-folder-1)* or *[user settings for data](#settings-folder)* are defined.
**Warning**: In compiled applications, structure settings are stored in the .4dz file (read-only). For deployment needs, it is necessary to use *user settings* or *user settings for data* to define custom settings. | XML |
+| tips.json | Defined tips | JSON |
+| lists.json | Defined lists | JSON |
+| filters.json | Defined filters | JSON |
+| styleSheets.css | CSS style sheets | CSS |
+| styleSheets_mac.css | Mac css style sheets (from converted binary database) | CSS |
+| styleSheets_windows.css | Windows css style sheets (from converted binary database) | CSS |
-#### Dossier DatabaseMethods
+#### DatabaseMethods folder
-| Contenu | Description | Format |
-| ------------------------ | ------------------------------------------------------------------ | ------ |
-| *databaseMethodName*.4dm | Méthodes base définies dans le projet. Un fichier par méthode base | Texte |
+| Contents | Description | Format |
+| ------------------------ | --------------------------------------------------------------------- | ------ |
+| *databaseMethodName*.4dm | Database methods defined in the project. One file per database method | text |
-#### Dossier Methods
+#### Methods folder
-| Contenu | Description | Format |
-| ---------------- | --------------------------------------------------------------- | ------ |
-| *methodName*.4dm | Méthodes projet définies dans le projet. Un fichier par méthode | Texte |
+| Contents | Description | Format |
+| ---------------- | ----------------------------------------------------------- | ------ |
+| *methodName*.4dm | Project methods defined in the project. One file per method | text |
-#### Dossier Classes
+#### Classes folder
-| Contenu | Description | Format |
-| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ |
-| *className*.4dm | Méthode de définition de classe utilisateur, permettant d'instancier des objets spécifiques. Un fichier par classe, le nom du fichier est le nom de la classe | Texte |
+| Contents | Description | Format |
+| --------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ------ |
+| *className*.4dm | User class definition method, allowing to instantiate specific objects. One file per class, the name of the file is the class name | text |
-#### Dossier Forms
+#### Forms folder
-| Contenu | Description | Format |
-| ----------------------------------------- | -------------------------------------------- | ------- |
-| *formName*/form.4DForm | Description du formulaire projet | json |
-| *formName*/method.4dm | Méthode formulaire projet | Texte |
-| *formName*/Images/*pictureName* | Image statique du formulaire projet | picture |
-| *formName*/ObjectMethods/*objectName*.4dm | Méthodes objet. Un fichier par méthode objet | Texte |
+| Contents | Description | Format |
+| ----------------------------------------- | ------------------------------------------ | ------- |
+| *formName*/form.4DForm | Project form description | json |
+| *formName*/method.4dm | Project form method | text |
+| *formName*/Images/*pictureName* | Project form static picture | picture |
+| *formName*/ObjectMethods/*objectName*.4dm | Object methods. One file per object method | text |
-#### Dossier TableForms
+#### TableForms folder
-| Contenu | Description | Format |
-| ---------------------------------------------------- | ---------------------------------------------------------------------------- | ------- |
-| *n*/Input/*formName*/form.4DForm | Description du formulaire d'entrée de la table (n étant le numéro de table) | json |
-| *n*/Input/*formName*/Images/*pictureName* | Images statiques du formulaire d'entrée de la table | picture |
-| *n*/Input/*formName*/method.4dm | Méthode du formulaire d'entrée de la table | Texte |
-| *n*/Input/*formName*/ObjectMethods/*objectName*.4dm | Méthodes objet du formulaire d'entrée. Un fichier par méthode objet | Texte |
-| *n*/Output/*formName*/form.4DForm | Description du formulaire de sortie de la table (n étant le numéro de table) | json |
-| *n*/Output/*formName*/Images/*pictureName* | Images statiques du formulaire de sortie de la table | picture |
-| *n*/Output/*formName*/method.4dm | Méthode du formulaire de sortie de la table | Texte |
-| *n*/Output/*formName*/ObjectMethods/*objectName*.4dm | Méthodes objet du formulaire de sortie. Un fichier par méthode objet | Texte |
+| Contents | Description | Format |
+| ---------------------------------------------------- | ------------------------------------------------------ | ------- |
+| *n*/Input/*formName*/form.4DForm | Input table form description (n is the table number) | json |
+| *n*/Input/*formName*/Images/*pictureName* | Input table form static pictures | picture |
+| *n*/Input/*formName*/method.4dm | Input table form method | text |
+| *n*/Input/*formName*/ObjectMethods/*objectName*.4dm | Input form object methods. One file per object method | text |
+| *n*/Output/*formName*/form.4DForm | Output table form description (n is the table number) | json |
+| *n*/Output/*formName*/Images/*pictureName* | Output table form static pictures | picture |
+| *n*/Output/*formName*/method.4dm | Output table form method | text |
+| *n*/Output/*formName*/ObjectMethods/*objectName*.4dm | Output form object methods. One file per object method | text |
-#### Dossier Triggers
+#### Triggers folder
-| Contenu | Description | Format |
-| ------------- | ------------------------------------------------------------------------------------------------------ | ------ |
-| table_*n*.4dm | Méthodes trigger définies dans le projet. Un fichier de trigger par table (n étant le numéro de table) | Texte |
+| Contents | Description | Format |
+| ------------- | ------------------------------------------------------------------------------------------ | ------ |
+| table_*n*.4dm | Trigger methods defined in the project. One trigger file per table (n is the table number) | text |
-**Note :** L'extension de fichier .4dm est un format de fichier texte contenant le code d'une méthode 4D. Il est compatible avec les outils de contrôle de version.
+**Note:** The .4dm file extension is a text-based file format, containing the code of a 4D method. It is compliant with source control tools.
-### Dossier Trash
+### Trash folder
-Le dossier Trash contient des méthodes et des formulaires qui ont été supprimés du projet (le cas échéant). Il peut contenir les dossiers suivants :
+The Trash folder contains methods and forms that were deleted from the project (if any). It can contain the following folders:
- Méthodes
-- Formulaires
+- Forms
- TableForms
-Dans ces dossiers, les noms des éléments supprimés sont entre parenthèses, par exemple. "(myMethod).4dm". L'organisation des dossiers est identique à celle du dossier [Sources](#sources).
+Within these folders, deleted element names are in parentheses, e.g. "(myMethod).4dm". The folder organization is identical to the [Sources](#sources) folder.
-### Dossier DerivedData
+### DerivedData folder
-Le dossier DerivedData contient des données en cache utilisées en interne par 4D pour optimiser le traitement. Il est automatiquement créé ou recréé si nécessaire. Vous pouvez ignorer ce dossier.
+The DerivedData folder contains cached data used internally by 4D to optimize processing. It is automatically created or recreated when necessary. You can ignore this folder.
-## Dossier Resources
+## Resources folder
-Le dossier Resources contient tous les fichiers et dossiers de ressources personnalisés du projet. Dans ce dossier, vous pouvez placer tous les fichiers nécessaires à la traduction ou à la personnalisation de l'interface de l'application (fichiers image, fichiers texte, fichiers XLIFF, etc.). 4D utilise des mécanismes automatiques pour manipuler le contenu de ce dossier, notamment pour le traitement des fichiers XLIFF et des images statiques. Pour l'utilisation en mode distant, le dossier Resources vous permet de partager des fichiers entre le serveur et tous les ordinateurs clients. Voir le *Manuel 4D Server - Référence*.
+The Resources folder contains any custom project resource files and folders. In this folder, you can place all the files needed for the translation or customization of the application interface (picture files, text files, XLIFF files, etc.). 4D uses automatic mechanisms to work with the contents of this folder, in particular for the handling of XLIFF files and static pictures. For using in remote mode, the Resources folder lets you share files between the server machine and all the client machines. See the *4D Server Reference Manual*.
-| Contenu | Description | Format |
-| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
-| *item* | Fichiers et dossiers de ressources de la base | variés |
-| Images/Library/*item* | Images de la bibliothèque d'images sous forme de fichiers séparés(*). Les noms de ces éléments deviennent des noms de fichiers. Si un élément dupliqué existe, un numéro est ajouté au nom. | picture |
+| Contents | Description | Format |
+| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
+| *item* | Project resource files and folders | various |
+| Images/Library/*item* | Pictures from the Picture Library as separate files(*). Names of these items become file names. If a duplicate exists, a number is added to the name. | picture |
-(*) uniquement si le projet a été exporté depuis une base binaire .4db.
+(*) only if the project was exported from a .4db binary database.
-## Dossier Data
+## Data folder
-Le dossier Data contient le fichier de données ainsi que tous les fichiers et dossiers relatifs aux données.
+The data folder contains the data file and all files and folders relating to the data.
-| Contenu | Description | Format |
-| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
-| data.4dd(*) | Fichier de données contenant les données saisies dans les enregistrements et toutes les données appartenant aux enregistrements. Lorsque vous ouvrez un projet 4D, l'application ouvre par défaut le fichier de données courant. Si vous modifiez le nom ou l'emplacement de ce fichier, la boîte de dialogue *Ouvrir un fichier de données* apparaît alors pour vous permettre de sélectionner le fichier de données à utiliser ou d'en créer un nouveau | binaire |
-| data.journal | Créé uniquement lorsque la base de données utilise un fichier journal. Le fichier journal est utilisé pour assurer la sécurité des données entre les sauvegardes. Toutes les opérations effectuées sur les données sont enregistrées séquentiellement dans ce fichier. Par conséquent, chaque opération sur les données entraîne deux actions simultanées : la première sur les données (l'instruction est exécutée normalement) et la seconde dans le fichier journal (une description de l'opération est enregistrée). Le fichier journal est construit indépendamment, sans perturber ni ralentir le travail de l'utilisateur. Une base de données ne peut fonctionner qu'avec un seul fichier journal à la fois. Le fichier journal enregistre des opérations telles que des ajouts, des modifications ou des suppressions d'enregistrements, des transactions, etc. Il est généré par défaut lors de la création d'une base de données. | binaire |
-| data.match | (interne) UUID correspondant au numéro de la table | XML |
+| Contents | Description | Format |
+| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ |
+| data.4dd(*) | Data file containing data entered in the records and all the data belonging to the records. When you open a 4D project, the application opens the current data file by default. If you change the name or location of this file, the *Open data file* dialog box will then appear so that you can select the data file to use or create a new one | binary |
+| data.journal | Created only when the database uses a log file. The log file is used to ensure the security of the data between backups. All operations carried out on the data are recorded sequentially in this file. Therefore, each operation on the data causes two simultaneous actions: the first on the data (the statement is executed normally) and the second in the log file (a description of the operation is recorded). The log file is constructed independently, without disturbing or slowing down the user’s work. A database can only work with a single log file at a time. The log file records operations such as additions, modifications or deletions of records, transactions, etc. It is generated by default when a database is created. | binary |
+| data.match | (internal) UUID matching table number | XML |
-(*) Lorsque le projet est créé depuis une base binaire .4b, le fichier de données demeure inchangé. Ainsi, il peut être nommé différemment et placé dans un autre emplacement.
+(*) When the project is created from a .4db binary database, the data file is left untouched. Thus, it can be named differently and placed in another location.
-### Dossier Settings
+### Settings folder
-Ce dossier contient des **fichiers de propriétés utilisateur des données** utilisés pour l'administration de l'application.
+This folder contains **user settings files for data** used for application administration.
-> Ces paramètres ont la priorité sur les **[fichiers de propriétés utilisateur](#settings-folder-1)** et les fichiers de **[propriétés structure](#sources-folder)**.
+> These settings take priority over **[user settings files](#settings-folder-1)** and **[structure settings](#sources-folder)** files.
-| Contenu | Description | Format |
-| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ |
-| directory.json | Description des groupes et utilisateurs 4D et de leurs droits d'accès lorsque l'application est lancée avec ce fichier de données. | JSON |
-| Backup.4DSettings | Paramètres de sauvegarde de la base de données, utilisés pour définir les [options de sauvegarde](Backup/settings.md)) lorsque la base est lancée avec ce fichier de données. Les clés concernant la configuration de la sauvegarde sont décrites dans le manuel *Sauvegarde des clés XML 4D*. | XML |
-| settings.4DSettings | Propriétés de la base personnalisées pour ce fichier de données. | XML |
+| Contents | Description | Format |
+| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ |
+| directory.json | Description of 4D groups, users, and their access rights when the application is run with this data file. | JSON |
+| Backup.4DSettings | Database backup settings, used to set the [backup options](Backup/settings.md) when the database is run with this data file. Keys concerning backup configuration are described in the *4D XML Keys Backup* manual. | XML |
+| settings.4DSettings | Custom database settings for this data file. | XML |
-### Dossier Logs
+### Logs folder
-Le dossier Logs contient tous les fichiers journaux utilisés par le projet. Les fichiers journaux comprennent notamment :
+The Logs folder contains all log files used by the project. Log files include, in particular:
-- conversion de base de données,
-- requêtes de serveur Web,
-- journal des activités de sauvegarde/restitution (*Journal de sauvegarde\[xxx].txt*, voir [Journal de sauvegarde](Backup/backup.md#backup-journal))
-- débogage de commandes,
-- Requêtes 4D Server (générées sur les postes clients et sur le serveur).
+- database conversion,
+- web server requests,
+- backup/restore activities journal (*Backup Journal\[xxx].txt*, see [Backup journal](Backup/backup.md#backup-journal))
+- command debugging,
+- 4D Server requests (generated on client machines and on the server).
-> Un dossier Logs supplémentaire est disponible dans le dossier des préférences utilisateur du système (dossier 4D actif, voir la commande [Get 4D folder](https://doc.4d.com/4Dv18R4/4D/18-R4/Get-4D-folder.301-4982857.en.html)) pour les fichiers journaux de maintenance et dans les cas où le dossier de données est en lecture seule.
+> An additional Logs folder is available in the system user preferences folder (active 4D folder, see [Get 4D folder](https://doc.4d.com/4Dv18R4/4D/18-R4/Get-4D-folder.301-4982857.en.html) command) for maintenance log files and in cases where data folder is read-only.
-## Dossier Settings
+## Settings folder
-Ce dossier contient des **fichiers de propriétés utilisateur** utilisés pour l'administration de l'application.
+This folder contains **user settings files** used for application administration.
-> Ces paramètres ont la priorité sur les fichiers de **[propriétés structure](#sources-folder)**. Toutefois, si un **[fichier de paramètres utilisateur](#settings-folder)** existe, il est prioritaire par rapport au fichier des propriétés utilisateur.
+> These settings take priority over **[structure settings](#sources-folder)** files. However, if a **[user settings file for data](#settings-folder)** exists, it takes priority over user settings file.
-| Contenu | Description | Format |
-| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ |
-| directory.json | Description des groupes et utilisateurs 4D pour l'application, ainsi que leurs droits d'accès | JSON |
-| Backup.4DSettings | Paramètres de sauvegarde de la base de données, utilisés pour définir les [options de sauvegarde](Backup/settings.md)) à chaque lancement de sauvegarde. Ce fichier peut également être utilisé pour lire ou définir des options supplémentaires, telles que la quantité d'informations stockées dans le *journal de sauvegarde*. Les clés concernant la configuration de la sauvegarde sont décrites dans le manuel *Sauvegarde des clés XML 4D*. | XML |
-| BuildApp.4DSettings | Fichier de paramètres de génération, créé automatiquement lors de l'utilisation de la boîte de dialogue du générateur d'applications ou de la commande `BUILD APPLICATION` | XML |
+| Contents | Description | Format |
+| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------ |
+| directory.json | Description of 4D groups and users for the application, as well as their access rights | JSON |
+| Backup.4DSettings | Database backup settings, used to set the [backup options](Backup/settings.md)) when each backup is launched. This file can also be used to read or set additional options, such as the amount of information stored in the *backup journal*. Keys concerning backup configuration are described in the *4D XML Keys Backup* manual. | XML |
+| BuildApp.4DSettings | Build settings file, created automatically when using the application builder dialog box or the `BUILD APPLICATION` command | XML |
-## Dossier userPreferences.*userName*
+## userPreferences.*userName* folder
-Ce dossier contient des fichiers qui mémorisent les configurations utilisateur, par exemple la position des points de rupture. Vous pouvez simplement ignorer ce dossier. Il contient par exemple :
+This folder contains files that memorize user configurations, e.g. break point positions. You can just ignore this folder. It contains for example:
-| Contenu | Description | Format |
-| ---------------------------- | --------------------------------------------------------------------- | ------ |
-| methodPreferences.json | Préférences de l'éditeur de méthodes de l'utilisateur courant | JSON |
-| methodWindowPositions.json | Position de la fenêtre de l'utilisateur courant pour les méthodes | JSON |
-| formWindowPositions.json | Position de la fenêtre de l'utilisateur courant pour les formulaires | JSON |
-| workspace.json | Liste de fenêtres ouvertes : sous macOS, ordre des fenêtres à onglets | JSON |
-| debuggerCatches.json | Appels vers commandes | JSON |
-| recentTables.json | Liste ordonée de tables | JSON |
-| preferencesv15.4DPreferences | Préférences utilisateur | JSON |
+| Contents | Description | Format |
+| ---------------------------- | ------------------------------------------------------ | ------ |
+| methodPreferences.json | Current user method editor preferences | JSON |
+| methodWindowPositions.json | Current user window positions for methods | JSON |
+| formWindowPositions.json | Current user window positions for forms | JSON |
+| workspace.json | List of opened windows; on macOS, order of tab windows | JSON |
+| debuggerCatches.json | Caught calls to commands | JSON |
+| recentTables.json | Ordered list of tables | JSON |
+| preferencesv15.4DPreferences | User preferences | JSON |
-## Dossier Components
+## Components folder
-Ce dossier contient les composants disponibles dans le projet d'application uniquement. Il doit être stocké au même niveau que le dossier Project.
+This folder contains the components to be available in the application project only. It must be stored at the same level as the Project folder.
-> Une application projet peut être elle-même un composant : - à des fins de développement : insérer un alias du fichier .4dproject dans le dossier Components du projet hôte. - à des fins de déploiement : [créer le composant](Admin/building.md#build-component) et insérer le fichier .4dz résultant dans un dossier .4dbase dans le dossier Components de l'application hôte.
+> An application project can be used itself as a component: - for development: put an alias of the .4dproject file in the Components folder of the host project. - for deployment: [build the component](Admin/building.md#build-component) and put the resulting .4dz file in a .4dbase folder in the Components folder of the host application.
-## Dossier Plugins
+## Plugins folder
-Ce dossier contient les plug-ins disponibles dans le projet d'application uniquement. Il doit être stocké au même niveau que le dossier Project.
+This folder contains the plug-ins to be available in the application project only. It must be stored at the same level as the Project folder.
-## Dossier documentation
+## Documentation folder
-Ce dossier contient tous les fichiers de documentation (.md) créés pour les éléments du projet, tels que les classes, les méthodes ou les formulaires. Les fichiers de documentation sont gérés et affichés dans l'Explorateur 4D.
+This folder contains all documentation files (.md) created for the project elements such as classes, methods, or forms. Documentation files are managed and displayed in the 4D Explorer.
-Pour plus d'informations, reportez-vous à [Documenter un projet](Project/documentation.md).
+For more information, refer to [Documenting a project](Project/documentation.md).
## WebFolder
-Il s'agit du dossier racine par défaut du serveur Web 4D pour les pages, les images, etc. Il est automatiquement créé lors du premier lancement du serveur Web.
\ No newline at end of file
+Defaut root folder of the 4D Web server for pages, pictures, etc. It is automatically created when the Web server is launched for the first time.
\ No newline at end of file
From 3635b9b62fbac44f39e889343d7e4911b869c448 Mon Sep 17 00:00:00 2001
From: arnaud4d
- Par défaut, cette option n'est pas activée. + By default, this option is not enabled.
| - Nom + Name | - Type de données + Data Type | - Valeurs possibles + Possible Values |
|---|
@@ -441,23 +441,23 @@ Cette propriété permet d'utiliser des styles spécifiques dans la zone sélect
- Modifie l'orientation (rotation) d'une zone de texte. Les zones de texte peuvent être pivotées par incréments de 90°. Chaque valeur d'orientation est appliquée tout en conservant le même point de départ inférieur gauche pour l'objet : + Modifies the orientation (rotation) of a text area. Text areas can be rotated by increments of 90°. Each orientation value is applied while keeping the same lower left starting point for the object:
| - Valeur d'orientation + Orientation value | - Résultat + Result |
|---|---|
| - 0 (par défaut) + 0 (default) | @@ -497,28 +497,28 @@ Cette propriété permet d'utiliser des styles spécifiques dans la zone sélect |
- En plus des zones de texte statiques, les objets de texte des zones de saisie peuvent être pivotés lorsqu'ils ne sont pas saisissables. Lorsqu'une propriété de rotation est appliquée à un objet de saisie, la propriété saisissable est supprimée (le cas échéant). Cet objet est alors exclu de l'ordre de saisie. + In addition to static text areas, input text objects can be rotated when they are non-enterable. When a rotation property is applied to an input object, the enterable property is removed (if any). This object is then excluded from the entry order.
| - Nom + Name | - Type de données + Data Type | - Valeurs possibles + Possible Values |
|---|
- Zone de saisie (non saisissable) - Zone de texte + Input (non-enterable) - Text Area
@@ -551,37 +551,37 @@ Cette propriété permet d'utiliser des styles spécifiques dans la zone sélect
- List box de type tableau
+ Array type list boxes
- Permet de définir une couleur de police personnalisée à chaque ligne de list box ou de chaque cellule de la colonne. + Allows setting a custom font color to each row of the list box or cell of the column.
- Le nom d'un tableau Entier Long doit être utilisé. Chaque élément de ce tableau correspond à une ligne de la zone de list box (si elle est appliquée à la liste box) ou à une cellule de la colonne (si elle est appliquée à une colonne), le tableau doit donc avoir la même taille que le tableau associé à la colonne. Vous pouvez utiliser les constantes du thème SET RGB COLORS. Si vous souhaitez que la cellule hérite de la couleur d'arrière-plan définie au niveau supérieur, passez la valeur -255 à l'élément de tableau correspondant. + The name of a Longint array must be used. Each element of this array corresponds to a row of the list box (if applied to the list box) or to a cell of the column (if applied to a column), so the array must be the same size as the array associated with the column. You can use the constants of the SET RGB COLORS theme. If you want the cell to inherit the background color defined at the higher level, pass the value -255 to the corresponding array element.
| - Nom + Name | - Type de données + Data Type | - Valeurs possibles + Possible Values | - Nom d'un tableau entier long + The name of a longint array |
|---|
- List Box - Colonne List Box + List Box - List Box Column
@@ -614,38 +614,38 @@ Cette propriété permet d'utiliser des styles spécifiques dans la zone sélect
- List box de type tableau
+ Array type list boxes
- Permet de définir un style de police personnalisé à chaque ligne de list box ou de chaque cellule de la colonne. + Allows setting a custom font style to each row of the list box or each cell of the column.
- Le nom d'un tableau Entier Long doit être utilisé. Chaque élément de ce tableau correspond à une ligne de la zone de list box (si elle est appliquée à la liste box) ou à une cellule de la colonne (si elle est appliquée à une colonne), le tableau doit donc avoir la même taille que le tableau associé à la colonne. Pour remplir le tableau (à l'aide d'une méthode), utilisez les constantes du thème Styles de caractères. Vous pouvez ajouter des constantes ensemble pour combiner plusieurs styles. Si vous souhaitez que la cellule hérite du style défini au niveau supérieur, passez la valeur -255 à l'élément de tableau correspondant. + The name of a Longint array must be used. Each element of this array corresponds to a row of the list box (if applied to the list box) or to a cell of the column (if applied to a column), so the array must be the same size as the array associated with the column. To fill the array (using a method), use the constants of the Font Styles theme. You can add constants together to combine styles. If you want the cell to inherit the style defined at the higher level, pass the value -255 to the corresponding array element.
| - Nom + Name | - Type de données + Data Type | - Valeurs possibles + Possible Values | - Nom d'un tableau entier long. + The name of a longint array. |
|---|
- List Box - Colonne List Box + List Box - List Box Column
- Cette propriété n'est disponible que pour une zone de saisie multi-styles. Lorsque cette propriété est activée, la zone stockera les balises de style avec le texte, même si aucune modification n'a été apportée. Dans ce cas, les balises correspondent au style par défaut. Lorsque cette propriété est désactivée, seules les balises de style modifiées sont stockées. + This property is only available for a Multi-style input area. When this property is enabled, the area will store the style tags with the text, even if no modification has been made. In this case, the tags correspond to the default style. When this property is disabled, only modified style tags are stored.
- Par exemple, voici un texte qui inclut une modification de style : + For example, here is a text that includes a style modification:
@@ -692,35 +692,35 @@ Cette propriété permet d'utiliser des styles spécifiques dans la zone sélect
- Lorsque la propriété est désactivée, la zone ne stocke que la modification qui a été apportée. Les contenus stockés sont donc : + When the property is disabled, the area only stores the modification. The stored contents are therefore:
-- -```4d - //Class: Square - - Class extends Rectangle - - Class constructor - C_LONGINT($1) - - // It calls the parent class's constructor with lengths - // provided for the Rectangle's width and height - Super($1;$1) - - // In derived classes, Super must be called before you - // can use 'This' - This.name:="Square" -``` - -#### Example 2 - This example illustrates the use of `Super` in a class member method. You created the `Rectangle` class with a function: ```4d @@ -460,70 +435,71 @@ Then you can write in a project method: | --------- | ------ | -- | -------------- | | Result | object | <- | Current object | -The `This` keyword returns a reference to the currently processed object. Il ne peut pas être défini par affectation lors de l'exécution, et il peut être différent à chaque fois que la fonction est appelée. +The `This` keyword returns a reference to the currently processed object. In 4D, it can be used in [different contexts](https://doc.4d.com/4Dv18/4D/18/This.301-4504875.en.html). + +In most cases, the value of `This` is determined by how a function is called. It can't be set by assignment during execution, and it may be different each time the function is called. -Lorsqu'une formule est appelée en tant que méthode membre d'un objet, son `This` est défini sur l'objet sur lequel la méthode est appelée. Par exemple : +When a formula is called as a member method of an object, its `This` is set to the object the method is called on. For example: ```4d $o:=New object("prop";42;"f";Formula(This.prop)) $val:=$o.f() //42 ``` -Lorsqu'une fonction de [class constructor](#class-constructor) est utilisée (avec le mot clé `new()`), son `This` est lié au nouvel objet en cours de construction.. +When a [class constructor](#class-constructor) function is used (with the `new()` keyword), its `This` is bound to the new object being constructed. ```4d - //Classe : ob + //Class: ob Class Constructor - // Créer des propriétés sur This - // en leur assignant + // Create properties on This as + // desired by assigning to them This.a:=42 ``` ```4d - // dans une méthode 4D + // in a 4D method $o:=cs.ob.new() $val:=$o.a //42 ``` -> Lorsque vous appelez le superclass constructor dans un constructeur à l'aide du mot clé [Super](#super), gardez à l'esprit que `This` ne doit pas être appelé avant le superclass constructor, sinon une erreur est générée. For example: -> -> ```4d -> $o:=New object("prop";42;"f";Formula(This.prop)) -> $val:=$o.f() //42 -> ``` -> -> When a [class constructor](#class-constructor) function is used (with the `new()` keyword), its `This` is bound to the new object being constructed. -> -> ```4d -> //Class: ob -> -> Class Constructor -> // Create properties on This as -> // desired by assigning to them -> This.a:=42 -> ``` -> -> ```4d -> // in a 4D method -> $o:=cs.ob.new() -> $val:=$o.a //42 -> ``` -> -> > When calling the superclass constructor in a constructor using the [Super](#super) keyword, keep in mind that `This` must not be called before the superclass constructor, otherwise an error is generated. Puisque *f* est appelée comme une méthode de $o, son `This` fait référence à $o. -> > -> > ## Commandes de classe -> > -> > Plusieurs commandes du langage 4D permettent de gérer les fonctionnalités de classe. -> > -> > ### OB Class -> > -> > #### OB Class (objet) -> Objet | Null -> > -> > `OB Class` renvoie la classe de l'objet passé en paramètre. -> > -> > ### OB Instance of -> > -> > #### OB Instance of (objet; classe) -> Booléen -> > -> > `OB Instance of` renvoie `true` si `object` appartient à `class` ou à l'une de ses classes héritées, et `false` dans le cas contraire +> When calling the superclass constructor in a constructor using the [Super](#super) keyword, keep in mind that `This` must not be called before the superclass constructor, otherwise an error is generated. See [this example](#example-1). + + +In any cases, `This` refers to the object the method was called on, as if the method were on the object. + +```4d + //Class: ob + + Function f + $0:=This.a+This.b +``` + +Then you can write in a project method: + +```4d +$o:=cs.ob.new() +$o.a:=5 +$o.b:=3 +$val:=$o.f() //8 +``` +In this example, the object assigned to the variable $o doesn't have its own *f* property, it inherits it from its class. Since *f* is called as a method of $o, its `This` refers to $o. + + +## Class commands + +Several commands of the 4D language allows you to handle class features. + + +### OB Class + +#### OB Class ( object ) -> Object | Null + +`OB Class` returns the class of the object passed in parameter. + + +### OB Instance of + +#### OB Instance of ( object ; class ) -> Boolean + +`OB Instance of` returns `true` if `object` belongs to `class` or to one of its inherited classes, and `false` otherwise. From 1cb323041f07390c65f434251baed5109e9b3ee8 Mon Sep 17 00:00:00 2001 From: arnaud4dQuelle <SPAN STYLE="font-size:13.5pt">belle</SPAN> journée ! +(voir ci-dessous). +> The `On After Keystroke` event can generally be replaced by the [`On After Edit`](onAfterEdit.md) event (see below). -Après avoir sélectionné les propriétés d'événement [`On Before Keystroke`](onBeforeKeystroke.md) et `On After Keystroke` pour un objet, vous pouvez détecter et gérer les frappes au sein de l'objet, en utilisant la commande `FORM event` qui renverra `On Before Keystroke` puis `On After Keystroke` (pour plus d'informations, veuillez reportez-vous à la description de la commande `Get edited text`). +After the [`On Before Keystroke`](onBeforeKeystroke.md) and `On After Keystroke` event properties are selected for an object, you can detect and handle the keystrokes within the object, using the `FORM event` command that will return `On Before Keystroke` and then `On After Keystroke` (for more information, please refer to the description of the `Get edited text` command). -Ces événements sont également activés par des commandes de langage qui simulent une action utilisateur telle que `POST KEY`. +These events are also activated by language commands that simulate a user action like `POST KEY`. -Gardez à l'esprit que les modifications utilisateur qui ne sont pas effectuées à l'aide du clavier (coller, glisser-déposer, etc.) ne sont pas prises en compte. Pour traiter ces événements, vous devez utiliser [`On After Edit`](onAfterEdit.md). +Keep in mind that user modifications that are not carried out using the keyboard (paste, drag-drop, etc.) are not taken into account. To process these events, you must use [`On After Edit`](onAfterEdit.md). -> Les événements [`On Before Keystroke`](onBeforeKeystroke.md) et `On After Keystroke` ne sont pas générés lors de l'utilisation d'une méthode de saisie. Une méthode de saisie (ou IME, Input Method Editor) est un programme ou un composant système qui peut être utilisé pour saisir des caractères ou des symboles complexes (par exemple, du japonais ou du chinois) à l'aide d'un clavier occidental. +> The [`On Before Keystroke`](onBeforeKeystroke.md) and `On After Keystroke` events are not generated when using an input method. An input method (or IME, Input Method Editor) is a program or a system component that can be used to enter complex characters or symbols (for example, Japanese or Chinese) using a Western keyboard. -### Voir également +### See also [On Before Keystroke](onBeforeKeystroke.md). \ No newline at end of file From a76d926e0d34ba3d82ab899a96b1a1e43f8288a3 Mon Sep 17 00:00:00 2001 From: arnaud4dWhat a <SPAN STYLE="font-size:13.5pt">beautiful</SPAN> day!- Lorsque la propriété est activée, la zone stocke toutes les informations de mise en forme. La première balise générique décrit le style par défaut puis chaque variation fait l'objet d'une paire de balises imbriquées. Les contenus stockés dans la zone sont donc : + When the property is enabled, the area stores all the formatting information. The first generic tag describes the default style then each variation is the subject of a pair of nested tags. The contents stored in the area are therefore:
<SPAN STYLE="font-family:'Arial';font-size:9pt;text-align:left;font-weight:normal;font-style:normal;text-decoration:none;color:#000000;background-color:#FFFFFF">What a <SPAN STYLE="font-size:13.5pt">beautiful</SPAN> day!</SPAN>- Grammaire JSON + JSON Grammar
@@ -734,13 +734,13 @@ Cette propriété permet d'utiliser des styles spécifiques dans la zone sélect - Nom + Name - Type de données + Data Type - Valeurs possibles + Possible Values - true, false (par défaut). + true, false (default). - Objets pris en charge + Objects Supported
From 6c2ba9170063542555785cbe63c6056109476ad2 Mon Sep 17 00:00:00 2001 From: arnaud4d
+When you assign the `gotoPage` [standard action](properties_Action.md#standard-action) to a tab control, 4D will automatically display the page of the form that corresponds to the number of the tab that is selected. -Par exemple, si l’utilisateur clique sur le 3e onglet, 4D affichera la page 3 du formulaire courant (si elle existe). +For example, if the user selects the 3rd tab, 4D will display the third page of the current form (if it exists). - - -## Propriétés prises en charge - -[Gras](properties_Text.md#bold) - [Bas](properties_CoordinatesAndSizing.md#bottom) - [Énumération](properties_DataSource.md#choice-list-static-list) - [Css Class](properties_Object.md#css-class) - [Type d'expression](properties_Object.md#expression-type) - [Police](properties_Text.md#font) - [Taille ](properties_Text.md#font-size) - [Hauteur](properties_CoordinatesAndSizing.md#height) - [Message d'aide](properties_Help.md#help-tip) - [Dim. horizontal](properties_ResizingOptions.md#horizontal-sizing) - [Italique](properties_Text.md#italic) - [Gauche](properties_CoordinatesAndSizing.md#left) - [Nom](properties_Object.md#object-name) - [Droite](properties_CoordinatesAndSizing.md#right) - [Valeur standard](properties_Object.md#save-value) - [Action standard](properties_Action.md#standard-action) - [Orientation onglets](properties_Appearance.md#tab-control-direction) - [Haut](properties_CoordinatesAndSizing.md#top) - [Type](properties_Object.md#type) - [Souligné](properties_Text.md#underline) - [Dim. vertical](properties_ResizingOptions.md#vertical-sizing) - [Variable ou expression](properties_Object.md#variable-or-expression) - [Visibilité](properties_Display.md#visibility) - [Largeur](properties_CoordinatesAndSizing.md#width) +## Supported Properties +[Bold](properties_Text.md#bold) - [Bottom](properties_CoordinatesAndSizing.md#bottom) - [Choice List](properties_DataSource.md#choice-list-static-list) - [Class](properties_Object.md#css-class) - [Expression Type](properties_Object.md#expression-type) - [Font](properties_Text.md#font) - [Font Size](properties_Text.md#font-size) - [Height](properties_CoordinatesAndSizing.md#height) - [Help Tip](properties_Help.md#help-tip) - [Horizontal Sizing](properties_ResizingOptions.md#horizontal-sizing) - [Italic](properties_Text.md#italic) - [Left](properties_CoordinatesAndSizing.md#left) - [Object Name](properties_Object.md#object-name) - [Right](properties_CoordinatesAndSizing.md#right) - [Save value](properties_Object.md#save-value) - [Standard action](properties_Action.md#standard-action) - [Tab Control Direction](properties_Appearance.md#tab-control-direction) - [Top](properties_CoordinatesAndSizing.md#top) - [Type](properties_Object.md#type) - [Underline](properties_Text.md#underline) - [Vertical Sizing](properties_ResizingOptions.md#vertical-sizing) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Visibility](properties_Display.md#visibility) - [Width](properties_CoordinatesAndSizing.md#width) From 9d2249b456df95dc441267a52608d4c386a05a4a Mon Sep 17 00:00:00 2001 From: arnaud4dDate: Wed, 16 Dec 2020 16:16:53 +0100 Subject: [PATCH 041/260] New translations properties_TextAndPicture.md (French) --- .../FormObjects/properties_TextAndPicture.md | 228 +++++++++--------- 1 file changed, 114 insertions(+), 114 deletions(-) diff --git a/website/translated_docs/fr/FormObjects/properties_TextAndPicture.md b/website/translated_docs/fr/FormObjects/properties_TextAndPicture.md index ad739488600b6a..f106908f5563b5 100644 --- a/website/translated_docs/fr/FormObjects/properties_TextAndPicture.md +++ b/website/translated_docs/fr/FormObjects/properties_TextAndPicture.md @@ -1,252 +1,252 @@ --- id: propertiesTextAndPicture -title: Texte et Image +title: Text and Picture --- --- -## Chemin d'accès arrière-plan +## Background pathname -Définit le chemin d'accès de l'image qui sera dessinée en arrière-plan de l'objet. Si l'objet utilise une [icône](#picture-pathname) avec [différents états](#number-of-states), l'image de fond prendra automatiquement en charge le même nombre d'états. +Sets the path of the picture that will be drawn in the background of the object. If the object uses an [icon](#picture-pathname) with [different states](#number-of-states), the background picture will automatically support the same number of states. -Le chemin d'accès à saisir est identique à celui de [la propriété Chemin d'accès pour les images statiques](properties_Picture.md#pathname). +The pathname to enter is similar as for the [Pathname property for static pictures](properties_Picture.md#pathname). -#### Grammaire JSON +#### JSON Grammar -| Nom | Type de données | Valeurs possibles | -| ----------------------- | --------------- | -------------------------------------------------------------------------------------------------------- | -| customBackgroundPicture | string | Chemin relatif en syntaxe POSIX. Doit être utilisé avec l'option "Personnalisé" de la propriété "Style". | +| Name | Data Type | Possible Values | +| ----------------------- | --------- | ------------------------------------------------------------------------------------------------------------ | +| customBackgroundPicture | string | Relative path in POSIX syntax. Must be used in conjunction with the style property with the "custom" option. | -#### Objets pris en charge +#### Objects Supported -[Bouton personnalisé](button_overview.md#custom) - [Case à cocher personnalisée](checkbox_overview.md#custom) - [Bouton radio personnalisé](radio_overview.md#custom) +[Custom Button](button_overview.md#custom) - [Custom Check Box](checkbox_overview.md#custom) - [Custom Radio Button](radio_overview.md#custom) --- -## Styles de bouton +## Button Style -Aspect général du bouton. Le style du bouton joue également un rôle dans la disponibilité de certaines options. +General appearance of the button. The button style also plays a part in the availability of certain options. -#### Grammaire JSON +#### JSON Grammar -| Nom | Type de données | Valeurs possibles | -|:-----:|:---------------:| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| style | Texte | "regular", "flat", "toolbar", "bevel", "roundedBevel", "gradientBevel", "texturedBevel", "office", "help", "circular", "disclosure", "roundedDisclosure", "custom" | +| Name | Data Type | Possible Values | +|:-----:|:---------:| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| style | text | "regular", "flat", "toolbar", "bevel", "roundedBevel", "gradientBevel", "texturedBevel", "office", "help", "circular", "disclosure", "roundedDisclosure", "custom" | -#### Objets pris en charge +#### Objects Supported -[Bouton](button_overview.md) - [Bouton radio](radio_overview.md) - [Case à cocher](checkbox_overview.md) - [Bouton radio](radio_overview.md) +[Button](button_overview.md) - [Radio Button](radio_overview.md) - [Check Box](checkbox_overview.md) - [Radio Button](radio_overview.md) --- -## Marge horizontale +## Horizontal Margin -Cette propriété permet de définir la taille (en pixels) des marges horizontales du bouton. Cette marge délimite la zone que l'icône et le titre du bouton ne doivent pas dépasser. +This property allows setting the size (in pixels) of the horizontal margins of the button. This margin delimits the area that the button icon and title must not surpass. -Ce paramètre est utile, par exemple, lorsque l'image de fond contient des bordures : +This parameter is useful, for example, when the background picture contains borders: -| Avec / Sans | Exemple | +| With / Without | Example | | -------------------- | --------------------------------------------------------- | -| Sans marge |  | -| Avec marge 13 pixels |  | -> Cette propriété fonctionne avec la propriété [Marge verticale](#vertical-margin). +| Without margin |  | +| With 13-pixel margin |  | +> This property works in conjunction with the [Vertical Margin](#vertical-margin) property. -#### Grammaire JSON +#### JSON Grammar -| Nom | Type de données | Valeurs possibles | -| ------------- | --------------- | ---------------------------------------------------- | -| customBorderX | number | A utiliser avec le style "personnalisé". Minimum : 0 | +| Name | Data Type | Possible Values | +| ------------- | --------- | --------------------------------------- | +| customBorderX | number | For use with "custom" style. Minimum: 0 | -#### Objets pris en charge +#### Objects Supported -[Bouton personnalisé](button_overview.md#custom) - [Case à cocher personnalisée](checkbox_overview.md#custom) - [Bouton radio personnalisé](radio_overview.md#custom) +[Custom Button](button_overview.md#custom) - [Custom Check Box](checkbox_overview.md#custom) - [Custom Radio Button](radio_overview.md#custom) --- -## Emplacement de l'icône +## Icon Location -Désigne l'emplacement d'une icône par rapport à l'objet formulaire. +Designates the placement of an icon in relation to the form object. -#### Grammaire JSON +#### JSON Grammar -| Nom | Type de données | Valeurs possibles | -| ------------- | --------------- | --------------------------- | -| iconPlacement | string | "aucun", "gauche", "droite" | +| Name | Data Type | Possible Values | +| ------------- | --------- | ----------------------- | +| iconPlacement | string | "none", "left", "right" | -#### Objets pris en charge +#### Objects Supported -[Entête de List Box](listbox_overview.md#list-box-headers) +[List Box Header](listbox_overview.md#list-box-headers) --- -## Décalage icône +## Icon Offset -Définit une valeur de décalage personnalisée en pixels, qui sera utilisée lorsque le bouton est cliqué +Sets a custom offset value in pixels, which will be used when the button is clicked -Le titre du bouton sera décalé vers la droite et vers le bas pour le nombre de pixels saisis. Cela permet d'appliquer un effet 3D personnalisé lorsque le bouton est cliqué. +The title of the button will be shifted to the right and toward the bottom for the number of pixels entered. This allows applying a customized 3D effect when the button is clicked. -#### Grammaire JSON +#### JSON Grammar -| Nom | Type de données | Valeurs possibles | -| ------------ | --------------- | ----------------- | -| customOffset | number | minimum : 0 | +| Name | Data Type | Possible Values | +| ------------ | --------- | --------------- | +| customOffset | number | minimum: 0 | -#### Objets pris en charge +#### Objects Supported -[Bouton personnalisé](button_overview.md#custom) - [Case à cocher personnalisée](checkbox_overview.md#custom) - [Bouton radio personnalisé](radio_overview.md#custom) +[Custom Button](button_overview.md#custom) - [Custom Check Box](checkbox_overview.md#custom) - [Custom Radio Button](radio_overview.md#custom) --- -## Nombre d'états +## Number of States -Cette propriété définit le nombre exact d'états présents dans l'image utilisée comme icône pour un [bouton avec icône](button_overview.md), une [case à cocher](checkbox_overview.md) ou un [bouton radio](radio_overview.md) personnalisé. En général, une icône de bouton comprend quatre états : actif, cliqué, survolé et inactif. +This property sets the exact number of states present in the picture used as the icon for a [button with icon](button_overview.md), a [check box](checkbox_overview.md) or a custom [radio button](radio_overview.md). In general, a button icon includes four states: active, clicked, mouse over and inactive. -Chaque état est représenté par une image différente. Dans l'image source, les états doivent être empilés verticalement : +Each state is represented by a different picture. In the source picture, the states must be stacked vertically:  -Les états suivants sont représentés : -1. bouton non cliqué / case non cochée (valeur de la variable = 0) -2. bouton cliqué / case cochée (valeur de la variable = 1) -3. survolé +The following states are represented: +1. button not clicked / check box unchecked (variable value=0) +2. button clicked / check box checked (variable value=1) +3. roll over 4. disabled -#### Grammaire JSON +#### JSON Grammar -| Nom | Type de données | Valeurs possibles | -| ---------- | --------------- | ----------------- | -| iconFrames | number | minimum: 1 | +| Name | Data Type | Possible Values | +| ---------- | --------- | --------------- | +| iconFrames | number | minimum: 1 | -#### Objets pris en charge +#### Objects Supported -[Bouton](button_overview.md) (tous les styles sauf[Aide](button_overview.md#help)) - [Case à cocher](checkbox_overview.md) - [Bouton radio](radio_overview.md) +[Button](button_overview.md) (all styles except [Help](button_overview.md#help)) - [Check Box](checkbox_overview.md) - [Radio Button](radio_overview.md) --- -## Chemin d'accès de l'image +## Picture pathname -Définit le chemin d'accès de l'image qui sera utilisée comme icône de l'objet. +Sets the path of the picture that will be used as icon for the object. -Le chemin d'accès à saisir est identique à celui de [la propriété Chemin d'accès pour les images statiques](properties_Picture.md#pathname). +The pathname to enter is similar as for the [Pathname property for static pictures](properties_Picture.md#pathname). -> Lorsqu'elle est utilisée comme icône pour les objets actifs, l'image doit être conçue pour prendre en charge [un nombre d'états](#number-of-states) variable. +> When used as icon for active objects, the picture must be designed to support a variable [number of states](#number-of-states). -#### Grammaire JSON +#### JSON Grammar -| Nom | Type de données | Valeurs possibles | -| ---- | --------------- | ---------------------------------------------- | -| icon | picture | Chemin relatif ou filesystem en syntaxe POSIX. | +| Name | Data Type | Possible Values | +| ---- | --------- | -------------------------------------------- | +| icon | picture | Relative or filesystem path in POSIX syntax. | -#### Objets pris en charge +#### Objects Supported -[Bouton](button_overview.md) (tous les styles sauf[Aide](button_overview.md#help)) - [Case à cocher](checkbox_overview.md) - [En-tête List box](listbox_overview.md#list-box-headers)[Bouton radio](listbox_overview.md#list-box-headers) +[Button](button_overview.md) (all styles except [Help](button_overview.md#help)) - [Check Box](checkbox_overview.md) - [List Box Header](listbox_overview.md#list-box-headers) - [Radio Button](radio_overview.md) --- -## Position Titre/Image +## Title/Picture Position -Cette propriété permet de modifier l’emplacement relatif du titre par rapport à l’icône associée. Cette propriété n’a pas d’effet lorsque le bouton contient uniquement un titre (pas d’image associée) ou une image (pas de titre). Par défaut, lorsqu’un bouton 3D contient un titre et une image, le texte est placé en-dessous de l’image. +This property allows modifying the relative location of the button title in relation to the associated icon. This property has no effect when the button contains only a title (no associated picture) or a picture (no title). By default, when a button contains a title and a picture, the text is placed below the picture. -Voici le résultat des différentes options de cette propriété : +Here are the results using the various options for this property: -| Option | Description | Exemple | -| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | -| **Gauche** | Le texte est placé à gauche de l’icône. Le contenu du bouton est aligné à droite. |  | -| **Haut** | Le texte est placé au-dessus de l’icône. Le contenu du bouton est centré. |  | -| **Droite** | Le texte est placé à droite de l’icône. Le contenu du bouton est aligné à gauche. |  | -| **Bas** | Le texte est placé en-dessous de l’icône. Le contenu du bouton est centré. |  | -| **Centre** | Le texte de l’icône est centré verticalement et horizontalement dans le bouton. Ce paramétrage convient par exemple pour du texte inclus dans une icône. |  | +| Option | Description | Example | +| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------- | +| **Left** | The text is placed to the left of the icon. The contents of the button are aligned to the right. |  | +| **Top** | The text is placed above the icon. The contents of the button are centered. |  | +| **Right** | The text is placed to the right of the icon. The contents of the button are aligned to the left. |  | +| **Bottom** | The text is placed below the icon. The contents of the button are centered. |  | +| **Centered** | The text of the icon is centered vertically and horizontally in the button. This parameter is useful, for example, for text included in an icon. |  | -#### Grammaire JSON +#### JSON Grammar -| Nom | Type de données | Valeurs possibles | -| ------------- | --------------- | ------------------------------------------ | -| textPlacement | string | "left", "top", "right", "bottom", "center" | +| Name | Data Type | Possible Values | +| ------------- | --------- | ------------------------------------------ | +| textPlacement | string | "left", "top", "right", "bottom", "center" | -#### Objets pris en charge +#### Objects Supported -[Bouton](button_overview.md) (tous les styles sauf[Aide](button_overview.md#help)) - [Case à cocher](checkbox_overview.md) - [Bouton radio](radio_overview.md) +[Button](button_overview.md) (all styles except [Help](button_overview.md#help)) - [Check Box](checkbox_overview.md) - [Radio Button](radio_overview.md) --- -## Marge verticale +## Vertical Margin -Cette propriété permet de définir la taille (en pixels) des marges verticales du bouton. Cette marge délimite la zone que l'icône et le titre du bouton ne doivent pas dépasser. +This property allows setting the size (in pixels) of the vertical margins of the button. This margin delimits the area that the button icon and title must not surpass. -Ce paramètre est utile, par exemple, lorsque l'image de fond contient des bordures. +This parameter is useful, for example, when the background picture contains borders. -> Cette propriété fonctionne avec la propriété [Marge horizontale](#horizontal-margin). +> This property works in conjunction with the [Horizontal Margin](#horizontal-margin) property. -#### Grammaire JSON +#### JSON Grammar -| Nom | Type de données | Valeurs possibles | -| ------------- | --------------- | ---------------------------------------------------- | -| customBorderY | number | A utiliser avec le style "personnalisé". Minimum : 0 | +| Name | Data Type | Possible Values | +| ------------- | --------- | --------------------------------------- | +| customBorderY | number | For use with "custom" style. Minimum: 0 | -#### Objets pris en charge +#### Objects Supported -[Bouton personnalisé](button_overview.md#custom) - [Case à cocher personnalisée](checkbox_overview.md#custom) - [Bouton radio personnalisé](radio_overview.md#custom) +[Custom Button](button_overview.md#custom) - [Custom Check Box](checkbox_overview.md#custom) - [Custom Radio Button](radio_overview.md#custom) --- -## Avec pop-up menu +## With pop-up menu -Cette propriété permet d’afficher un symbole en forme de triangle indiquant qu’un pop up menu lui est associé : +This property allows displaying a symbol that appears as a triangle in the button to indicate the presence of an attached pop-up menu:  -L’apparence et l’emplacement de ce symbole dépend du style de bouton et de la plate-forme courante. +The appearance and location of this symbol depends on the button style and the current platform. -### Séparé et Lié +### Linked and Separated -Pour associer un symbole de pop up menu à un bouton, vous disposez de deux options d’affichage : +To attach a pop-up menu symbol to a button, there are two display options available: -| Séparé | Et Lié | +| Linked | Separated | |:----------------------------------------------------:|:-------------------------------------------------------:| |  |  | -> La disponibilité effective d’un mode “Séparé” dépend du style de bouton et de la plate-forme. +> The actual availability of a "separated" mode depends on the style of the button and the platform. -Chaque option précise la relation entre le bouton et le pop up menu associé : +Each option specifies the relation between the button and the attached pop-up menu: - Lorsque le pop up menu est **séparé**, un clic sur la partie gauche du bouton exécute directement l’action courante du bouton ; cette action peut être modifiée via le pop up menu accessible dans la partie droite du bouton. Lorsque le pop up menu est **lié**, un simple clic sur le bouton ne déclenche aucune autre action que l’affichage du pop up menu. Seule la sélection de l’action dans le pop up menu provoque son déclenchement. + When the pop-up menu is **separated**, clicking on the left part of the button directly executes the current action of the button; this action can be modified using the pop-up menu accessible in the right part of the button. When the pop-up menu is **linked**, a simple click on the button only displays the pop-up menu. Only the selection of the action in the pop-up menu causes its execution. -### Gestion du pop up menu +### Managing the pop-up menu -Il est important de noter que la propriété “Avec pop up menu” gère uniquement l’aspect graphique du bouton. L’affichage du pop up menu et de ses valeurs doivent être entièrement gérés par le développeur, notamment à l’aide des `événements formulaire` et des commandes **[Pop up menu dynamique](https://doc.4d.com/4Dv18/4D/18/Dynamic-pop-up-menu.301-4505524.en.html)** et **[Pop up menu](https://doc.4d.com/4Dv17R5/4D/17-R5/Pop-up-menu.301-4127438.en.html)**. +It is important to note that the "With Pop-up Menu" property only manages the graphic aspect of the button. The display of the pop-up menu and its values must be handled entirely by the developer, more particularly using `form events` and the **[Dynamic pop up menu](https://doc.4d.com/4Dv18/4D/18/Dynamic-pop-up-menu.301-4505524.en.html)** and **[Pop up menu](https://doc.4d.com/4Dv17R5/4D/17-R5/Pop-up-menu.301-4127438.en.html)** commands. -#### Grammaire JSON +#### JSON Grammar -| Nom | Type de données | Valeurs possibles | -|:-------------- | --------------- | ---------------------------------------------------------------------------------------------------- | -| popupPlacement | string | "none" "linked" "separated" | +| Name | Data Type | Possible Values | +|:-------------- | --------- | ---------------------------------------------------------------------------------------------------- | +| popupPlacement | string | "none" "linked" "separated" | -#### Objets pris en charge +#### Objects Supported -[Bouton barre outils](button_overview.md#toolbar) - [Bouton Bevel](button_overview.md#bevel) - [Bouton bevel circulaire](button_overview.md#Rounded-bevel) - [Bouton OS X Gradient](button_overview.md#os-x-gradient) - [Bouton OS X Textured](button_overview.md#os-x-textured) - [Bouton Office XP](button_overview.md#office-XP) - [Bouton cercle](button_overview.md#circle) - [Personnalisé](button_overview.md#custom) \ No newline at end of file +[Toolbar Button](button_overview.md#toolbar) - [Bevel Button](button_overview.md#bevel) - [Rounded Bevel Button](button_overview.md#Rounded-bevel) - [OS X Gradient Button](button_overview.md#os-x-gradient) - [OS X Textured Button](button_overview.md#os-x-textured) - [Office XP Button](button_overview.md#office-XP) - [Circle Button](button_overview.md#circle) - [Custom](button_overview.md#custom) \ No newline at end of file From f8b4e4b7659630b5bf32dae583dd805c01429624 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:16:55 +0100 Subject: [PATCH 042/260] New translations properties_WebArea.md (French) --- .../fr/FormObjects/properties_WebArea.md | 100 +++++++++--------- 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/website/translated_docs/fr/FormObjects/properties_WebArea.md b/website/translated_docs/fr/FormObjects/properties_WebArea.md index 6ac82c6f4b0282..a690347b17a8e4 100644 --- a/website/translated_docs/fr/FormObjects/properties_WebArea.md +++ b/website/translated_docs/fr/FormObjects/properties_WebArea.md @@ -1,75 +1,75 @@ --- id: propertiesWebArea -title: Zone Web +title: Web Area --- --- -## Accéder aux méthodes 4D +## Access 4D methods -Il est possible d’appeler des méthodes 4D depuis le code JavaScript exécuté dans une zone Web et de recevoir des valeurs en retour. Pour pouvoir appeler des méthodes 4D depuis la zone Web, vous devez cocher l'option Accès méthodes 4D pour la zone dans la Liste des propriétés . +You can call 4D methods from the JavaScript code executed in a Web area and get values in return. To be able to call 4D methods from a Web area, you must activate the 4D methods accessibility property ("all"). -> Cette option n’apparaît que si l’option [Utiliser le moteur de rendu Web intégré](#use-embedded-web-rendering-engine) est cochée. +> This property is only available if the Web area [uses the embedded Web rendering engine](#use-embedded-web-rendering-engine). -Lorsque cette propriété est cochée, un objet JavaScript spécial `$4d` est instancié dans la zone Web et permet de [gérer les appels aux méthodes projet de 4D](webArea_overview.md#4d-object). +When this property is on, a special JavaScript object named `$4d` is instantiated in the Web area, which you can [use to manage calls to 4D project methods](webArea_overview.md#4d-object). -#### Grammaire JSON +#### JSON Grammar -| Nom | Type de données | Valeurs possibles | -| -------------------- | --------------- | -------------------------- | -| methodsAccessibility | string | "none" (par défaut), "all" | +| Name | Data Type | Possible Values | +| -------------------- | --------- | ----------------------- | +| methodsAccessibility | string | "none" (default), "all" | -#### Objets pris en charge +#### Objects Supported -[Zone Web](webArea_overview.md) +[Web Area](webArea_overview.md) --- -## Variable Progression +## Progression -La variable "Progression" est de type Entier long. Elle contient une valeur entre 0 et 100, représentant le pourcentage du chargement complet de la page affichée dans la zone Web. La variable est mise à jour automatiquement par 4D. Il n’est pas possible de la modifier manuellement. +Name of a Longint type variable. This variable will receive a value between 0 and 100, representing the page load completion percentage in the Web area. Automatically updated by 4D, cannot be modified manually. -#### Grammaire JSON +#### JSON Grammar -| Nom | Type de données | Valeurs possibles | -| -------------- | --------------- | ------------------------------ | -| progressSource | string | Nom d'une variable Entier long | +| Name | Data Type | Possible Values | +| -------------- | --------- | -------------------------- | +| progressSource | string | Name of a Longint variable | -#### Objets pris en charge +#### Objects Supported -[Zone Web](webArea_overview.md) +[Web Area](webArea_overview.md) --- -## Variable URL +## URL -La variable "URL" est de type chaîne. Elle contient l’URL chargé ou en cours de chargement par la zone Web associée. L’association entre la variable et la zone Web s’effectue dans les deux sens : +A String type variable that designates the URL loaded or being loading by the associated Web area. The association between the variable and the Web area works in both directions: -* Si l’utilisateur affecte un nouvel URL à la variable, l’URL est automatiquement chargé par la zone Web. -* Toute navigation effectuée à l’intérieur de la zone Web met automatiquement à jour le contenu de la variable. +* If the user assigns a new URL to the variable, this URL is automatically loaded by the Web area. +* Any browsing done within the Web area will automatically update the contents of the variable. -Schématiquement, cette variable fonctionne comme la zone d’adresse d’un navigateur Web. Vous pouvez la représenter par une zone de texte située au-dessus de la zone Web. +Schematically, this variable functions like the address area of a Web browser. You can represent it via a text area above the Web area. -### Variable URL et commande WA OUVRIR URL +### URL Variable and WA OPEN URL command -La variable URL produit les mêmes effets que la commande [WA OUVRIR URL](https://doc.4d.com/4Dv18/4D/18/WA-OPEN-URL.301-4504841.en.html). Les différences suivantes sont toutefois à noter : -- Pour les accès aux documents, la variable accepte uniquement des URLs conformes aux RFC ("file://c:/Mon%20Doc") et non les chemins d’accès système ("c:\MonDoc"). La commande [WA OPEN URL](https://doc.4d.com/4Dv18/4D/18/WA-OPEN-URL.301-4504841.en.html) accepte les deux notations. -- Si la variable URL contient une chaîne vide, la zone Web ne tente pas de charger l’URL. La commande [WA OPEN URL](https://doc.4d.com/4Dv18/4D/18/WA-OPEN-URL.301-4504841.en.html) génère une erreur dans ce cas. -- Si la variable URL ne contient pas de protocole (http, mailto, file, etc.), la zone Web ajoute "http://", ce qui n’est pas le cas pour la commande [WA OPEN URL](https://doc.4d.com/4Dv18/4D/18/WA-OPEN-URL.301-4504841.en.html). -- Lorsque la zone Web n’est pas affichée dans le formulaire (lorsqu’elle se trouve sur une autre page du formulaire), l’exécution de la commande[WA OPEN URL](https://doc.4d.com/4Dv18/4D/18/WA-OPEN-URL.301-4504841.en.html) est sans effet tandis que la valorisation de la variable URL permet de mettre à jour l’URL courant. +The URL variable produces the same effects as the [WA OPEN URL](https://doc.4d.com/4Dv18/4D/18/WA-OPEN-URL.301-4504841.en.html) command. The following differences should nevertheless be noted: +- For access to documents, this variable only accepts URLs that are RFC-compliant ("file://c:/My%20Doc") and not system pathnames ("c:\MyDoc"). The [WA OPEN URL](https://doc.4d.com/4Dv18/4D/18/WA-OPEN-URL.301-4504841.en.html) command accepts both notations. +- If the URL variable contains an empty string, the Web area does not attempt to load the URL. The [WA OPEN URL](https://doc.4d.com/4Dv18/4D/18/WA-OPEN-URL.301-4504841.en.html) command generates an error in this case. +- If the URL variable does not contain a protocol (http, mailto, file, etc.), the Web area adds "http://", which is not the case for the [WA OPEN URL](https://doc.4d.com/4Dv18/4D/18/WA-OPEN-URL.301-4504841.en.html) command. +- When the Web area is not displayed in the form (when it is located on another page of the form), executing the [WA OPEN URL](https://doc.4d.com/4Dv18/4D/18/WA-OPEN-URL.301-4504841.en.html) command has no effect, whereas assigning a value to the URL variable can be used to update the current URL. -#### Grammaire JSON +#### JSON Grammar -| Nom | Type de données | Valeurs possibles | -| --------- | --------------- | ----------------- | -| urlSource | string | Une URL. | +| Name | Data Type | Possible Values | +| --------- | --------- | --------------- | +| urlSource | string | A URL. | -#### Objets pris en charge +#### Objects Supported -[Zone Web](webArea_overview.md) +[Web Area](webArea_overview.md) @@ -77,27 +77,27 @@ La variable URL produit les mêmes effets que la commande [WA OUVRIR URL](https: --- -## Utiliser le moteur de rendu Web intégré +## Use embedded Web rendering engine -Cette option vous permet de choisir entre deux moteurs de rendus pour la zone Web, en fonction des spécificités de votre application : +This option allows choosing between two rendering engines for the Web area, depending on the specifics of your application: -* **unchecked** - `JSON value: system` (default): In this case, 4D uses the "best" engine corresponding to the system. Sous Windows, 4D utilise automatiquement la plus version la plus récente du navigateur présent sur la machine (IE11, MS Edge, etc.). Sur macOS, 4D utilise la version courante du WebKit (Safari). Ce fonctionnement vous permet de bénéficier automatiquement des dernières avancées en matière de rendu Web, via HTML5 ou JavaScript. En revanche, vous pouvez rencontrer des différences de rendu entre les implémentations d’Internet Explorer/Edge et de WebKit. -* **checked** - `JSON value: embedded`: In this case, 4D uses Blink engine from Google. L’utilisation d'un moteur Web intégré vous permet d’avoir l’assurance que le rendu et le fonctionnement des zones Web de votre application seront quasiment identiques, quelle que soit la plate-forme d’exécution de 4D (de légères variations de pixels ou des différences liées à l’implémentation réseau pourront toutefois être constatées). En contrepartie, vous ne bénéficiez plus des mises à jour automatiques du moteur Web effectuées par le système d’exploitation. Des nouvelles versions du moteur seront toutefois proposées via 4D. +* **unchecked** - `JSON value: system` (default): In this case, 4D uses the "best" engine corresponding to the system. On Windows, 4D automatically uses the most recent version of the browser found on the machine (IE11, MS Edge, etc.). On macOS, 4D uses the current version of WebKit (Safari). This means that you automatically benefit from the latest advances in Web rendering, through HTML5 or JavaScript. However, you may notice some rendering differences between Internet Explorer/Edge implementations and Web Kit ones. +* **checked** - `JSON value: embedded`: In this case, 4D uses Blink engine from Google. Using the embedded Web engine means that Web area rendering and their functioning in your application are identical regardless of the platform used to run 4D (slight variations of pixels or differences related to network implementation may nevertheless be observed). When this option is chosen, you no longer benefit from automatic updates of the Web engine performed by the operating system; however, new versions of the engines are provided through 4D. - A noter que le moteur Blink est soumis aux restrictions suivantes : - * [WA SET PAGE CONTENT](https://doc.4d.com/4Dv17R6/4D/17-R6/WA-SET-PAGE-CONTENT.301-4310783.en.html) : l'utilisation de cette commande nécessite le chargement d'au moins une page dans la zone (via un appel à la commande [WA OPEN URL](https://doc.4d.com/4Dv17R6/4D/17-R6/WA-OPEN-URL.301-4310772.en.html) ou via une affectation à la variable URL associée à la zone). - * L'exécution d'applets Java, JavaScript et de plugins est toujours autorisée et ne peut pas être désactivée dans les zones Web de Blink. Les sélecteurs suivants des commandes [WA SET PREFERENCE](https://doc.4d.com/4Dv17R6/4D/17-R6/WA-SET-PREFERENCE.301-4310780.en.html) et [WA GET PREFERENCE](https://doc.4d.com/4Dv17R6/4D/17-R6/WA-GET-PREFERENCE.301-4310763.en.html) sont ignorés : + Note that the Blink engine has the following limitations: + * [WA SET PAGE CONTENT](https://doc.4d.com/4Dv17R6/4D/17-R6/WA-SET-PAGE-CONTENT.301-4310783.en.html): using this command requires that at least one page is already loaded in the area (through a call to [WA OPEN URL](https://doc.4d.com/4Dv17R6/4D/17-R6/WA-OPEN-URL.301-4310772.en.html) or an assignment to the URL variable associated to the area). + * Execution of Java applets, JavaScripts and plug-ins is always enabled and cannot be disabled in Web areas in Blink. The following selectors of the [WA SET PREFERENCE](https://doc.4d.com/4Dv17R6/4D/17-R6/WA-SET-PREFERENCE.301-4310780.en.html) and [WA GET PREFERENCE](https://doc.4d.com/4Dv17R6/4D/17-R6/WA-GET-PREFERENCE.301-4310763.en.html) commands are ignored: * `WA enable Java applets` * `WA enable JavaScript` * `WA enable plugins` - * Lorsque les déposer d'URL sont rendus possibles par le sélecteur `WA enable URL drop` de la commande [WA SET PREFERENCE](https://doc.4d.com/4Dv17R6/4D/17-R6/WA-SET-PREFERENCE.301-4310780.en.html), le premier déposer doit être précédé d'au moins un appel à la commande [WA OPEN URL](https://doc.4d.com/4Dv17R6/4D/17-R6/WA-OPEN-URL.301-4310772.en.html) ou d'une affectation vers la variable d'URL associée à la zone. + * When URL drops are enabled by the `WA enable URL drop` selector of the [WA SET PREFERENCE](https://doc.4d.com/4Dv17R6/4D/17-R6/WA-SET-PREFERENCE.301-4310780.en.html) command, the first drop must be preceded by at least one call to [WA OPEN URL](https://doc.4d.com/4Dv17R6/4D/17-R6/WA-OPEN-URL.301-4310772.en.html) or one assignment to the URL variable associated to the area. -#### Grammaire JSON +#### JSON Grammar -| Nom | Type de données | Valeurs possibles | -| --------- | --------------- | -------------------- | -| webEngine | string | "embedded", "system" | +| Name | Data Type | Possible Values | +| --------- | --------- | -------------------- | +| webEngine | string | "embedded", "system" | -#### Objets pris en charge +#### Objects Supported -[Zone Web](webArea_overview.md) \ No newline at end of file +[Web Area](webArea_overview.md) \ No newline at end of file From e72dc2cc8c47741b21f24b2e9af90dda726573ff Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:16:57 +0100 Subject: [PATCH 043/260] New translations radio_overview.md (French) --- .../fr/FormObjects/radio_overview.md | 110 +++++++++--------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/website/translated_docs/fr/FormObjects/radio_overview.md b/website/translated_docs/fr/FormObjects/radio_overview.md index 5741d76a0f24a4..e8515725aa1e66 100644 --- a/website/translated_docs/fr/FormObjects/radio_overview.md +++ b/website/translated_docs/fr/FormObjects/radio_overview.md @@ -1,116 +1,116 @@ --- id: radiobuttonOverview -title: Bouton radio +title: Radio Button --- ## Aperçu -Les boutons radio sont des objets qui permettent à l’utilisateur de sélectionner une valeur parmi un groupe de valeurs. +Radio buttons are objects that allow the user to select one of a group of buttons. -Un bouton radio apparaît sous la forme d’un texte suivi d’un cercle. Cependant, les boutons radio peuvent avoir [différentes apparences](#button-styles). +Usually, a radio button shows a small bullseye with text. However, radio buttons can have [various appearances](#button-styles).  -Un bouton radio est sélectionné : -- lorsque l'utilisateur clique dessus -- lorsqu'il a le focus et que l'utilisateur appuie sur la touche **Espace**. +A radio button is selected: +- when the user clicks on it +- when it has the focus and the user presses the **Space bar** key. -## Configuration des boutons radio +## Configuring radio buttons -Les boutons radio sont utilisés sous forme d’ensembles coordonnés : un seul bouton peut être sélectionné à la fois parmi l’ensemble. Afin de fonctionner de manière coordonnée, un ensemble de boutons radio doit partager la même propriété de [groupe radio](properties_Object.md#radio-group). +Radio buttons are used in coordinated sets: only one button at a time can be selected in the set. In order to operate in a coordinated manner, a set of radio buttons must share the same [Radio Group](properties_Object.md#radio-group) property. -Les boutons radio sont contrôlés par des méthodes. Comme pour tous les boutons, la variable associée au bouton radio est initialisée à 0 (zéro) lorsque le formulaire est ouvert pour la première fois. Une méthode associée à un bouton radio est exécutée lorsqu’il est sélectionné. L’exemple suivant représente des boutons radio utilisés dans une base de données d’enregistrements audio et se rapporte à la vitesse d’enregistrement : +Radio buttons are controlled with methods. Like all buttons, a radio button is set to 0 when the form is first opened. A method associated with a radio button executes when the button is selected. The following is an example of a group of radio buttons used in a video collection database to enter the speed of the recording (SP, LP, or EP):  -Sélectionner un bouton radio d’un groupe met ce bouton à 1 et les autres boutons du groupe à 0. Un seul bouton radio du groupe peut être sélectionné à la fois. -> Vous pouvez associer [des expressions de type booléen](properties_Object.md#variable-or-expression) à des boutons radio. Dans ce cas, lorsqu'un bouton radio d'un groupe est sélectionné, sa variable est True et les variables des autres boutons radio du groupe sont False. +Selecting one radio button in a group sets that button to 1 and all of the others in the group to 0. Only one radio button can be selected at a time. +> You can associate [Boolean type expressions](properties_Object.md#variable-or-expression) with radio buttons. In this case, when a radio button in a group is selected, its variable is True and the variables for the group's other radio buttons are False. -La valeur contenue dans un objet bouton radio n’est pas sauvegardée automatiquement (hormis s'il s'agit de la représentation d'un champ booléen) ; les valeurs des boutons radio doivent être stockées dans leurs variables et gérées à l’aide de méthodes. +The value contained in a radio button object is not saved automatically (except if it is the representation of a Boolean field); radio button values must be stored in their variables and managed with methods. -## Styles de bouton +## Button Styles -[Les styles de bouton](properties_TextAndPicture.md#button-style) radio contrôlent l'apparence générale du bouton radio ainsi que ses propriétés disponibles. Il est possible d'appliquer différents styles prédéfinis aux boutons radio. Cependant, le même style de bouton doit être appliqué à tous les boutons radio d'un groupe afin qu'ils fonctionnent comme prévu. +Radio [button styles](properties_TextAndPicture.md#button-style) control radio button's general appearance as well as its available properties. It is possible to apply different predefined styles to radio buttons. However, the same button style must be applied to all radio buttons in a group so that they work as expected. -4D propose des boutons radio dans les styles prédéfinis suivants : +4D provides radio buttons in the following predefined styles: -### Classique +### Regular -Le style de bouton radio Classique est un bouton système standard (c'est-à-dire une bulle avec un libellé) qui exécute le code lorsqu'un utilisateur clique dessus. +The Regular radio button style is a standard system button (*i.e.*, a small bullseye with text) which executes code when a user clicks on it.  -En plus de lancer l'exécution du code, le style de bouton radio Classique change la couleur de la bulle lors du survol. +In addition to initiating code execution, the Regular radio button style changes bullsey color when being hovered. -### A plat +### Flat -Le style de bouton radio A plat est un bouton système standard (c'est-à-dire une bulle avec un libellé) qui exécute le code lorsqu'un utilisateur clique dessus. +The Flat radio button style is a standard system button (*i.e.*, a small bullseye with text) which executes code when a user clicks on it.  -Par défaut, le style A plat a une apparence minimaliste. Le style graphique du bouton A plat est particulièrement utile pour les formulaires à imprimer. +By default, the Flat style has a minimalist appearance. The Flat button style's graphic nature is particularly useful for forms that will be printed. -### Barre d’outils +### Toolbar -Le style du bouton radio Barre d'outils est initialement destiné à être intégré dans une barre d'outils. +The Toolbar radio button style is primarily intended for integration in a toolbar. -Par défaut, le style bouton Barre d'outils a un fond transparent avec un libellé au centre. En fonction du système d'exploitation, le design du bouton peut changer lorsque la souris le survole : +By default, the Toolbar style has a transparent background with a label in the center. The appearance of the button can be different when the cursor hovers over it depending on the OS: - - *Sous Windows* - le contour du bouton apparaît. + - *Windows* - the button is highlighted.  - - *Sous macOS* - le contour du bouton n’apparaît jamais. + - *macOS* - the highlight of the button never appears. ### Bevel -Le style de bouton radio Bevel est similaire au comportement du style [barre d'outils](#toolbar), à la seule différence qu'il possède un arrière-plan gris clair et un contour gris. En fonction du système d'exploitation, le design du bouton peut changer lorsque la souris le survole : +The Bevel radio button style is similar to the [Toolbar](#toolbar) style's behavior, except that it has a light gray background and a gray outline. The appearance of the button can be different when the cursor hovers over it depending on the OS: - - *Sous Windows* - le contour du bouton apparaît. + - *Windows* - the button is highlighted.  - - *Sous macOS* - le contour du bouton n’apparaît jamais. + - *macOS* - the highlight of the button never appears. -### Bevel arrondi +### Rounded Bevel -Le style du bouton Bevel arrondi est presque identique au style [Bevel](#bevel), à l'exception des coins du bouton qui peuvent, selon le système d'exploitation, être arrondis. +The Rounded Bevel button style is nearly identical to the [Bevel](#bevel) style except, depending on the OS, the corners of the button may be rounded. - - *Sous Windows* - ce bouton est identique au style [Bevel](#bevel). + - *Windows* - the button is identical to the [Bevel](#bevel) style. - - *Sous macOS* - les coins du bouton sont arrondis.  + - *macOS* - the corners of the button are rounded.  ### OS X Gradient -Le style du bouton OS X Gradient est presque identique au style [Bevel](#bevel), à l'exception de son apparence qui peut, en fonction du système d'exploitation, avoir deux tons. +The OS X Gradient button style is nearly identical to the [Bevel](#bevel) style except, depending on the OS, it may have a two-toned appearance. - - *Sous Windows* - ce bouton est identique au style [Bevel](#bevel). + - *Windows* - the button is identical to the [Bevel](#bevel) style. - - *Sous macOs* - le bouton s'affiche comme un bouton à deux tons. + - *macOS* - the button is displayed as a two-tone system button. -### OS X Texture +### OS X Textured -Le style du bouton radio OS X Textured est presque identique au style [Barre d'outils](#toolbar), à l'exception de son apparence qui peut, en fonction du système d'exploitation, être différente et ne pas afficher le survol. +The OS X Textured radio button style is nearly identical to the [Toolbar](#toolbar) style except, depending on the OS, it may have a different appearance and does not display hover. -Par défaut, le style OS X Textured apparaît comme : +By default, the OS X Textured style appears as: - - *Sous Windows* - un bouton en forme de barre d'outils avec une étiquette au centre et l'arrière-plan est toujours affiché. + - *Windows* - a toolbar-like button with a label in the center and the background is always displayed. - - *Sous macOS* - un bouton système standard affichant un changement de couleur du gris clair au gris foncé. Sa hauteur est prédéfinie : il n'est pas possible de l'agrandir ou de la réduire. + - *macOS* - a standard system button displaying a color change from light to dark gray. Its height is predefined: it is not possible to enlarge or reduce it.  @@ -120,43 +120,43 @@ Par défaut, le style OS X Textured apparaît comme : The Office XP button style combines the appearance of the [Regular](#regular) style (standard system button) with the [Toolbar](#toolbar) style's behavior. -Les couleurs (surbrillance et arrière-plan) d'un bouton au style Office XP sont basées sur les couleurs du système. En fonction du système d'exploitation, le design du bouton peut changer lorsque la souris le survole : +The colors (highlight and background) of a button with the Office XP style are based on the system colors. The appearance of the button can be different when the cursor hovers over it depending on the OS: - - *Sous Windows* - son arrière-plan n'apparaît que lorsque la souris le survole. + - *Windows* - its background only appears when the mouse rolls over it.  - - *Sous macOS* - son arrière-plan est toujours affiché. + - *macOS* - its background is always displayed. -### Contracter/Déployer +### Collapse / Expand -Ce style de bouton peut être utilisé pour ajouter une icône standard contracter/déployer. Ces boutons sont utilisés nativement dans les listes hiérarchiques. Sous Windows, le bouton ressemble à un [+] ou un [-]; sous macOS, cela ressemble à un triangle pointant vers la droite ou vers le bas. +This button style can be used to add a standard collapse/expand icon. These buttons are used natively in hierarchical lists. In Windows, the button looks like a [+] or a [-]; in macOS, it looks like a triangle pointing right or down.  -### Bouton disclosure +### Disclosure Button -Le style de bouton radio disclosure affiche le bouton radio comme un bouton disclosure standard, généralement utilisé pour afficher/masquer des informations supplémentaires. Le symbole du bouton pointe vers le bas avec la valeur 0 et vers le haut avec la valeur 1. +The disclosure radio button style displays the radio button as a standard disclosure button, usually used to show/hide additional information. The button symbol points downwards with value 0 and upwards with value 1.  -### Personnalisé +### Custom -Le style de bouton radio Personnalisé accepte une image d'arrière-plan personnalisée et permet de gérer des paramètres supplémentaires tels que le [décalage de l'icône](properties_TextAndPicture.md#icon-offset) et les [marges](properties_TextAndPicture.md#horizontalMargin). +The Custom radio button style accepts a personalized background picture and allows managing additional parameters such as [icon offset](properties_TextAndPicture.md#icon-offset) and [margins](properties_TextAndPicture.md#horizontalMargin). -## Propriétés prises en charge +## Supported properties -Tous les boutons radio partagent une même série de propriétés de base : +All radio buttons share the same set of basic properties: [Bold](properties_Text.md#bold) - [Bottom](properties_CoordinatesAndSizing.md#bottom) - [Button Style](properties_TextAndPicture.md#button-style) - [Class](properties_Object.md#css-class) - [Expression Type](properties_Object.md#expression-type) - [Focusable](properties_Entry.md#focusable) - [Font](properties_Text.md#font) - [Font Color](properties_Text.md#font-color) - [Height](properties_CoordinatesAndSizing.md#height) - [Help Tip](properties_Help.md#help-tip) - [Horizontal Sizing](properties_ResizingOptions.md#horizontal-sizing) - [Italic](properties_Text.md#italic) - [Left](properties_CoordinatesAndSizing.md#left) - [Method](properties_Action.md#method) - [Object Name](properties_Object.md#object-name) - [Radio Group](properties_Object.md#radio-group) - [Right](properties_CoordinatesAndSizing.md#right) - [Save value](properties_Object.md#save-value) - [Shortcut](properties_Entry.md#shortcut) - [Title](properties_Object.md#title) - [Top](properties_CoordinatesAndSizing.md#top) - [Type](properties_Object.md#type) - [Underline](properties_Text.md#underline) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Sizing](properties_ResizingOptions.md#vertical-sizing) - [Visibility](properties_Display.md#visibility) - [Width](properties_CoordinatesAndSizing.md#width) -Des propriétés spécifiques supplémentaires sont disponibles en fonction du [style de bouton](#button-styles) : +Additional specific properties are available depending on the [button style](#button-styles): -- [Chemin d'accès arrière-plan](properties_TextAndPicture.md#backgroundPathname) - [Marge horizontale](properties_TextAndPicture.md#horizontalMargin) - [Décalage icône](properties_TextAndPicture.md#icon-offset) - [Marge verticale](properties_TextAndPicture.md#verticalMargin) (Personnalisé) -- [Nombre d'états](properties_TextAndPicture.md#number-of-states) - [Chemin d'accès image](properties_TextAndPicture.md#picture-pathname) - [Position Titre/Image](properties_TextAndPicture.md#title-picture-position) (Bouton barre outils, Bevel, Bevel arrondi, OS X Gradient, OS X Textured, Office XP, Personnalisé) \ No newline at end of file +- [Background pathname](properties_TextAndPicture.md#backgroundPathname) - [Horizontal Margin](properties_TextAndPicture.md#horizontalMargin) - [Icon Offset](properties_TextAndPicture.md#icon-offset) - [Vertical Margin](properties_TextAndPicture.md#verticalMargin) (Custom) +- [Number of States](properties_TextAndPicture.md#number-of-states) - [Picture pathname](properties_TextAndPicture.md#picture-pathname) - [Title/Picture Position](properties_TextAndPicture.md#title-picture-position) (Toolbar button, Bevel, Rounded Bevel, OS X Gradient, OS X Textured, Office XP, Custom) \ No newline at end of file From 90acec5d404c8dc1074dfa047cc2df9b485a3a50 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:16:59 +0100 Subject: [PATCH 044/260] New translations ruler.md (French) --- .../translated_docs/fr/FormObjects/ruler.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/website/translated_docs/fr/FormObjects/ruler.md b/website/translated_docs/fr/FormObjects/ruler.md index bb18750db04da5..4090f0b440ded0 100644 --- a/website/translated_docs/fr/FormObjects/ruler.md +++ b/website/translated_docs/fr/FormObjects/ruler.md @@ -1,21 +1,21 @@ --- id: ruler -title: Règle +title: Ruler --- ## Aperçu -La règle est un objet d'interface standard permettant de définir ou de lire une valeur à l'aide d'un curseur placé sur une règle généralement graduée. +The ruler is a standard interface object used to set or get values using a cursor moved along its graduations.  -[La variable ou expression associée](properties_Object.md#expression-type) à l’objet peut être affectée à une zone saisissable (champ ou variable) afin de stocker ou modifier la valeur courante de l’objet. +You can assign its [associated variable or expression](properties_Object.md#expression-type) to an enterable area (field or variable) to store or modify the current value of the object. -Pour plus d'informations, veuillez vous reporter à la section [Utiliser des indicateurs](progressIndicator.md#using-indicatire) de la page "Indicateurs de progression". +For more information, please refer to [Using indicators](progressIndicator.md#using-indicatire) in the "Progress Indicator" page. -### Propriétés prises en charge -[Gras](properties_Text.md#bold) - [Style de la bordure](properties_BackgroundAndBorder.md#border-line-style) -[Bas](properties_CoordinatesAndSizing.md#bottom) - [Class](properties_Object.md#css-class) - [Afficher graduation](properties_Scale.md#display-graduation) - [Saisissable](properties_Entry.md#enterable) - [Exécuter méthode objet](properties_Action.md#execute-object-method) - [Type d'expression](properties_Object.md#expression-type) - [Hauteur](properties_CoordinatesAndSizing.md#height) - [Unité de graduation](properties_Scale.md#graduation-step) -[Message d'aide](properties_Help.md#help-tip) - [Dim. horizontal](properties_ResizingOptions.md#horizontal-sizing) - [Emplacement du libellé](properties_Scale.md#label-location) - [Gauche](properties_CoordinatesAndSizing.md#left) - [Maximum](properties_Scale.md#maximum) - [Minimum](properties_Scale.md#minimum) - [Format numérique](properties_Display.md#number-format) - [Nom](properties_Object.md#object-name) - [Droite](properties_CoordinatesAndSizing.md#right) - [Pas](properties_Scale.md#step) - [Haut](properties_CoordinatesAndSizing.md#top) - [Type](properties_Object.md#type) - [Variable ou expression](properties_Object.md#variable-or-expression) - [Dim. vertical](properties_ResizingOptions.md#vertical-sizing) - [Visibilité](properties_Display.md#visibility) - [Largeur](properties_CoordinatesAndSizing.md#width) +### Supported Properties +[Bold](properties_Text.md#bold) - [Border Line Style](properties_BackgroundAndBorder.md#border-line-style) -[Bottom](properties_CoordinatesAndSizing.md#bottom) - [Class](properties_Object.md#css-class) - [Display graduation](properties_Scale.md#display-graduation) - [Enterable](properties_Entry.md#enterable) - [Execute object method](properties_Action.md#execute-object-method) - [Expression Type](properties_Object.md#expression-type) - [Height](properties_CoordinatesAndSizing.md#height) - [Graduation step](properties_Scale.md#graduation-step) -[Help Tip](properties_Help.md#help-tip) - [Horizontal Sizing](properties_ResizingOptions.md#horizontal-sizing) - [Label Location](properties_Scale.md#label-location) - [Left](properties_CoordinatesAndSizing.md#left) - [Maximum](properties_Scale.md#maximum) - [Minimum](properties_Scale.md#minimum) - [Number Format](properties_Display.md#number-format) - [Object Name](properties_Object.md#object-name) - [Right](properties_CoordinatesAndSizing.md#right) - [Step](properties_Scale.md#step) - [Top](properties_CoordinatesAndSizing.md#top) - [Type](properties_Object.md#type) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Sizing](properties_ResizingOptions.md#vertical-sizing) - [Visibility](properties_Display.md#visibility) - [Width](properties_CoordinatesAndSizing.md#width) -## Voir également -- [indicateurs de progression](progressIndicator.md) -- [stepper](stepper.md) \ No newline at end of file +## See also +- [progress indicators](progressIndicator.md) +- [steppers](stepper.md) \ No newline at end of file From c3043188dc94b653ebfc8ef970167fc65e969a46 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:17:01 +0100 Subject: [PATCH 045/260] New translations shapes_overview.md (French) --- .../fr/FormObjects/shapes_overview.md | 84 +++++++++---------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/website/translated_docs/fr/FormObjects/shapes_overview.md b/website/translated_docs/fr/FormObjects/shapes_overview.md index bb8a4d3f6859c8..4300a81e4c25e8 100644 --- a/website/translated_docs/fr/FormObjects/shapes_overview.md +++ b/website/translated_docs/fr/FormObjects/shapes_overview.md @@ -1,57 +1,57 @@ --- id: shapesOverview -title: Formes +title: Shapes --- -Les formes sont des [objets statiques](formObjects_overview.md#active-and-static-objects) qui peuvent être ajoutées à des formes 4D. +Shapes are [static objects](formObjects_overview.md#active-and-static-objects) that can be added to 4D forms. -Les formes 4D prennent en charge les formes basiques suivantes : +4D forms support the following basic shapes: - rectangles -- lignes -- ovales +- lines +- ovals ## Rectangle -Un rectangle statique est un objet décoratif contenu dans les formulaires. Les rectangles sont limités à des formes carrées. +A static rectangle is a decorative object for forms. Rectangles are constrained to squared shapes. -Les rectangles sont créés à l'aide de plusieurs propriétés (couleur, épaisseur de ligne, motif, etc.). L'[arrondi](properties_CoordinatesAndSizing.md#corner-radius), en particulier, des coins du rectangle peuvent être définis. +The design of rectangles is controlled through many properties (color, line thickness, pattern, etc.). Specifically, the [roundness](properties_CoordinatesAndSizing.md#corner-radius) of its corners can be defined.  -#### Exemple JSON : +#### JSON Example: ```4d "myRectangle": { - "type": "rectangle", //définit le type d'objet - "left": 60, //position sur la gauche du formulaire - "top": 160, //position en haut du formulaire - "width": 100, //largeur de l'objet - "height": 20, //hauteur de l'objet - "borderRadius": 20 //définit le rayon d'arrondi + "type": "rectangle", //define the type of object + "left": 60, //left position on the form + "top": 160, //top position on the form + "width": 100, //width of the object + "height": 20, //height of the object + "borderRadius": 20 //define the roundness of the corners } ``` -#### Propriétés prises en charge -[Bas](properties_CoordinatesAndSizing.md#bottom) - [Css Class](properties_Object.md#css-class) - [Rayon d'arrondi](properties_CoordinatesAndSizing.md#corner-radius) - [Type de pointillé](properties_BackgroundAndBorder.md#dotted-line-type) - [Couleur de fond](properties_BackgroundAndBorder.md#background-color-fill-color) - [Hauteur](properties_CoordinatesAndSizing.md#height) - [Dimensionnement horizontal](properties_ResizingOptions.md#horizontal-sizing) - [Gauche](properties_CoordinatesAndSizing.md#left) - [Couleur de ligne](properties_BackgroundAndBorder.md#line-color) - [Épaisseur du trait](properties_BackgroundAndBorder.md#line-width) - [Nom](properties_Object.md#object-name) - [Droite](properties_CoordinatesAndSizing.md#right) - [Haut](properties_CoordinatesAndSizing.md#top) - [Type](properties_Object.md#type) - [Dimensionnement vertical](properties_ResizingOptions.md#vertical-sizing) - [Visibilité](properties_Display.md#visibility) - [Largeur](properties_CoordinatesAndSizing.md#width) +#### Supported Properties +[Bottom](properties_CoordinatesAndSizing.md#bottom) - [Class](properties_Object.md#css-class) - [Corner radius](properties_CoordinatesAndSizing.md#corner-radius) - [Dotted Line Type](properties_BackgroundAndBorder.md#dotted-line-type) - [Fill Color](properties_BackgroundAndBorder.md#background-color-fill-color) - [Height](properties_CoordinatesAndSizing.md#height) - [Horizontal Sizing](properties_ResizingOptions.md#horizontal-sizing) - [Left](properties_CoordinatesAndSizing.md#left) - [Line Color](properties_BackgroundAndBorder.md#line-color) - [Line Width](properties_BackgroundAndBorder.md#line-width) - [Object Name](properties_Object.md#object-name) - [Right](properties_CoordinatesAndSizing.md#right) - [Top](properties_CoordinatesAndSizing.md#top) - [Type](properties_Object.md#type) - [Vertical Sizing](properties_ResizingOptions.md#vertical-sizing) - [Visibility](properties_Display.md#visibility) - [Width](properties_CoordinatesAndSizing.md#width) -## Ligne +## Line -Une ligne statique est un objet décoratif pour les formulaires, entre deux tracés. Les lignes peuvent être horizontales, verticales ou de toute forme d'angle. +A static line is a decorative object for forms, drawn between two plots. Lines can be horizontal, vertical, or of any angle shapes. -Les lignes sont créées à l'aide de plusieurs propriétés (couleur, épaisseur de ligne, etc.). +The design of lines is controlled through many properties (color, line thickness, etc.). -### propriété startPoint -La propriété JSON `startPoint` définit à partir de quelle coordonnée la ligne peut être dessinée (voir l'exemple). +### startPoint property +The `startPoint` JSON property defines from which coordinate to draw the line (see example). -> la propriété `startPoint` n'est pas exposée dans la liste des propriétés, où la direction du dessin de ligne est visible. +> the `startPoint` property is not exposed in the Property List, where the line drawing direction is visible. -#### Exemple JSON : +#### JSON Examples: ``` "myLine": { @@ -60,11 +60,11 @@ La propriété JSON `startPoint` définit à partir de quelle coordonnée la lig "top": 40, "width": 100, "height": 80, - "startPoint": "topLeft", //première orientation - "strokeDashArray": "6 2" //pointillé + "startPoint": "topLeft", //first direction + "strokeDashArray": "6 2" //dashed } ``` -Résultat :  +Result:  ``` @@ -74,36 +74,36 @@ Résultat :  "top": 40, "width": 100, "height": 80, - "startPoint": "bottomLeft", //deuxième orientation - "strokeDashArray": "6 2" //pointillé + "startPoint": "bottomLeft", //2nd direction + "strokeDashArray": "6 2" //dashed } ``` -Résultat :  +Result:  -#### Propriétés prises en charge -[Bas](properties_CoordinatesAndSizing.md#bottom) - [Css Class](properties_Object.md#css-class) - [Type de pointillé](properties_BackgroundAndBorder.md#dotted-line-type) - [Hauteur](properties_CoordinatesAndSizing.md#height) - [Dimensionnement horizontal](properties_ResizingOptions.md#horizontal-sizing) - [Gauche](properties_CoordinatesAndSizing.md#left) - [Couleur du trait](properties_BackgroundAndBorder.md#line-color) - [Épaisseur du trait](properties_BackgroundAndBorder.md#line-width) - [Nom](properties_Object.md#object-name) - [Droite](properties_CoordinatesAndSizing.md#right) - [startPoint](#startpoint-property) - [Haut](properties_CoordinatesAndSizing.md#top) - [Type](properties_Object.md#type) - [Dimensionnement vertical](properties_ResizingOptions.md#vertical-sizing) - [Visibilité](properties_Display.md#visibility) - [Largeur](properties_CoordinatesAndSizing.md#width) +#### Supported Properties +[Bottom](properties_CoordinatesAndSizing.md#bottom) - [Class](properties_Object.md#css-class) - [Dotted Line Type](properties_BackgroundAndBorder.md#dotted-line-type) - [Height](properties_CoordinatesAndSizing.md#height) - [Horizontal Sizing](properties_ResizingOptions.md#horizontal-sizing) - [Left](properties_CoordinatesAndSizing.md#left) - [Line Color](properties_BackgroundAndBorder.md#line-color) - [Line Width](properties_BackgroundAndBorder.md#line-width) - [Object Name](properties_Object.md#object-name) - [Right](properties_CoordinatesAndSizing.md#right) - [startPoint](#startpoint-property) - [Top](properties_CoordinatesAndSizing.md#top) - [Type](properties_Object.md#type) - [Vertical Sizing](properties_ResizingOptions.md#vertical-sizing) - [Visibility](properties_Display.md#visibility) - [Width](properties_CoordinatesAndSizing.md#width) -## Ovale +## Oval -Un ovale statique est un objet décoratif contenu dans les formulaires. Les objets de forme ovale peuvent être utilisés pour dessiner des formes circulaires (lorsque les propriétés [largeur](properties_CoordinatesAndSizing.md#width) et [hauteur](properties_CoordinatesAndSizing.md#height) sont identiques). +A static oval is a decorative object for forms. Oval objects can be used to draw circular shapes (when [width](properties_CoordinatesAndSizing.md#width) and [height](properties_CoordinatesAndSizing.md#height) properties are equal).  -#### Exemple JSON : +#### JSON Example: ```4d "myOval": { - "type": "oval", //définit le type d'objet - "left": 60, //position sur la gauche du formulaire - "top": 160, //position en haut du formulaire - "width": 100, //largeur de l'objet - "height": 20, //hauteur de l'objet - "borderRadius": 20 //définit la couleur de fond + "type": "oval", //define the type of object + "left": 60, //left position on the form + "top": 160, //top position on the form + "width": 100, //width of the object + "height": 20, //height of the object + "fill": "blue" //define the background color } ``` -#### Propriétés prises en charge -[Bas](properties_CoordinatesAndSizing.md#bottom) - [Css Class](properties_Object.md#css-class) - [Type de pointillé](properties_BackgroundAndBorder.md#dotted-line-type) - [Couleur de fond](properties_BackgroundAndBorder.md#background-color-fill-color) - [Hauteur](properties_CoordinatesAndSizing.md#height) - [Dimensionnement horizontal](properties_ResizingOptions.md#horizontal-sizing) - [Gauche](properties_CoordinatesAndSizing.md#left) - [Couleur du trait](properties_BackgroundAndBorder.md#line-color) - [Épaisseur du trait](properties_BackgroundAndBorder.md#line-width) - [Nom](properties_Object.md#object-name) - [Droite](properties_CoordinatesAndSizing.md#right) - [Haut](properties_CoordinatesAndSizing.md#top) - [Type](properties_Object.md#type) - [Dimensionnement vertical](properties_ResizingOptions.md#vertical-sizing) - [Visibilité](properties_Display.md#visibility) - [Largeur](properties_CoordinatesAndSizing.md#width) \ No newline at end of file +#### Supported Properties +[Bottom](properties_CoordinatesAndSizing.md#bottom) - [Class](properties_Object.md#css-class) - [Dotted Line Type](properties_BackgroundAndBorder.md#dotted-line-type) - [Fill Color](properties_BackgroundAndBorder.md#background-color-fill-color) - [Height](properties_CoordinatesAndSizing.md#height) - [Horizontal Sizing](properties_ResizingOptions.md#horizontal-sizing) - [Left](properties_CoordinatesAndSizing.md#left) - [Line Color](properties_BackgroundAndBorder.md#line-color) - [Line Width](properties_BackgroundAndBorder.md#line-width) - [Object Name](properties_Object.md#object-name) - [Right](properties_CoordinatesAndSizing.md#right) - [Top](properties_CoordinatesAndSizing.md#top) - [Type](properties_Object.md#type) - [Vertical Sizing](properties_ResizingOptions.md#vertical-sizing) - [Visibility](properties_Display.md#visibility) - [Width](properties_CoordinatesAndSizing.md#width) \ No newline at end of file From 8bf4d029067e8da1a081600bf70f338e676ac103 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:17:03 +0100 Subject: [PATCH 046/260] New translations spinner.md (French) --- website/translated_docs/fr/FormObjects/spinner.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/website/translated_docs/fr/FormObjects/spinner.md b/website/translated_docs/fr/FormObjects/spinner.md index d9ce3a338e855a..a052959581e2ac 100644 --- a/website/translated_docs/fr/FormObjects/spinner.md +++ b/website/translated_docs/fr/FormObjects/spinner.md @@ -5,17 +5,17 @@ title: Spinner ## Aperçu -Le spinner est un indicateur circulaire qui affiche une animation continue, telle que le [Barber shop](progressIndicator.md#barber-shop). +The spinner is a circular indicator that displays a continuous animation, like the [Barber shop](progressIndicator.md#barber-shop).  -Ce type d'objet vous permet d'indiquer une opération telle que la recherche de connexion réseau ou le calcul est en cours. Lorsque cet indicateur est sélectionné, [les propriétés "Graduations"](properties_Scale.md) ne sont pas disponibles. +You use this type of object to indicate that an operation such as establishing a network connection or a performing a calculation is underway. When this indicator is selected, [graphical Scale properties](properties_Scale.md) are not available. -A l’exécution du formulaire, l'objet n’est pas animé. Vous devez gérer l’animation en passant une valeur à [la variable ou expression qui lui est associée](properties_Object.md#variable-or-expression) : +When the form is executed, the object is not animated. You manage the animation by passing a value to its [associated variable or expression](properties_Object.md#variable-or-expression): -* 1 (ou toute valeur différente de 0) = Démarrer l’animation, -* 0 = Stopper l’animation +* 1 (or any value other than 0) = Start animation, +* 0 = Stop animation -### Propriétés prises en charge -[Style de la bordure](properties_BackgroundAndBorder.md#border-line-style) - [Bas](properties_CoordinatesAndSizing.md#bottom) - [Class](properties_Object.md#css-class) - [Type d'expression](properties_Object.md#expression-type) - [Hauteur](properties_CoordinatesAndSizing.md#height) -[Message d'aide](properties_Help.md#help-tip) - [Dim. horizontal](properties_ResizingOptions.md#horizontal-sizing) - [Gauche](properties_CoordinatesAndSizing.md#left) - [Nom](properties_Object.md#object-name) - [Droite](properties_CoordinatesAndSizing.md#right) - [Haut](properties_CoordinatesAndSizing.md#top) - [Type](properties_Object.md#type) - [Variable ou expression](properties_Object.md#variable-or-expression) - [Dim. vertical](properties_ResizingOptions.md#vertical-sizing) - [Visibilité](properties_Display.md#visibility) - [Largeur](properties_CoordinatesAndSizing.md#width) +### Supported Properties +[Border Line Style](properties_BackgroundAndBorder.md#border-line-style) - [Bottom](properties_CoordinatesAndSizing.md#bottom) - [Class](properties_Object.md#css-class) - [Expression Type](properties_Object.md#expression-type) - [Height](properties_CoordinatesAndSizing.md#height) -[Help Tip](properties_Help.md#help-tip) - [Horizontal Sizing](properties_ResizingOptions.md#horizontal-sizing) - [Left](properties_CoordinatesAndSizing.md#left) - [Object Name](properties_Object.md#object-name) - [Right](properties_CoordinatesAndSizing.md#right) - [Top](properties_CoordinatesAndSizing.md#top) - [Type](properties_Object.md#type) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Sizing](properties_ResizingOptions.md#vertical-sizing) - [Visibility](properties_Display.md#visibility) - [Width](properties_CoordinatesAndSizing.md#width) \ No newline at end of file From 796fbca3648b0f9fc4fe6c5036ac435a332c3ba2 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:17:05 +0100 Subject: [PATCH 047/260] New translations splitters.md (French) --- .../fr/FormObjects/splitters.md | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/website/translated_docs/fr/FormObjects/splitters.md b/website/translated_docs/fr/FormObjects/splitters.md index b030c73a34311e..de3da9a5bb063c 100644 --- a/website/translated_docs/fr/FormObjects/splitters.md +++ b/website/translated_docs/fr/FormObjects/splitters.md @@ -1,27 +1,27 @@ --- id: splitters -title: Séparateur +title: Splitter --- ## Aperçu -Un séparateur divise un formulaire en deux zones. Il permet à l’utilisateur d’agrandir ou de réduire chaque zone en le déplaçant. Un séparateur peut être horizontal ou vertical. The splitter takes into account each object’s resizing properties, which means that you can completely customize your application's interface. Un séparateur peut être “pousseur” ou non +A splitter divides a form into two areas, allowing the user to enlarge and reduce the areas by moving the splitter one way or the other. A splitter can be either horizontal or vertical. The splitter takes into account each object’s resizing properties, which means that you can completely customize your application's interface. A splitter may or may not be a “pusher.” -L’utilisation type du séparateur est le formulaire de sortie dans lequel les colonnes peuvent être redimensionnées : +Splitter are used for example in output forms so that columns can be resized:  -Les caractéristiques générales des séparateurs sont les suivantes : +Some of the splitter’s general characteristics: -* Vous pouvez placer autant de séparateurs que vous voulez dans tout type de formulaire. De même, il est possible de mêler des séparateurs horizontaux et verticaux dans un même formulaire. -* Un séparateur peut traverser un objet. Celui-ci sera redimensionné lors du déplacement du séparateur. -* Les butées des séparateurs sont calculées de manière à ce que les objets déplacés restent entièrement visibles dans le formulaire ou ne passent pas sous/à côté d’un autre séparateur. Lorsque la propriété [Pousseur](properties_ResizingOptions.md#pusher) est associée à un séparateur, son déplacement vers la droite ou vers le bas ne rencontre pas de butée. -* Les redimensionnements effectués dans les formulaires à l’aide des séparateurs ne sont conservés que durant l’affichage du formulaire. Une fois le formulaire refermé, les dimensions initiales sont restaurées. +* You can place as many splitters as you want in any type of form and use a mixture of horizontal and vertical splitters in the same form. +* A splitter can cross (overlap) an object. This object will be resized when the splitter is moved. +* Splitter stops are calculated so that the objects moved remain entirely visible in the form or do not pass under/next to another splitter. When the [Pusher](properties_ResizingOptions.md#pusher) property is associated with a splitter, its movement to the right or downward does not encounter any stops. +* If you resize a form using a splitter, the new dimensions of the form are saved only while the form is being displayed. Once a form is closed, the initial dimensions are restored. -Une fois inséré, un séparateur se présente sous la forme d’un trait. Vous pouvez modifier son [style de bordure](properties_BackgroundAndBorder.md#border-line-style-dotted-line-type) afin d’obtenir un trait plus ou moins épais, ou [modifier sa couleur](properties_BackgroundAndBorder.md##font-color-line-color). +Once it is inserted, the splitter appears as a line. You can modify its [border style](properties_BackgroundAndBorder.md#border-line-style-dotted-line-type) to obtain a thinner line or [change its color](properties_BackgroundAndBorder.md##font-color-line-color). -#### Exemple JSON : +#### JSON Example: ```4d "mySplitter": { @@ -30,36 +30,36 @@ Une fois inséré, un séparateur se présente sous la forme d’un trait. Vous "top": 160, "width": 100, "height": 20, - "splitterMode": "move" //pousseur + "splitterMode": "move" //pusher } ``` -### Propriétés prises en charge +### Supported Properties [Border Line Style](properties_BackgroundAndBorder.md##border-line-style-dotted-line-type) - [Bottom](properties_CoordinatesAndSizing.md#bottom) - [Class](properties_Object.md#css-class) - [Height](properties_CoordinatesAndSizing.md#height) - [Help Tip](properties_Help.md#help-tip) - [Horizontal Sizing](properties_ResizingOptions.md#horizontal-sizing) - [Left](properties_CoordinatesAndSizing.md#left) - [Line Color](properties_BackgroundAndBorder.md##font-color-line-color) - [Object Name](properties_Object.md#object-name) - [Pusher](properties_ResizingOptions.md#pusher) - [Right](properties_CoordinatesAndSizing.md#right) - [Top](properties_CoordinatesAndSizing.md#top) - [Type](properties_Object.md#type) - [Vertical Sizing](properties_ResizingOptions.md#vertical-sizing) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Visibility](properties_Display.md#visibility) - [Width](properties_CoordinatesAndSizing.md#width) -## Interaction avec les propriétés des objets environnants +## Interaction with the properties of neighboring objects -Dans un formulaire, les séparateurs interagissent sur les objets qui les entourent suivant les options de redimensionnement de ces objets : +In a form, splitters interact with the objects that are around them according to these objects’ resizing options: -| Options de redimensionnement du ou des objet(s) | Objet(s) au-dessus du séparateur horizontal ou à gauche du séparateur vertical (1) | Object(s) below an horizontal *non-Pusher* splitter or to the right of a vertical *non-Pusher* splitter | Object(s) below an horizontal *Pusher* splitter or to the right of a vertical *Pusher* splitter | -| ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -| Aucun | Restent tel que | Sont déplacés avec le séparateur (conservent leur position relative) jusqu’à la butée suivante. La butée du déplacement vers le bas ou vers la droite est soit le bord de la fenêtre, soit un autre séparateur. | Sont déplacés sans limites avec le séparateur (conservent leur position relative). Aucune butée n’est appliquée (cf. paragraphe suivant) | -| Redimensionnement | Gardent leur position d’origine mais sont redimensionnés en fonction de la nouvelle position du séparateur | | | -| Déplacer | Se déplacent avec le séparateur | | | +| Resizing options for the object(s) | Object(s) above an horizontal splitter or to the left of a vertical splitter (1) | Object(s) below an horizontal *non-Pusher* splitter or to the right of a vertical *non-Pusher* splitter | Object(s) below an horizontal *Pusher* splitter or to the right of a vertical *Pusher* splitter | +| ---------------------------------- | ----------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| None | Remain as is | Are moved with the splitter (position relative to the splitter is not modified) until the next stop. The stop when moving to the bottom or right is either the window’s border, or another splitter. | Are moved with the splitter (position relative to the splitter is not modified) indefinitely. No stop is applied (see the next paragraph) | +| Resize | Keep original position(s), but are resized according to the splitter’s new position | | | +| Move | Are moved with the splitter | | | -*(1) Un objet situé à cet emplacement sert de butée en cas de déplacement vers le haut (séparateur horizontal) ou vers la gauche (séparateur vertical) s’il ne comporte aucune option de redimensionnement.* -> Un objet entièrement contenu dans le rectangle définissant le séparateur est déplacé en même temps que le séparateur lui-même. +*(1) You cannot drag the splitter past the right (horizontal) or bottom (vertical) side of an object located in this position.* +> An object completely contained in the rectangle that defines the splitter is moved at the same time as the splitter. -## Gestion programmée des séparateurs +## Managing splitters programmatically -Vous pouvez associer une méthode objet à un séparateur. Cette méthode sera appelée avec l’événement `On Clicked` durant tout le déplacement. +You can associate an object method with a splitter and it will be called with the `On Clicked` event throughout the entire movement. -A [variable](properties_Object.md#variable-or-expression) of the *Longint* type is associated with each splitter. Cette variable peut être utilisée dans vos méthodes objet et/ou formulaire. Elle prend pour valeur le déplacement courant, en pixels, du séparateur. +A [variable](properties_Object.md#variable-or-expression) of the *Longint* type is associated with each splitter. This variable can be used in your object and/or form methods. Its value indicates the splitter’s current position, in pixels, in relation to its initial position. -* Si elle est négative : le déplacement a été effectué vers le haut ou vers la gauche, -* Si elle est positive : le déplacement a été effectué vers le bas ou vers la droite, -* Si elle est égale à 0 : le séparateur a été relâché à son emplacement d’origine. +* If the value is negative: the splitter was moved toward the top or toward the left, +* If the value is positive: the splitter was moved toward the bottom or toward the right, +* If the value is 0: the splitter was moved to its original position. -Vous pouvez également déplacer le séparateur par programmation : il suffit de modifier la valeur de la variable associée. Imaginons par exemple qu’un séparateur vertical soit associé à la variable `sépara1`. Si vous écrivez `sépara1:=-10`, le séparateur sera déplacé de 10 pixels vers la gauche — comme si l’utilisateur l’avait fait manuellement. Le déplacement s’effectue au terme de l’exécution de la méthode objet ou formulaire contenant l’instruction. +You can also move the splitter programmatically: you just have to set the value of the associated variable. For example, if a vertical splitter is associated with a variable named `split1`, and if you execute the following statement: `split1:=-10`, the splitter will be moved 10 pixels to the left — as if the user did it manually. The move is actually performed at the end of the execution of the form or object method containing the statement. From 9b19989ce49b0b6945f0e863f0248ad77bd8dacc Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:17:07 +0100 Subject: [PATCH 048/260] New translations staticPicture.md (French) --- .../fr/FormObjects/staticPicture.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/website/translated_docs/fr/FormObjects/staticPicture.md b/website/translated_docs/fr/FormObjects/staticPicture.md index 4b75eed1049b27..cb48120f90738e 100644 --- a/website/translated_docs/fr/FormObjects/staticPicture.md +++ b/website/translated_docs/fr/FormObjects/staticPicture.md @@ -1,31 +1,31 @@ --- id: staticPicture -title: Image statique +title: Static picture --- ## Aperçu -Les images statiques sont des [objets statiques](formObjects_overview.md#active-and-static-objects) pouvant être utilisées à des fins diverses dans les formulaires 4D, notamment comme décor, arrière-plan ou interface utilisateur : +Static pictures are [static objects](formObjects_overview.md#active-and-static-objects) that can be used for various purposes in 4D forms, including decoration, background, or user interface:  -Les images statiques sont stockées à l’extérieur des formulaires et insérées par référence. Dans l'éditeur de formules, les objets image statique sont créées par copier-coller ou par glisser-déposer. +Static pictures are stored outside the forms and inserted by reference. In the form editor, static picture objects are created by copy/paste or drag and drop operations. -> Si vous placez une image statique dans la page 0 d’un formulaire multi-pages, elle apparaîtra comme élément d’arrière-plan de toutes les pages. Vous pouvez également l’inclure dans un formulaire hérité, qui s'applique à l'arrière-plan de différents autres formulaires. Either way, your application will run faster than if the picture was pasted into each page. +> If you place a static picture on page 0 of a multi-page form, it will appear automatically as a background element on all pages. You can also include it in an inherited form, applied in the background of other different forms. Either way, your application will run faster than if the picture was pasted into each page. -## Format et emplacement +## Format and location -L'image d'origine doit être stockée dans un format géré nativement par 4D (4D reconnaît les principaux formats d'image : JPEG, PNG, BMP, SVG, GIF, etc.). +The original picture must be stored in a format managed natively by 4D (4D recognizes the main picture formats: JPEG, PNG, BMP, SVG, GIF, etc.). -Deux emplacements principaux peuvent être utilisés pour le chemin d'image statique : +Two main locations can be used for static picture path: -- in the **Resources** folder of the project. Appropriate when you want to share static pictures between several forms in the project. Dans ce cas, le chemin d'accès se trouve dans "/RESOURCES/\ ". -- dans un dossier d'images (nommé **Images** par exemple) dans le dossier du formulaire. Convient lorsque les images statiques sont utilisées uniquement dans le formulaire et/ou lorsque vous souhaitez pouvoir déplacer ou dupliquer le formulaire entier dans un ou plusieurs projets. Dans ce cas, le chemin d'accès est "<\picture path\>" et est résolu à partir de la racine du dossier du formulaire. +- in the **Resources** folder of the project. Appropriate when you want to share static pictures between several forms in the project. In this case, the Pathname is in the "/RESOURCES/\ ". +- in an image folder (e.g. named **Images**) within the form folder. Appropriate when the static pictures are used only in the form and/or yon want to be able to move or duplicate the whole form within the project or different projects. In this case, the Pathname is "<\picture path\>" and is resolved from the root of the form folder. -## Propriétés prises en charge +## Supported Properties -[Bas](properties_CoordinatesAndSizing.md#bottom) - [CSS Class](properties_Object.md#css-class) - [Affichage](properties_Picture.md#display) - [Hauteur](properties_CoordinatesAndSizing.md#height) - [Dim. horizontal](properties_ResizingOptions.md#horizontal-sizing) - [Gauche](properties_CoordinatesAndSizing.md#left) - [Nom](properties_Object.md#object-name) - [Pathname](properties_Picture.md#pathname) - [Droite](properties_CoordinatesAndSizing.md#right) - [Haut](properties_CoordinatesAndSizing.md#top) - [Type](properties_Object.md#type) - [Dim. vertical](properties_ResizingOptions.md#vertical-sizing) - [Visibilité](properties_Display.md#visibility) - [Largeur](properties_CoordinatesAndSizing.md#width) +[Bottom](properties_CoordinatesAndSizing.md#bottom) - [CSS Class](properties_Object.md#css-class) - [Display](properties_Picture.md#display) - [Height](properties_CoordinatesAndSizing.md#height) - [Horizontal Sizing](properties_ResizingOptions.md#horizontal-sizing) - [Left](properties_CoordinatesAndSizing.md#left) - [Object Name](properties_Object.md#object-name) - [Pathname](properties_Picture.md#pathname) - [Right](properties_CoordinatesAndSizing.md#right) - [Top](properties_CoordinatesAndSizing.md#top) - [Type](properties_Object.md#type) - [Vertical Sizing](properties_ResizingOptions.md#vertical-sizing) - [Visibility](properties_Display.md#visibility) - [Width](properties_CoordinatesAndSizing.md#width) From 6a535b8abe3544c68af1a38933892fe88e5b5352 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:17:09 +0100 Subject: [PATCH 049/260] New translations stepper.md (French) --- .../translated_docs/fr/FormObjects/stepper.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/website/translated_docs/fr/FormObjects/stepper.md b/website/translated_docs/fr/FormObjects/stepper.md index 62c28393ba4fc4..873ad9038a73a0 100644 --- a/website/translated_docs/fr/FormObjects/stepper.md +++ b/website/translated_docs/fr/FormObjects/stepper.md @@ -5,32 +5,32 @@ title: Stepper ## Aperçu -Un stepper permet à l'utilisateur de faire défiler des valeurs numériques, des durées (heures) ou des dates par des étapes pré-définies en cliquant sur les boutons de direction. +A stepper lets the user scroll through numeric values, durations (times) or dates by predefined steps by clicking on the arrow buttons.  -## Utilisation du stepper +## Using steppers -La variable associée à l’objet peut être affectée à une zone saisissable (champ ou variable) afin de stocker ou modifier la valeur courante de l’objet. +You can assign the variable associated with the object to an enterable area (field or variable) to store or modify the current value of the object. -Un stepper peut être directement associé à une variable numérique, heure ou date. +A stepper can be associated directly with a number, time or date variable. -* Pour les valeurs de type heure, les propriétés Minimum, Maximum et Pas représentent des secondes. Par exemple, pour définir un stepper de 8h00 à 18h00 avec des pas de 10 minutes : +* For values of the time type, the Minimum, Maximum and Step properties represent seconds. For example, to set a stepper from 8:00 to 18:00 with 10-minute steps: * [minimum](properties_Scale.md#minium) = 28 800 (8\*60\*60) * [maximum](properties_Scale.md#maximum) = 64 800 (18\*60\*60) * [step](properties_Scale.md#step) = 600 (10\*60) -* Pour les valeurs de type date, la valeur saisie dans la propriété [Pas](properties_Scale.md#step) représente des jours. Les propriétés Minimum et Maximum sont ignorées. -> Pour que le stepper fonctionne avec une variable heure ou date, il est impératif de définir son type dans la Liste de propriétés ET de la déclarer explicitement via la commande [C_TIME](https://doc.4d.com/4Dv17R5/4D/17-R5/C-TIME.301-4128557.en.html) ou [C_DATE](https://doc.4d.com/4Dv17R5/4D/17-R5/C-DATE.301-4128570.en.html). +* For values of the date type, the value entered in the [step](properties_Scale.md#step) property represents days. The Minimum and Maximum properties are ignored. +> For the stepper to work with a time or date variable, it is imperative to set its type in the form AND to declare it explicitly via the [C_TIME](https://doc.4d.com/4Dv17R5/4D/17-R5/C-TIME.301-4128557.en.html) or [C_DATE](https://doc.4d.com/4Dv17R5/4D/17-R5/C-DATE.301-4128570.en.html) command. -Pour plus d'informations, veuillez vous reporter à la section [Utiliser des indicateurs](progressIndicator.md#using-indicatire) de la page "Indicateurs de progression". +For more information, please refer to [Using indicators](progressIndicator.md#using-indicatire) in the "Progress Indicator" page. -## Propriétés prises en charge +## Supported Properties [Border Line Style](properties_BackgroundAndBorder.md#border-line-style) - [Bottom](properties_CoordinatesAndSizing.md#bottom) - [Class](properties_Object.md#css-class) - [Enterable](properties_Entry.md#enterable) - [Execute object method](properties_Action.md#execute-object-method) - [Expression Type](properties_Object.md#expression-type) (only "integer", "number", "date", or "time") - [Height](properties_CoordinatesAndSizing.md#height) - [Help Tip](properties_Help.md#help-tip) - [Horizontal Sizing](properties_ResizingOptions.md#horizontal-sizing) - [Left](properties_CoordinatesAndSizing.md#left) - [Maximum](properties_Scale.md#maximum) - [Minimum](properties_Scale.md#minimum) - [Object Name](properties_Object.md#object-name) - [Right](properties_CoordinatesAndSizing.md#right) - [Step](properties_Scale.md#step) - [Top](properties_CoordinatesAndSizing.md#top) - [Type](properties_Object.md#type) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Sizing](properties_ResizingOptions.md#vertical-sizing) - [Visibility](properties_Display.md#visibility) - [Width](properties_CoordinatesAndSizing.md#width) -## Voir également -- [indicateurs de progression](progressIndicator.md) -- [règle](ruler.md) +## See also +- [progress indicators](progressIndicator.md) +- [rulers](ruler.md) From 037caf54446ce3d51811f3497aabe03f5b944907 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:17:11 +0100 Subject: [PATCH 050/260] New translations tabControl.md (French) --- .../fr/FormObjects/tabControl.md | 58 +++++++++---------- 1 file changed, 27 insertions(+), 31 deletions(-) diff --git a/website/translated_docs/fr/FormObjects/tabControl.md b/website/translated_docs/fr/FormObjects/tabControl.md index 1e9ac6fdcaa868..7aee07cb5e64ca 100644 --- a/website/translated_docs/fr/FormObjects/tabControl.md +++ b/website/translated_docs/fr/FormObjects/tabControl.md @@ -1,32 +1,32 @@ --- id: tabControl -title: Onglets +title: Tab Controls --- -Un onglet crée un objet qui permet à l’utilisateur de choisir entre plusieurs écrans virtuels affichés dans les limites de l’onglet. L’utilisateur accède à chaque écran en cliquant sur l’onglet correspondant. +A tab control creates an object that lets the user choose among a set of virtual screens that are enclosed by the tab control object. Each screen is accessed by clicking its tab. -Le formulaire multi-pages suivant utilise un onglet : +The following multi-page form uses a tab control object:  -Pour passer d’un écran à l’autre, l’utilisateur clique simplement sur l’onglet correspondant. +To navigate from screen to screen, the user simply clicks the desired tab. -Un onglet peut être utilisé, entre autres, pour gérer la navigation entre les pages d’un formulaire multi-pages. Dans ce cas, la commande [FORM GOTO PAGE](https://doc.4d.com/4Dv17R5/4D/17-R5/FORM-GOTO-PAGE.301-4128536.en.html) ou l’action standard `gotoPage` devra être appelée lorsque l’utilisateur cliquera sur l’onglet. +The screens can represent pages in a multi-page form or an object that changes when the user clicks a tab. If the tab control is used as a page navigation tool, then the [FORM GOTO PAGE](https://doc.4d.com/4Dv17R5/4D/17-R5/FORM-GOTO-PAGE.301-4128536.en.html) command or the `gotoPage` standard action would be used when a user clicks a tab. -Un onglet peut aussi être utilisé pour contrôler les données qui sont affichées dans un sous-formulaire. On peut, par exemple, implémenter un rolodex à l’aide d’un onglet. Chaque onglet afficherait alors une des lettres de l’alphabet et l’action de l’onglet serait de charger les informations correspondantes à la lettre sur lequel l’utilisateur a cliqué. +Another use of the tab control is to control the data that is displayed in a subform. For example, a Rolodex could be implemented using a tab control. The tabs would display the letters of the alphabet and the tab control’s action would be to load the data corresponding to the letter that the user clicked. -Chaque onglet peut afficher des intitulés ou des intitulés et des petites icônes. Si vous placez des icônes, elles apparaissent à gauche de chaque intitulé. Voici un exemple d’onglet qui utilise des icônes : +Each tab can display labels or labels and a small icon. If you include icons, they appear to the left of each label. Here is an example of a tab control that uses icons:  -Lorsque vous créez un onglet, 4D gère l’espacement et le placement des onglets. Vous n’avez à fournir à 4D que les intitulés sous la forme d’un tableau ou les icônes et intitulés sous la forme d’une énumération hiérarchique. +When you create a tab control, 4D manages the spacing and placement of the tabs. You only need to supply the labels in the form of an array, or the icons and labels in the form of a hierarchical list. -Si l’onglet est assez large, il affiche les intitulés et les icônes. S’il ne peut pas afficher toutes les icônes à la fois, il place des flèches de défilement à droite du dernier onglet visible. Les flèches de défilement permettent à l’utilisateur de faire défiler des onglets vers la droite ou vers la gauche. +If the tab control is wide enough to display all the tabs with both the labels and icons, it displays both. If the tab control is not wide enough to display both the labels and icons, 4D displays the icons only. If it can’t fit all the icons, it places scroll arrows to the right of the last visible tab. The scroll arrows allow the user to scroll the icons to the left or right. -Sous macOS, les onglets peuvent être orientés, en plus de la position standard (en haut), à droite, à gauche ou en bas. +Under macOS, in addition to the standard position (top), the tab controls can also be aligned to the bottom. -### Exemple JSON : +### JSON Example: ```4d "myTab": { @@ -35,18 +35,18 @@ Sous macOS, les onglets peuvent être orientés, en plus de la position standard "top": 160, "width": 100, "height": 20, - "labelsPlacement": "bottom" //définit l'orientation + "labelsPlacement": "bottom" //define the direction } ``` -## Ajouter les intitulés dans un onglet +## Adding labels to a tab control -Pour placer des intitulés dans un onglet, plusieurs possibilités se présentent à vous : +There are several ways to supply the labels for a tab control: -* Vous pouvez associer à l’onglet [une liste de valeurs](properties_DataSource.md#choice-list-static-list), accessible via une collection (liste statique) ou un pointeur JSON ("$ref") vers une liste json. Les icônes associées à des éléments de liste dans l'éditeur de listes seront affichées dans l'onglet. -* Vous pouvez créer un tableau Texte qui contient les noms de chaque page du formulaire. Le code doit être exécuté avant que le formulaire soit présenté à l’utilisateur. Par exemple, vous pouvez placer ce code dans l’événement formulaire `Sur chargement`. +* You can assign a [choice list](properties_DataSource.md#choice-list-static-list) to the tab control, either through a collection (static list) or a JSON pointer ("$ref") to a json list. Icons associated with list items in the Lists editor will be displayed in the tob control. +* You can create a Text array that contains the names of each page of the form. This code must be executed before the form is presented to the user. For example, you could place the code in the object method of the tab control and execute it when the `On Load` event occurs. ```4d ARRAY TEXT(arrPages;3) @@ -54,22 +54,22 @@ Pour placer des intitulés dans un onglet, plusieurs possibilités se présenten arrPages{2}:="Address" arrPages{3}:="Notes" ``` -> Vous pouvez aussi stocker les noms des pages dans une liste hiérarchique et utiliser la commande `Load list` pour charger les valeurs dans le tableau. +> You can also store the names of the pages in a hierarchical list and use the `Load list` command to load the values into the array. -## Gérer les onglets par programmation +## Managing tabs programmatically -### Commande FORM GOTO PAGE +### FORM GOTO PAGE command -Vous pouvez utiliser la commande [FORM GOTO PAGE](https://doc.4d.com/4Dv17R5/4D/17-R5/FORM-GOTO-PAGE.301-4128536.en.html) dans la méthode objet de l’onglet pour naviguer parmi les pages du formulaire : +You can use the [FORM GOTO PAGE](https://doc.4d.com/4Dv17R5/4D/17-R5/FORM-GOTO-PAGE.301-4128536.en.html) command in the tab control’s method: ```4d FORM GOTO PAGE(arrPages) ``` -Cette commande devra être exécutée dans l’événement formulaire `Sur clic`. Il est préférable d’effacer le tableau dans l’événement formulaire `Sur libération`. +The command is executed when the `On Clicked` event occurs. You should then clear the array when the `On Unload` event occurs. -Vous pouvez, par exemple, écrire le code suivant : +Here is an example object method: ```4d Case of @@ -82,16 +82,12 @@ Vous pouvez, par exemple, écrire le code suivant : End case ``` -### Action Goto Page +### Goto Page action -Lorsque vous associez l’[](properties_Action.md#standard-action)action standard - `gotoPage` à un objet de type Onglet, 4D affiche automatiquement la page du formulaire correspondant au numéro de l’onglet sélectionné. Date: Wed, 16 Dec 2020 16:17:13 +0100 Subject: [PATCH 051/260] New translations overview.md (French) --- website/translated_docs/fr/Menus/overview.md | 28 ++++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/website/translated_docs/fr/Menus/overview.md b/website/translated_docs/fr/Menus/overview.md index 83821460ef9e4d..707456910db70c 100644 --- a/website/translated_docs/fr/Menus/overview.md +++ b/website/translated_docs/fr/Menus/overview.md @@ -7,28 +7,28 @@ You can create menu bars and menus for your 4D applications. Because pull-down m  -Une **barre de menus** est un groupe de menus qui peuvent être affichés dans le même écran. Chaque **menu** d’une barre de menus peut posséder plusieurs commandes dont certaines peuvent faire appel à des sous-menus en cascade (on parle alors de sous-menus hiérarchiques). Lorsque l’utilisateur choisit une commande de menu ou de sous-menu, il appelle une méthode projet ou une action standard qui réalise une opération. +A **menu bar** is a group of menus that can be displayed on a screen together. Each **menu** on a menu bar can have numerous menu commands in it, including some that call cascading submenus (or hierarchical submenus). When the user chooses a menu or submenu command, it calls a project method or a standard action that performs an operation. -You can have many separate menu bars for each application. For example, you can use one menu bar that contains menus for standard operations on the database and another that becomes active only for reporting. Une barre de menus peut contenir des commandes destinées à la saisie d’enregistrements. La barre de menus qui apparaît avec le formulaire de saisie peut contenir le même menu, mais ses commandes peuvent être désactivées car inutiles pour la saisie dans le formulaire. +You can have many separate menu bars for each application. For example, you can use one menu bar that contains menus for standard operations on the database and another that becomes active only for reporting. One menu bar may contain a menu with menu commands for entering records. The menu bar appearing with the input form may contain the same menu, but the menu commands are disabled because the user doesn’t need them during data entry. -Vous pouvez utiliser le même menu dans plusieurs barres de menus et menus, ou ne pas l’attacher et le gérer uniquement par programmation (on parle dans ce cas de menu indépendant). +You can use the same menu in several menu bars or other menus, or you can leave it unattached and manage it only by programming (in this case, it is known as an independent menu). -Lorsque vous créez des menus, il est utile de garder à l’esprit les deux règles suivantes : -- N’utilisez les menus que pour des tâches qui leurs sont adaptées : Les commandes de menus doivent réaliser des tâches telles que l’ajout d’un enregistrement, les recherches ou les impressions. -- Groupez les commandes de menus par fonctions : l’utilisateur doit pouvoir être capable de s’orienter dans un ordre logique de menus. Par exemple, toutes les commandes de menu qui permettent de naviguer dans la base doivent être placées dans le même menu. +When you design menus, keep the following two rules in mind: +- Use menus for functions that are suited to menus: Menu commands should perform tasks such as adding a record, searching for records, or printing a report. +- Group menu commands by function: For example, all menu commands that print reports should be in the same menu. For another example, you might have all the operations for a certain table in one menu. -Pour créer des menus et des barres de menus, vous pouvez utiliser soit : +To create menus and menu bars, you can use either: -- l’éditeur de menus, -- les commandes du langage, -- un mélange des deux. +- the Menu editor from the Toolbox, +- language commands for the "Menus" theme, +- a combination of both. -## Éditeur de menus -L’éditeur de menus est accessible via le bouton **Menus** de la Boîte à outils. +## Menu editor +The Menu editor is accessed using the **Menus** button of the Toolbox.  -Les barres de menus et les menus sont affichés sous forme de deux éléments d’une même liste hiérarchique, dans la partie gauche de la fenêtre. Chaque menu peut être attaché à une barre de menus ou à un autre menu. Dans le deuxième cas, le menu devient un sous-menu. +Menus and menu bars are displayed as two items of the same hierarchical list, on the left side of the dialog box. Each menu can be attached to a menu bar or to another menu. In the second case, the menu becomes a sub-menu. -4D affecte des numéros de barre de menus séquentiellement -- Menu Bar #1 apparait en premier. Vous pouvez renommer des barres de menu mais vous ne pouvez pas modifier leur numéro. Ces derniers sont utilisés par les commandes du langage. +4D assigns menu bar numbers sequentially — Menu Bar #1 appears first. You can rename menu bars but you cannot change their numbers. These numbers are used by the language commands. From 096e9bec1d6cd3d9b849331689a6804694f730ec Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:17:15 +0100 Subject: [PATCH 052/260] New translations viewProArea_overview.md (French) --- .../fr/FormObjects/viewProArea_overview.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/website/translated_docs/fr/FormObjects/viewProArea_overview.md b/website/translated_docs/fr/FormObjects/viewProArea_overview.md index ac568f88fab96f..0e0a565395139f 100644 --- a/website/translated_docs/fr/FormObjects/viewProArea_overview.md +++ b/website/translated_docs/fr/FormObjects/viewProArea_overview.md @@ -1,20 +1,20 @@ --- id: viewProAreaOverview -title: Zone 4D View Pro +title: 4D View Pro area --- -4D View Pro vous permet d'insérer et d'afficher une zone de tableur dans vos formulaires 4D. Une tableur est une application contenant une grille de cellules dans lesquelles vous pouvez saisir des informations, effectuer des calculs ou afficher des images. +4D View Pro allows you to insert and display a spreadsheet area in your 4D forms. A spreadsheet is an application containing a grid of cells into which you can enter information, execute calculations, or display pictures.  -Une fois que vous utilisez les zones 4D View Pro dans vos formulaires, vous pouvez importer et exporter des feuilles de calcul. +Once you use 4D View Pro areas in your forms, you can import and export spreadsheets documents. -## Utiliser des zones 4D View Pro +## Using 4D View Pro areas -Les zones 4D View Pro sont documentées dans le manuel [4D View Pro](https://doc.4d.com/4Dv17R6/4D/17-R6/4D-View-Pro-Reference.100-4351323.en.html). +4D View Pro areas are documented in the [4D View Pro Reference](https://doc.4d.com/4Dv17R6/4D/17-R6/4D-View-Pro-Reference.100-4351323.en.html) manual. -## Propriétés prises en charge +## Supported Properties -[Style de la bordure](properties_BackgroundAndBorder.md#border-line-style) - [Bas](properties_CoordinatesAndSizing.md#bottom) - [Css Class](properties_Object.md#css-class) - [Haut](properties_CoordinatesAndSizing.md#height) - [Dim. horizontal](properties_ResizingOptions.md#horizontal-sizing) - [Gauche](properties_CoordinatesAndSizing.md#left) - [Méthode](properties_Action.md#method) - [Nom](properties_Object.md#object-name) - [Droite](properties_CoordinatesAndSizing.md#right) - [Afficher barre de formule](properties_Appearance.md#show-formula-bar) - [Type](properties_Object.md#type) - [Interface utilisateur](properties_Appearance.md#user-interface) - [Dim. vertical](properties_ResizingOptions.md#vertical-sizing) - [Visibilité](properties_Display.md#visibility) - [Largeur](properties_CoordinatesAndSizing.md#width) +[Border Line Style](properties_BackgroundAndBorder.md#border-line-style) - [Bottom](properties_CoordinatesAndSizing.md#bottom) - [Class](properties_Object.md#css-class) - [Height](properties_CoordinatesAndSizing.md#height) - [Horizontal Sizing](properties_ResizingOptions.md#horizontal-sizing) - [Left](properties_CoordinatesAndSizing.md#left) - [Method](properties_Action.md#method) - [Object Name](properties_Object.md#object-name) - [Right](properties_CoordinatesAndSizing.md#right) - [Show Formula Bar](properties_Appearance.md#show-formula-bar) - [Type](properties_Object.md#type) - [User Interface](properties_Appearance.md#user-interface) - [Vertical Sizing](properties_ResizingOptions.md#vertical-sizing) - [Visibility](properties_Display.md#visibility) - [Width](properties_CoordinatesAndSizing.md#width) From f33c97af0838411abf4c6092e6d378f2d538d843 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:17:18 +0100 Subject: [PATCH 053/260] New translations webArea_overview.md (French) --- .../fr/FormObjects/webArea_overview.md | 80 +++++++++---------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/website/translated_docs/fr/FormObjects/webArea_overview.md b/website/translated_docs/fr/FormObjects/webArea_overview.md index 39ea89d9a52ab2..55c6ca744f73db 100644 --- a/website/translated_docs/fr/FormObjects/webArea_overview.md +++ b/website/translated_docs/fr/FormObjects/webArea_overview.md @@ -1,6 +1,6 @@ --- id: webAreaOverview -title: Zone Web +title: Web Area --- ## Aperçu @@ -9,60 +9,60 @@ Web areas can display various types of web content within your forms: HTML pages It is possible to create several web areas in the same form. Note, however, that the use of web areas must follow [several rules](#web-areas-rules). -Several dedicated [standard actions](#standard-actions), numerous [language commands](https://doc.4d.com/4Dv18/4D/18/Web-Area.201-4504309.en.html) as well as generic and specific [form events](#form-events) allow the developer to control the functioning of web areas. Des variables spécifiques permettent d’échanger des informations entre la zone et l’environnement 4D. +Several dedicated [standard actions](#standard-actions), numerous [language commands](https://doc.4d.com/4Dv18/4D/18/Web-Area.201-4504309.en.html) as well as generic and specific [form events](#form-events) allow the developer to control the functioning of web areas. Specific variables can be used to exchange information between the area and the 4D environment. > The use of web plugins and Java applets is not recommended in web areas because they may lead to instability in the operation of 4D, particularly at the event management level. -## Propriétés spécifiques +## Specific properties -### Variables associées +### Associated variables Two specific variables can be associated with each web area: - [`URL`](properties_WebArea.md#url) --to control the URL displayed by the web area - [`Progression`](properties_WebArea.md#progression) -- to control the loading percentage of the page displayed in the web area. -### Moteur de rendu Web +### Web rendering engine You can choose between [two rendering engines](properties_WebArea.md#use-embedded-web-rendering-engine) for the web area, depending on the specifics of your application. Selecting the embedded web rendering engine allows you to call 4D methods from the web area. -### Accéder aux méthodes 4D +### Access 4D methods When the [Access 4D methods](properties_WebArea.md#access-4d-methods) property is selected, you can call 4D methods from a web area. > This property is only available if the web area [uses the embedded web rendering engine](#use-embedded-web-rendering-engine). -### Objet $4d +### $4d object The [4D embedded web rendering engine](#use-embedded-web-rendering-engine) supplies the area with a JavaScript object named $4d that you can associate with any 4D project method using the "." object notation. -Par exemple, pour appeler la méthode 4D `HelloWorld`, vous devez simplement exécuter la déclaration suivante : +For example, to call the `HelloWorld` 4D method, you just execute the following statement: ```codeJS $4d.HelloWorld(); ``` -> JavaScript est sensible à la casse. Il est donc important de noter que l'objet est nommé $4d (avec un "d" minuscule). +> JavaScript is case sensitive so it is important to note that the object is named $4d (with a lowercase "d"). -La syntaxe des appels aux méthodes 4D est la suivante : +The syntax of calls to 4D methods is as follows: ```codeJS $4d.4DMethodName(param1,paramN,function(result){}) ``` -- `param1...paramN` : Vous pouvez passer autant de paramètres que vous le souhaitez dans la méthode 4D. Ces paramètres peuvent être de n'importe quel type pris en charge par JavaScript (chaîne, numérique, tableau, objet). +- `param1...paramN`: You can pass as many parameters as you need to the 4D method. These parameters can be of any type supported by JavaScript (string, number, array, object). -- `function(result)` : Fonction à passer comme dernier argument. Cette fonction "callback" est appelée de manière sychronisée une fois que la méthode 4D a fini de s'exécuter. Elle reçoit le paramètre `result`. +- `function(result)`: Function to pass as last argument. This "callback" function is called synchronously once the 4D method finishes executing. It receives the `result` parameter. -- `result`: Résultat de l'exécution de la méthode 4D, retournée dans l'expression "$0". Ce résultat peut être de n'importe quel type pris en charge par JavaScript (chaîne, numérique, tableau, objet). Vous pouvez utiliser la commande `C_OBJECT` pour retourner les objets. +- `result`: Execution result of the 4D method, returned in the "$0" expression. This result can be of any type supported by JavaScript (string, number, array, object). You can use the `C_OBJECT` command to return the objects. -> Par défaut, 4D opère en UTF-8. Lorsque vous retournez du texte contenant des caractères étendus, tels que des caractères avec des accents, assurez-vous que l'encodage de la page affiché dans la zone Web est déclaré en UTF-8, sinon les caractères risquent de ne pas être retournés correctement. Dans ce cas, ajoutez la ligne suivante dans la page HTML pour déclarer l'encodage : `` +> By default, 4D works in UTF-8. When you return text containing extended characters, for example characters with accents, make sure the encoding of the page displayed in the Web area is declared as UTF-8, otherwise the characters may be rendered incorrectly. In this case, add the following line in the HTML page to declare the encoding: `` -#### Exemple 1 -Considérons une méthode projet 4D nommée `today` qui ne reçoit pas de paramètres et qui retourne la date courante dans une chaîne. +#### Example 1 +Given a 4D project method named `today` that does not receive parameters and returns the current date as a string. -Code 4D de la méthode `today` : +4D code of `today` method: ```4d C_TEXT($0) @@ -75,9 +75,9 @@ In the web area, the 4D method can be called with the following syntax: $4d.today() ``` -La méthode 4D ne reçoit aucun paramètre mais elle retourne la valeur $0 à la fonction callback appelée par 4D après avoir exécuté la méthode. We want to display the date in the HTML page that is loaded by the web area. +The 4D method does not receive any parameters but it does return the value of $0 to the callback function called by 4D after the execution of the method. We want to display the date in the HTML page that is loaded by the web area. -Voici le code de la page HTML : +Here is the code of the HTML page: ```html @@ -96,15 +96,15 @@ $4d.today(function(dollarZero) ``` -#### Exemple 2 +#### Example 2 -La méthode projet 4D `calcSum` reçoit des paramètres (`$1...$n`) et retourne leur somme dans `$0` : +The 4D project method `calcSum` receives parameters (`$1...$n`) and returns their sum in `$0`: -Code 4D de la méthode `calcSum` : +4D code of `calcSum` method: ```4d - C_REAL(${1}) // reçoit n paramètres de type REEL - C_REAL($0) // retourne un Réel + C_REAL(${1}) // receives n REAL type parameters + C_REAL($0) // returns a Real C_LONGINT($i;$n) $n:=Count parameters For($i;1;$n) @@ -117,17 +117,17 @@ The JavaScript code run in the web area is: ```js $4d.calcSum(33, 45, 75, 102.5, 7, function(dollarZero) { - var result = dollarZero // le résultat est 262.5 + var result = dollarZero // result is 262.5 }); ``` -## Actions standard +## Standard actions -Quatre actions standard sont disponibles pour gérer automatiquement les zones Web : `Open Back URL`, `Open Next URL`, `Refresh Current URL` and `Stop Loading URL`. These actions can be associated with buttons or menu commands and allow quick implementation of basic web interfaces. Ces actions sont décrites dans [Actions standard](https://doc.4d.com/4Dv17R6/4D/17-R6/Standard-actions.300-4354791.en.html). +Four specific standard actions are available for managing web areas automatically: `Open Back URL`, `Open Next URL`, `Refresh Current URL` and `Stop Loading URL`. These actions can be associated with buttons or menu commands and allow quick implementation of basic web interfaces. These actions are described in [Standard actions](https://doc.4d.com/4Dv17R6/4D/17-R6/Standard-actions.300-4354791.en.html). -## Evénements formulaire +## Form events Specific form events are intended for programmed management of web areas, more particularly concerning the activation of links: @@ -147,33 +147,33 @@ In addition, web areas support the following generic form events: - `On Losing Focus` -## Notes d'utilisation des zones Web +## Web area rules -### Interface utilisateur +### User interface When the form is executed, standard browser interface functions are available to the user in the web area, which permit interaction with other form areas: - **Edit menu commands**: When the web area has the focus, the **Edit** menu commands can be used to carry out actions such as copy, paste, select all, etc., according to the selection. -- **Context menu**: It is possible to use the standard [context menu](properties_Entry.md#context-menu) of the system with the web area. L’affichage de ce menu peut également être contrôlé via la commande `WA SET PREFERENCE`. +- **Context menu**: It is possible to use the standard [context menu](properties_Entry.md#context-menu) of the system with the web area. Display of the context menu can be controlled using the `WA SET PREFERENCE` command. - **Drag and drop**: The user can drag and drop text, pictures and documents within the web area or between a web area and the 4D form objects, according to the 4D object properties. For security reasons, changing the contents of a web area by means of dragging and dropping a file or URL is not allowed by default. In this case, the cursor displays a "forbidden" icon . You have to use the `WA SET PREFERENCE` command to explicitly allow the dropping of URLs or files in the web area. -### Sous-formulaires +### Subforms For reasons related to window redrawing mechanisms, the insertion of a web area into a subform is subject to the following constraints: -- Le sous-formulaire ne doit pas pouvoir défiler, +- The subform must not be able to scroll - The limits of the web area must not exceed the size of the subform > Superimposing a web area on top of or beneath other form objects is not supported. -### Conflit Zone Web et serveur Web (Windows) +### Web Area and Web server conflict (Windows) In Windows, it is not recommended to access, via a web area, the Web server of the 4D application containing the area because this configuration could lead to a conflict that freezes the application. Of course, a remote 4D can access the Web server of 4D Server, but not its own web server. -### Plugins Web et applets Java +### Web plugins and Java applets The use of web plugins and Java applets is not recommended in web areas because they may lead to instability in the operation of 4D, particularly at the event management level. -### Insertion du protocole (macOS) -The URLs handled by programming in web areas in macOS must begin with the protocol. Par exemple, vous devez passer la chaîne "http://www.monsite.fr" et non uniquement "www.monsite.fr". +### Insertion of protocol (macOS) +The URLs handled by programming in web areas in macOS must begin with the protocol. For example, you need to pass the string "http://www.mysite.com" and not just "www.mysite.com". ## Access to web inspector @@ -196,16 +196,16 @@ To display the web inspector, you can either execute the `WA OPEN WEB INSPECTOR` For more information, refer to the description of the `WA SET PREFERENCE` command. ### Using the web inspector -Lorsque les paramétrages décrits ci-dessus sont effectués, vous disposez de nouvelles options telles que **Inspect Element** dans le menu contextuel de la zone. When you select this option, the web inspector window is displayed. +When you have done the settings as described above, you then have new options such as **Inspect Element** in the context menu of the area. When you select this option, the web inspector window is displayed. > The web inspector is included in the embedded web rendering engine. For a detailed description of the features of this debugger, refer to the documentation provided by the web rendering engine. -## Propriétés prises en charge +## Supported Properties -[Style de la bordure](properties_BackgroundAndBorder.md#border-line-style) - [Bas](properties_CoordinatesAndSizing.md#bottom) - [CSS Class](properties_Object.md#css-class) - [Menu contextuel](properties_Entry.md#context-menu) - [Hauteur](properties_CoordinatesAndSizing.md#height) - [Dim. horizontal](properties_ResizingOptions.md#horizontal-sizing) - [Gauche](properties_CoordinatesAndSizing.md#left) - [Méthode](properties_Action.md#method) - [Nom](properties_Object.md#object-name) - [Progression](properties_WebArea.md#progression) - [Droite](properties_CoordinatesAndSizing.md#right) - [Haut](properties_CoordinatesAndSizing.md#top) - [Type](properties_Object.md#type) - URL<13> - [Utiliser le moteur de rendu Web intégré](properties_WebArea.md#use-embedded-web-rendering-engine) - [Variable ou expression](properties_Object.md#variable-or-expression) - [Dim. vertical](properties_ResizingOptions.md#vertical-sizing) - [Visibilité](properties_Display.md#visibility) - [Largeur](properties_CoordinatesAndSizing.md#width) +[Border Line Style](properties_BackgroundAndBorder.md#border-line-style) - [Bottom](properties_CoordinatesAndSizing.md#bottom) - [Class](properties_Object.md#css-class) - [Context Menu](properties_Entry.md#context-menu) - [Height](properties_CoordinatesAndSizing.md#height) - [Horizontal Sizing](properties_ResizingOptions.md#horizontal-sizing) - [Left](properties_CoordinatesAndSizing.md#left) - [Method](properties_Action.md#method) - [Object Name](properties_Object.md#object-name) - [Progression](properties_WebArea.md#progression) - [Right](properties_CoordinatesAndSizing.md#right) - [Top](properties_CoordinatesAndSizing.md#top) - [Type](properties_Object.md#type) - [URL](properties_WebArea.md#url) - [Use embedded Web rendering engine](properties_WebArea.md#use-embedded-web-rendering-engine) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Sizing](properties_ResizingOptions.md#vertical-sizing) - [Visibilty](properties_Display.md#visibility) - [Width](properties_CoordinatesAndSizing.md#width) From 191b991dd30f31205f27b5461be2edd899ad4920 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:17:20 +0100 Subject: [PATCH 054/260] New translations writeProArea_overview.md (French) --- .../fr/FormObjects/writeProArea_overview.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/website/translated_docs/fr/FormObjects/writeProArea_overview.md b/website/translated_docs/fr/FormObjects/writeProArea_overview.md index 75038463774d8e..e249b6d5e2505e 100644 --- a/website/translated_docs/fr/FormObjects/writeProArea_overview.md +++ b/website/translated_docs/fr/FormObjects/writeProArea_overview.md @@ -1,19 +1,19 @@ --- id: writeProAreaOverview -title: Zone 4D Write Pro +title: 4D Write Pro area --- -4D Write Pro offers 4D users an advanced word-processing tool, fully integrated with your 4D application. En utilisant 4D Write Pro, vous pouvez rédiger des e-mails et/ou des lettres pré-configurés contenant des images, une signature, du texte formaté et des placeholders pour des variables dynamiques. Vous pouvez également générer dynamiquement des factures ou des rapports, contenant du texte et des images formatés. +4D Write Pro offers 4D users an advanced word-processing tool, fully integrated with your 4D application. Using 4D Write Pro, you can write pre-formatted emails and/or letters containing images, a scanned signature, formatted text and placeholders for dynamic variables. You can also create invoices or reports dynamically, including formatted text and images.  -## Utiliser des zones 4D Write Pro +## Using 4D Write Pro areas -Les zones 4D Write Pro sont documentées dans le manuel [4D Write Pro](https://doc.4d.com/4Dv17R6/4D/17-R6/4D-Write-Pro.100-4433851.fe.html). +4D Write Pro areas are documented in the [4D Write Pro Reference](https://doc.4d.com/4Dv17R6/4D/17-R6/4D-Write-Pro.100-4433851.fe.html) manual. -## Propriétés prises en charge +## Supported Properties [Auto Spellcheck](properties_Entry.md#auto-spellcheck) - [Border Line Style](properties_BackgroundAndBorder.md#border-line-style) - [Bottom](properties_CoordinatesAndSizing.md#bottom) - [Class](properties_Object.md#css-class) - [Context Menu](properties_Entry.md#context-menu) - [Enterable](properties_Entry.md#enterable) - [Focusable](properties_Entry.md#focusable) - [Height](properties_CoordinatesAndSizing.md#height) - [Hide focus rectangle](properties_Appearance.md#hide-focus-rectangle) - [Horizontal Scroll Bar](properties_Appearance.md#horizontal-scroll-bar) - [Horizontal Sizing](properties_ResizingOptions.md#horizontal-sizing) - [Keyboard Layout](properties_Entry.md#keyboard-layout) - [Left](properties_CoordinatesAndSizing.md#left) - [Method](properties_Action.md#method) - [Object Name](properties_Object.md#object-name) - [Print Variable Frame](properties_Print.md#print-frame) - [Resolution](properties_Appearance.md#resolution) - [Right](properties_CoordinatesAndSizing.md#right) - [Selection always visible](properties_Entry.md#selection-always-visible) - [Show background](properties_Appearance.md#show-background) - [Show footers](properties_Appearance.md#show-footers) - [Show Formula Bar](properties_Appearance.md#show-formula-bar) - [Show headers](properties_Appearance.md#show-headers) - [Show hidden characters](properties_Appearance.md#show-hidden-characters) - [Show horizontal ruler](properties_Appearance.md#show-horizontal-ruler) - [Show HTML WYSIWYG](properties_Appearance.md#show-html-wysiwyg) - [Show page frame](properties_Appearance.md#show-page-frame) - [Show references](properties_Appearance.md#show-references) - [Show vertical ruler](properties_Appearance.md#show-vertical-ruler) - [Type](properties_Object.md#type) - [User Interface](properties_Appearance.md#user-interface) - [Vertical Sizing](properties_ResizingOptions.md#vertical-sizing) - [Vertical Scroll Bar](properties_Appearance.md#vertical-scroll-bar) - [View mode](properties_Appearance.md#view-mode) - [Visibility](properties_Display.md#visibility) - [Width](properties_CoordinatesAndSizing.md#width) - [Zoom](properties_Appearance.md#zoom) From ddae2c6e00db8bd788d9affdc5acc7f96e2ce94e Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:17:22 +0100 Subject: [PATCH 055/260] New translations Installation.md (French) --- .../fr/GettingStarted/Installation.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/website/translated_docs/fr/GettingStarted/Installation.md b/website/translated_docs/fr/GettingStarted/Installation.md index e29f8c092f4200..a37fe892d1d25a 100644 --- a/website/translated_docs/fr/GettingStarted/Installation.md +++ b/website/translated_docs/fr/GettingStarted/Installation.md @@ -3,46 +3,46 @@ id: installation title: Installation --- -Bienvenue à 4D ! Cette page regroupe toutes les informations nécessaires sur l'installation et le lancement de votre produit 4D. +Welcome to 4D! On this page, you will find all of the necessary information about installing and launching your 4D product. -## Configuration requise +## Required configuration -La page [Téléchargements](https://us.4d.com/product-download) dut site de 4D fournit des informations sur les pré-requis macOS / Windows nécessaires à la gamme 4D. +The [Product Download](https://us.4d.com/product-download) page on the 4D website provides information about the minimum macOS / Windows system requirements for your 4D series. -Des détails techniques supplémentaires sont disponibles sur la [page Ressources](https://us.4d.com/resources/feature-release) du site web de 4D. +Additional technical details are available on the 4D website's [Resources page](https://us.4d.com/resources/feature-release). -## Installation sur disque +## Installation on disk -Les produits 4D sont installés à partir du site web de 4D : +4D products are installed from the 4D website: -1. Connectez-vous au site internet de 4D puis consultez la page [Téléchargements](https://us.4d.com/product-download). +1. Connect to the 4D website and go to the [Downloads](https://us.4d.com/product-download) page. -2. Cliquez sur le lien de téléchargement du produit 4D de votre choix, puis suivez les instructions qui s'affichent à l'écran. +2. Click on the download link for your 4D product and follow the on-screen instructions. -## Connexion +## Sign in -Une fois l'installation terminée, vous pouvez lancer 4D et vous connecter. Pour ce faire, double-cliquez sur l'icône du produit 4D. +Once you have completed the installation, you can start 4D and sign in. To do so, double-click on the 4D product icon.  -Apparaît ensuite l'assistant de bienvenue : +The Welcome Wizard then appears:  -- Si vous souhaitez découvrir et explorer 4D, cliquez sur le lien **essai gratuit**. Il vous sera demandé de vous connecter ou de créer un compte 4D. +- If you want to discover and explore 4D, click on the **free trial** link. You will only be asked to sign in or to create a 4D account. -- Si vous possédez déjà un compte 4D, cliquez sur le lien **Se connecter** sur le côté supérieur droit de l'assistant d'installation et saisissez les informations relatives à votre compte. Toute licence 4D préalablement enregistrée est automatiquement mise à jour (ou les packs d'extension supplémentaires sont chargés) sur votre machine. +- If you already have a 4D account, click on the **Sign in** link in the upper right side of the Welcome Wizard dialog and enter your account information. Any already registered 4D licenses are automatically updated (or additional expansion packs loaded) on your machine. -Élargissez la zone **Ouvrir ou créer un projet d'application** et sélectionnez l'action que vous souhaitez exécuter : +Expand the **Open or create project application** area and select the action you want to perform: -- **Connectez-vous au 4D Server** - utilisez 4D en tant que client et connectez--vous à une application déjà chargée par 4D Server. +- **Connect to 4D Server** - use 4D as a remote client and connect to an application that is already loaded by 4D Server. -- **Ouvrez un projet d'application local** - chargez un projet d'application existant stocké sur votre disque. +- **Open a local application project** - load an existing application project stored on your disk. -- **Créez un nouveau projet d'application** - créez un nouveau projet d'application vide sur votre disque. +- **Create a new application project** - create a new, empty application project on your disk. -Nous vous souhaitons une excellente expérience 4D ! +Enjoy your 4D experience! From 50a6e58ed38d6b380472e2c3899f07fb2a8d7721 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:17:24 +0100 Subject: [PATCH 056/260] New translations analysis.md (French) --- website/translated_docs/fr/MSC/analysis.md | 76 +++++++++++----------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/website/translated_docs/fr/MSC/analysis.md b/website/translated_docs/fr/MSC/analysis.md index e77fe19dcc4f98..dfe013a5039a16 100644 --- a/website/translated_docs/fr/MSC/analysis.md +++ b/website/translated_docs/fr/MSC/analysis.md @@ -1,43 +1,43 @@ --- id: analysis -title: Page Analyse d'activités -sidebar_label: Page Analyse d'activités +title: Activity analysis Page +sidebar_label: Activity analysis Page --- -La page Analyse d'activités du CSM permet de visualiser le contenu du fichier d’historique courant. This function is useful for parsing the use of an application or detecting the operation(s) that caused errors or malfunctions. In the case of an application in client-server mode, it allows verifying operations performed by each client machine. -> Il est également possible de revenir en arrière parmi les opérations effectuées sur les données de la base. Pour plus d’informations sur ce point, reportez-vous à la section [Page Retour](rollback.md) arrière. - - - -Chaque opération élémentaire enregistrée dans le fichier d’historique apparaît sous forme d’une ligne. Les colonnes fournissent diverses informations concernant l’opération. Vous pouvez réorganiser les colonnes comme vous le souhaitez en cliquant sur leur en-tête. - -Les informations affichées permettent d’identifier la source et le contexte de chaque opération : - -- **Opération** : numéro de séquence de l’opération dans le fichier d’historique. -- **Action** : type d’opération effectuée. Cette colonne peut contenir les opérations suivantes : - - Ouverture du fichier de données : ouverture d’un fichier de données. - - Fermeture du fichier de données : fermeture du fichier de données ouvert. - - Création d’un contexte : création d’un process définissant un contexte d’exécution. - - Fermeture d’un contexte : fermeture d’un process. - - Ajout : création et stockage d’un enregistrement. - - Ajout d’un BLOB : stockage d’un BLOB dans un champ BLOB. - - Suppression : suppression d’un enregistrement. - - Modification : modification d’un enregistrement. - - Début de transaction : transaction démarrée. - - Validation de transaction : transaction validée. - - Annulation de transaction : transaction annulée. - - Contexte de mise à jour : modification des données supplémentaires (ex : un appel à `CHANGE CURRENT USER` ou `SET USER ALIAS`). - -- **Table** : table à laquelle appartient l’enregistrement ajouté/supprimé/modifié ou le BLOB. -- **Clé primaire/BLOB** : contenu de la clé primaire de l'enregistrement (lorsque la clé primaire est composée de plusieurs champs, les valeurs sont séparées par des points-virgules), ou numéro de séquence du BLOB impliqué dans l’opération. -- **Process** : numéro interne du process dans lequel l’opération a été effectuée. Ce numéro interne correspond au contexte de l’opération. Taille : taille en octets des données traitées par l’opération. -- **Taille** : taille (en octets) des données traitées par l’opération. -- **Date et Heure** : date et heure à laquelle l’opération a été effectuée. -- **4D User**: 4D user name of the user that performed the operation. Si un alias est défini pour l'utilisateur, l'alias s'affiche à la place du nom d'utilisateur 4D. -- **System User**: System name of the user that performed the operation. Si un alias est défini pour l'utilisateur, l'alias s'affiche à la place du nom d'utilisateur 4D. -- **Valeurs** : valeurs des champs de l’enregistrement en cas d’ajout ou de modification. Les valeurs sont séparées par des “;”. Seules les valeurs représentables sous forme alphanumérique sont affichées. - ***Note** : Si la base est chiffrée et si aucune clé de données valide correspondant au fichier d'historique n'a été fournie, les valeurs chiffrées ne sont pas affichées dans cette colonne.* -- **Enregistrements** : Numéro de l’enregistrement. - -Click on **Analyze** to update the contents of the current log file of the selected application (named by default dataname.journal). The Browse button can be used to select and open another log file for the application. Le bouton **Exporter...** vous permet d’exporter le contenu du fichier sous forme de texte. +The Activity analysis page allows viewing the contents of the current log file. This function is useful for parsing the use of an application or detecting the operation(s) that caused errors or malfunctions. In the case of an application in client-server mode, it allows verifying operations performed by each client machine. +> It is also possible to rollback the operations carried out on the data of the database. For more information, refer to [Rollback page](rollback.md). + + + +Every operation recorded in the log file appears as a row. The columns provide various information on the operation. You can reorganize the columns as desired by clicking on their headers. + +This information allows you to identify the source and context of each operation: + +- **Operation**: Sequence number of operation in the log file. +- **Action**: Type of operation performed on the data. This column can contain one of the following operations: + - Opening of Data File: Opening of a data file. + - Closing of Data File: Closing of an open data file. + - Creation of a Context: Creation of a process that specifies an execution context. + - Closing of a Context: Closing of process. + - Addition: Creation and storage of a record. + - Adding a BLOB: Storage of a BLOB in a BLOB field. + - Deletion: Deletion of a record. + - Modification: Modification of a record. + - Start of Transaction: Transaction started. + - Validation of Transaction: Transaction validated. + - Cancellation of Transaction: Transaction cancelled. + - Update context: Change in extra data (e.g. a call to `CHANGE CURRENT USER` or `SET USER ALIAS`). + +- **Table**: Table to which the added/deleted/modified record or BLOB belongs. +- **Primary Key/BLOB**: contents of the primary key for each record (when the primary key consists of several fields, the values are separated by semi-colons) or sequence number of the BLOB involved in the operation. +- **Process**: Internal number of process in which the operation was carried out. This internal number corresponds to the context of the operation. +- **Size**: Size (in bytes) of data processed by the operation. +- **Date and Hour**: Date and hour when the operation was performed. +- **System User**: System name of the user that performed the operation. In client-server mode, the name of the client-side machine is displayed; in single-user mode, the session name of the user is displayed. +- **4D User**: 4D user name of the user that performed the operation. If an alias is defined for the user, the alias is displayed instead of the 4D user name. +- **Values**: Values of fields for the record in the case of addition or modification. The values are separated by “;”. Only values represented in alphanumeric form are displayed. + ***Note:** If the database is encrypted and no valid data key corresponding to the open log file has been provided, encrypted values are not displayed in this column.* +- **Records**: Record number. + +Click on **Analyze** to update the contents of the current log file of the selected application (named by default dataname.journal). The Browse button can be used to select and open another log file for the application. The **Export...** button can be used to export the contents of the file as text. From 9a2bf83ebeee63f6ea5a9a368c6ca0efc19cd172 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:17:26 +0100 Subject: [PATCH 057/260] New translations compact.md (French) --- website/translated_docs/fr/MSC/compact.md | 76 +++++++++++------------ 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/website/translated_docs/fr/MSC/compact.md b/website/translated_docs/fr/MSC/compact.md index a702160cd1567a..6b5abb40ca8ab4 100644 --- a/website/translated_docs/fr/MSC/compact.md +++ b/website/translated_docs/fr/MSC/compact.md @@ -1,71 +1,71 @@ --- id: compact -title: Page compactage -sidebar_label: Page compactage +title: Compact Page +sidebar_label: Compact Page --- -Cette page permet d’accéder aux fonctions de compactage du fichier de données et de structure. +You use this page to access the data file compacting functions. -## Pourquoi compacter ? +## Why compact your files? -Le compactage d'un fichier répond à deux types de besoins : +Compacting files meets two types of needs: -- **Réduction de taille et optimisation des fichiers** : les fichiers peuvent comporter des emplacements inutilisés (des “trous”). En effet, lorsque vous supprimez des enregistrements, des formulaires, etc., l’emplacement qu’ils occupaient précédemment dans le fichier devient vacant. 4D réutilise ces emplacements vides lorsque c’est possible, mais la taille des données étant variable, les suppressions ou modifications successives génèrent inévitablement des espaces inutilisables pour le programme. Il en va de même lorsqu’une grande quantité de données vient d’être supprimée : les emplacements vides restent inaffectés dans le fichier. Le rapport entre la taille du fichier de données et l’espace réellement utilisé pour les données est le taux d’occupation des données. Un taux trop faible peut entraîner, outre un gaspillage de place, une dégradation des performances de la base. La fonction de compactage permet de réorganiser et d’optimiser le stockage des données afin de faire disparaître les “trous”. Les zones “Informations” résument les données relatives à la fragmentation des fichiers et suggèrent les opérations à effectuer. Les onglets de la page [Informations](information.md#data) du CSM indiquent la fragmentation courante des fichiers de la base. +- **Reducing size and optimization of files**: Files may contain unused spaces (“holes”). In fact, when you delete records, the space that they occupied previously in the file becomes empty. 4D reuses these empty spaces whenever possible, but since data size is variable, successive deletions or modifications will inevitably generate unusable space for the program. The same goes when a large quantity of data has just been deleted: the empty spaces remain unassigned in the file. The ratio between the size of the data file and the space actually used for the data is the occupation rate of the data. A rate that is too low can lead, in addition to a waste of space, to the deterioration of database performance. Compacting can be used to reorganize and optimize storage of the data in order to remove the “holes”. The “Information” area summarizes the data concerning the fragmentation of the file and suggests operations to be carried out. The [Data](information.md#data) tab on the “Information” page of the MSC indicates the fragmentation of the current data file. -- **Réenregistrement intégral des données** en appliquant le formatage courant défini dans le fichier de structure. Ce principe est utile lorsque les données d'une même table ont été stockées dans différents formats, par exemple après un changement dans la structure de la base. -> Le compactage n’est disponible qu’en mode maintenance. Si vous tentez d’effectuer cette opération en mode standard, une boîte de dialogue d’alerte vous prévient que l'application va être fermée puis relancée en mode maintenance. Il est possible de compacter un fichier de données non ouvert par l'application (cf. paragraphe [Compacter les enregistrements et les index](#compact-records-and-indexes) ci-dessous). +- **Complete updating of data** by applying the current formatting set in the structure file. This is useful when data from the same table were stored in different formats, for example after a change in the database structure. +> Compacting is only available in maintenance mode. If you attempt to carry out this operation in standard mode, a warning dialog box will inform you that the application will be closed and restarted in maintenance mode. You can compact a data file that is not opened by the application (see [Compact records and indexes](#compact-records-and-indexes) below). -## Le compactage standard +## Standard compacting -Pour démarrer directement le compactage du fichier de données ou de structure, cliquez sur le bouton correspondant dans la fenêtre du CSM. +To directly begin the compacting of the data file, click on the compacting button in the MSC window.  -> Le compactage entraînant la duplication du fichier d’origine, le bouton est désactivé si la place sur le disque contenant le fichier est insuffisante. +> Since compacting involves the duplication of the original file, the button is disabled when there is not adequate space available on the disk containing the file. -Cette opération défragmente le fichier principal ainsi que les éventuels fichiers d’index. 4D effectue une copie des fichiers d’origine et les place dans un dossier nommé **Replaced Files (Compacting)**, créé à côté du fichier d’origine. Si vous effectuez plusieurs compactages, un nouveau dossier est créé à chaque fois. Il est nommé “Replaced Files (Compacting)_1”, “Replaced Files (Compacting)_2”, etc. Vous pouvez modifier le dossier dans lequel les fichiers d’origine sont sauvegardés via le mode avancé. +This operation compacts the main file as well as any index files. 4D copies the original files and puts them in a folder named **Replaced Files (Compacting)**, which is created next to the original file. If you have carried out several compacting operations, a new folder is created each time. It will be named “Replaced Files (Compacting)_1”, “Replaced Files (Compacting)_2”, and so on. You can modify the folder where the original files are saved using the advanced mode. -A l’issue de l’opération, les fichiers défragmentés remplacent automatiquement les fichiers d’origine. L'application est immédiatement opérationnelle sans aucune autre manipulation. -> Lorsque la base est chiffrée, le compactage comprend le chiffrement et le déchiffrement et requiert ainsi la clé de chiffrement des données courante. Si aucune clé de chiffrement valide n'a encore été fournie, une boîte de dialogue s'affiche pour vous demander de saisir la phrase secrète ou la clé des données. +When the operation is completed, the compacted files automatically replace the original files. The application is immediately operational without any further manipulation. +> When the database is encrypted, compacting includes decryption and encryption steps and thus, requires the current data encryption key. If no valid data key has already been provided, a dialog box requesting the passphrase or the data key is displayed. -**Attention :** Chaque compactage entraîne la duplication du fichier d’origine et donc l’augmentation de la taille du dossier de l’application. Il est important de tenir compte de ce mécanisme (notamment sous macOS où les applications 4D apparaissent sous forme de packages) pour que l’application ne grossisse pas de façon excessive. Une intervention manuelle à l’intérieur du package peut être utile afin de supprimer les copies des fichiers d’origine. +**Warning:** Each compacting operation involves the duplication of the original file which increases the size of the application folder. It is important to take this into account (especially under macOS where 4D applications appear as packages) so that the size of the application does not increase excessively. Manually removing the copies of the original file inside the package can be useful in order to keep the package size down. -## Voir le compte rendu +## Open log file -Une fois le compactage terminé, 4D génère un fichier de compte-rendu dans le dossier Logs du projet. Ce fichier liste l’ensemble des opérations qui ont été menées. Il est créé au format xml et est nommé *ApplicationName**_Compact_Log_yyyy-mm-dd hh-mm-ss.xml*" où : +After compacting is completed, 4D generates a log file in the Logs folder of the project. This file allows you to view all the operations carried out. It is created in XML format and named: *ApplicationName**_Compact_Log_yyyy-mm-dd hh-mm-ss.xml*" where: -- *ApplicationName* est le nom du fichier de structure sans extension, par exemple "Factures", -- *aaaa-mm-jj hh-mm-ss* est l'horodatage du fichier, basé sur la date et l'heure système locales au moment du lancement de l'opération de vérification, par exemple "2019-02-11 15-20-45". +- *ApplicationName* is the name of the project file without any extension, for example "Invoices", +- *yyyy-mm-dd hh-mm-ss* is the timestamp of the file, based upon the local system time when the maintenance operation was started, for example "2019-02-11 15-20-45". -Lorsque vous cliquez sur le bouton **Voir le compte rendu**, 4D affiche le fichier de compte-rendu le plus récent dans le navigateur par défaut de l’ordinateur. +When you click on the **Open log file** button, 4D displays the most recent log file in the default browser of the machine. -## Mode avancé +## Advanced mode -La page Compactage comporte un bouton **Avancé**, permettant d’accéder à une page d’options pour le compactage des fichiers de données et de structure. +The Compact page contains an **Advanced>** button, which can be used to access an options page for compacting data file. -### Compacter les enregistrements et les index +### Compact records and indexes -La zone **Compacter les enregistrements et les index** affiche le chemin d’accès du fichier de données courant ainsi qu’un bouton **[...]** permettant de désigner un autre fichier de données. Lorsque vous cliquez sur ce bouton, une boîte de dialogue standard d’ouverture de documents s’affiche, vous permettant de désigner le fichier de données à compacter. Vous devez sélectionner un fichier de données compatible avec le fichier de structure ouvert. Une fois la boîte de dialogue validée, le chemin d’accès du fichier à compacter est indiqué dans la fenêtre. +The **Compact records and indexes** area displays the pathname of the current data file as well as a **[...]** button that can be used to specify another data file. When you click on this button, a standard Open document dialog box is displayed so that you can designate the data file to be compacted. You must select a data file that is compatible with the open structure file. Once this dialog box has been validated, the pathname of the file to be compacted is indicated in the window. -Le second bouton **[...]** permet de désigner un autre emplacement pour les sauvegardes des fichiers originaux effectuées avant compactage. Cette option permet notamment de compacter des fichiers volumineux en utilisant différents disques. +The second **[...]** button can be used to specify another location for the original files to be saved before the compacting operation. This option can be used more particularly when compacting voluminous files while using different disks. -### Forcer la mise à jour des enregistrements +### Force updating of the records -Lorsque cette option est cochée, 4D réécrit chaque enregistrement de chaque table lors de l’opération de compactage, en fonction de sa description en structure. Lorsque l’option n’est pas cochée, 4D réorganise uniquement le stockage des données sur le disque. Cette option est utile dans les cas suivants : +When this option is checked, 4D rewrites every record for each table during the compacting operation, according to its description in the structure. If this option is not checked, 4D just reorganizes the data storage on disk. This option is useful in the following cases: -- Lorsque des modifications de types de champs ont été apportées à la structure d’une application après que des données ont été saisies. Par exemple, vous pouvez avoir changé le type d’un champ Entier long en Réel. 4D autorise même des modifications entre des types très différents (avec risques de pertes de données), par exemple un champ Réel peut être changé en Texte et inversement. Dans ce cas, 4D ne convertit pas rétroactivement les données déjà saisies, elles ne sont converties que si les enregistrements sont chargés puis sauvegardés. L’option permet de forcer la conversion de toutes les données. +- When field types are changed in the application structure after data were entered. For example, you may have changed a Longint field to a Real type. 4D even allows changes between two very different types (with risks of data loss), for instance a Real field can be changed to Text and vice versa. In this case, 4D does not convert data already entered retroactively; data is converted only when records are loaded and then saved. This option forces all data to be converted. -- Lorsqu’une option de stockage externe des données de type Texte, Image ou BLOB a été modifiée après que des données aient été saisies. Ce cas peut notamment se produire après conversion d’une base en version 4D antérieure à la v13. Comme pour le cas du retypage ci-dessus, 4D ne modifie pas rétroactivement les données déjà saisies. Pour cela, vous pouvez forcer la mise à jour des enregistrements afin d’appliquer le nouveau mode de stockage aux enregistrements déjà saisis. +- When an external storage option for Text, Picture or BLOB data has been changed after data were entered. This can happen when databases are converted from a version prior to v13. As is the case with the retyping described above, 4D does not convert data already entered retroactively. To do this, you can force records to be updated in order to apply the new storage mode to records that have already been entered. -- Lorsque des champs ou des tables ont été supprimé(e)s. Dans ce cas, le compactage avec mise à jour des enregistrements permet de récupérer la place de ces données supprimées et donc de réduire la taille du fichier. -> La sélection de cette option entraîne la mise à jour de tous les index. +- When tables or fields were deleted. In this case, compacting with updating of records recovers the space of these removed data and thus reduces file size. +> All the indexes are updated when this option is selected. -### Compacter la table d’adresses -(option accessible uniquement lorsque la précédente est cochée) +### Compact address table +(option only active when preceding option is checked) -Cette option provoque la reconstruction complète de la table d’adresses des enregistrements au moment du compactage. Cette opération permet d’optimiser la taille de la table d’adresses. Elle est principalement utile dans les bases de données où de très nombreux enregistrements ont été créés puis supprimés. Dans les autres cas, l’optimisation ne sera pas déterminante. +This option completely rebuilds the address table for the records during compacting. This optimizes the size of the address table and is mainly used for databases where large volumes of data were created and then deleted. In other cases, optimization is not a decisive factor. -A noter que cette option ralentit le compactage de façon conséquente et qu’elle rend invalides les ensembles sauvegardés via la commande `SAVE SET`. Il est d’ailleurs fortement recommandé dans ce cas de supprimer les ensembles sauvegardés car leur utilisation peut conduire à des sélections de données erronées. -> - Le compactage tient compte des enregistrements des tables placées dans la corbeille. La présence d’un grand nombre d’enregistrements dans la corbeille peut constituer un facteur de ralentissement supplémentaire pour l’opération. -> - L'utilisation de cette option rend la table d'adresses, et donc la base de données, incompatibles avec le fichier d'historique courant (s'il en existe un). Il sera automatiquement sauvegardé et un nouveau fichier d'historique devra être créé au prochain lancement de l'application. -> - Vous pouvez déterminer si la table d'adresses a besoin d'être compactée en comparant sa taille avec le nombre total d'enregistrements dans la Page [Informations](information.md) du CSM. +Note that this option substantially slows compacting and invalidates any sets saved using the `SAVE SET` command. Moreover, we strongly recommend deleting saved sets in this case because their use can lead to selections of incorrect data. +> - Compacting takes records of tables that have been put into the Trash into account. If there are a large number of records in the Trash, this can be an additional factor that may slow down the operation. +> - Using this option makes the address table, and thus the database, incompatible with the current journal file (if there is one). It will be saved automatically and a new journal file will have to be created the next time the application is launched. +> - You can decide if the address table needs to be compacted by comparing the total number of records and the address table size in the [Information](information.md) page of the MSC. From a391c8db1e494688e015a886200a092c9120e320 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:17:28 +0100 Subject: [PATCH 058/260] New translations encrypt.md (French) --- website/translated_docs/fr/MSC/encrypt.md | 108 +++++++++++----------- 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/website/translated_docs/fr/MSC/encrypt.md b/website/translated_docs/fr/MSC/encrypt.md index cfe8ba1343375c..0dc76b76e7259c 100644 --- a/website/translated_docs/fr/MSC/encrypt.md +++ b/website/translated_docs/fr/MSC/encrypt.md @@ -1,94 +1,94 @@ --- id: encrypt -title: Page chiffrement -sidebar_label: Page chiffrement +title: Encrypt Page +sidebar_label: Encrypt Page --- -Vous pouvez vous aider de cette page pour chiffrer ou *déchiffrer* (i.e. enlever le chiffrement) le fichier de données, en fonction du statut de l'attribut **Chiffrable** défini pour chaque table de la base. For detailed information about data encryption in 4D, please refer to the "Encrypting data" section in the *Design Reference* manual. +You can use this page to encrypt or *decrypt* (i.e. remove encryption from) the data file, according to the **Encryptable** attribute status defined for each table in the database. For detailed information about data encryption in 4D, please refer to the "Encrypting data" section in the *Design Reference* manual. -Un nouveau dossier est créé à chaque opération de chiffrement/déchiffrement. Il est nommé "Replaced Files (Encrypting) *yyyy-mm-dd hh-mm-ss*" ou "Replaced Files (Decrypting) *yyyy-mm-dd hh-mm-ss*". -> Le chiffrement est disponible uniquement en [mode maintenance](overview.md#display-in-maintenance-mode). Si vous tentez d’effectuer cette opération en mode standard, une boîte de dialogue d’alerte vous prévient que l'application va être fermée puis relancée en mode maintenance +A new folder is created each time you perform an encryption/decryption operation. It is named "Replaced Files (Encrypting) *yyyy-mm-dd hh-mm-ss*> or "Replaced Files (Decrypting) *yyyy-mm-dd hh-mm-ss*". +> Encryption is only available in [maintenance mode](overview.md#display-in-maintenance-mode). If you attempt to carry out this operation in standard mode, a warning dialog will inform you that the application will be closed and restarted in maintenance mode -**Attention :** -- Le chiffrement d'un fichier de données est une opération de longue durée. Un indicateur de progression de l'opération s'affiche (et peut être interrompu par l'utilisateur). À noter également que le chiffrement d'une application comprend toujours une étape de compactage. -- Chaque opération de chiffrement génère une copie du fichier de données, ce qui augmente la taille du dossier de l'application. Il est important de prendre cela en considération (notamment sous macOS, où les applications 4D apparaissent sous forme de paquet) afin de ne pas augmenter excessivement la taille de l'application. Le déplacement ou la suppression manuels des copies du fichier original dans le paquet peut aider à réduire la taille du paquet. +**Warning:** +- Encrypting a data file is a lengthy operation. It displays a progress indicator (which could be interrupted by the user). Note also that an application encryption operation always includes a compacting step. +- Each encryption operation produces a copy of the data file, which increases the size of the application folder. It is important to take this into account (especially in macOS where 4D applications appear as packages) so that the size of the application does not increase excessively. Manually moving or removing the copies of the original file inside the package can be useful in order to minimize the package size. -## Chiffrer des données pour la première fois -Trois étapes sont nécessaires pour effectuer le tout premier chiffrement de vos données à l'aide du CSM : +## Encrypting data for the first time +Encrypting your data for the first time using the MSC requires the following steps: -1. Dans l'éditeur de structure, cochez l'attribut **Chiffrable** pour chaque table dont vous souhaitez chiffrer les données. Consultez la section "Propriétés des tables". -2. Ouvrez la page Chiffrement du CSM. If you open the page without setting any tables as **Encryptable**, the following message is displayed in the page:  Otherwise, the following message is displayed:  This means that the **Encryptable** status for at least one table has been modified and the data file still has not been encrypted. **Note : **Le même message s'affiche lorsque le statut **Chiffrable** a été modifié dans un fichier de données déjà chiffré ou après le déchiffrement d'un fichier de données (voir ci-dessous). -3. Cliquez sur le bouton de Chiffrement. +1. In the Structure editor, check the **Encryptable** attribute for each table whose data you want to encrypt. See the "Table properties" section. +2. Open the Encrypt page of the MSC. If you open the page without setting any tables as **Encryptable**, the following message is displayed in the page:  Otherwise, the following message is displayed: 
This means that the **Encryptable** status for at least one table has been modified and the data file still has not been encrypted. **Note: **The same message is displayed when the **Encryptable** status has been modified in an already encrypted data file or after the data file has been decrypted (see below). +3. Click on the Encrypt picture button.  - Vous serez ensuite invité à saisir une phrase secrète pour votre fichier de données :  La phrase secrète est utilisée pour générer la clé de chiffrement des données. Une phrase secrète est une version plus sécurisée d'un mot de passe et peut contenir un grand nombre de caractères. For example, you could enter a passphrases such as "We all came out to Montreux" or "My 1st Great Passphrase!!" The security level indicator can help you evaluate the strength of your passphrase:  (deep green is the highest level) -4. Tapez sur Entrée pour confirmer votre phrase secrète sécurisée. + You will be prompted to enter a passphrase for your data file:  The passphrase is used to generate the data encryption key. A passphrase is a more secure version of a password and can contain a large number of characters. For example, you could enter a passphrases such as "We all came out to Montreux" or "My 1st Great Passphrase!!" The security level indicator can help you evaluate the strength of your passphrase:  (deep green is the highest level) +4. Enter to confirm your secured passphrase. -Le processus de chiffrement est alors lancé. If the MSC was opened in standard mode, the application is reopened in maintenance mode. +The encrypting process is then launched. If the MSC was opened in standard mode, the application is reopened in maintenance mode. -4D propose de sauvegarder la clé de chiffrement (voir le paragraphe [Sauvegarder la clé de chiffrement](#saving-the-encryption-key) ci-dessous). Vous pouvez la sauvegarder à ce moment précis ou bien ultérieurement. Vous pouvez également ouvrir le fichier d'historique du chiffrement. +4D offers to save the encryption key (see [Saving the encryption key](#saving-the-encryption-key) below). You can do it at this moment or later. You can also open the encryption log file. -Si le processus de chiffrement est réussi, la page Chiffrement affiche les boutons Opérations de maintenance liées au chiffrement. +If the encryption process is successful, the Encrypt page displays Encryption maintenance operations buttons. -**Attention :** Durant l'opération de chiffrement, 4D créé un nouveau fichier de données vide et y insère des données à partir du fichier de données original. Les enregistrements correspondant aux tables "chiffrées" sont chiffrés puis copiés ; les autres enregistrements sont uniquement copiés (une opération de compactage est également exécutée). Si l'opération est réussie, le fichier de données original est déplacé vers un dossier "Replaced Files (Encrypting)". If you intend to deliver an encrypted data file, make sure to move/remove any unencrypted data file from the application folder beforehand. +**Warning:** During the encryption operation, 4D creates a new, empty data file and fills it with data from the original data file. Records belonging to "encryptable" tables are encrypted then copied, other records are only copied (a compacting operation is also executed). If the operation is successful, the original data file is moved to a "Replaced Files (Encrypting)" folder. If you intend to deliver an encrypted data file, make sure to move/remove any unencrypted data file from the application folder beforehand. -## Opérations de maintenance liées au chiffrement -When an application is encrypted (see above), the Encrypt page provides several encryption maintenance operations, corresponding to standard scenarios.  +## Encryption maintenance operations +When an application is encrypted (see above), the Encrypt page provides several encryption maintenance operations, corresponding to standard scenarios.  -### Fournir la clé de chiffrement des données actuelle -Pour des raisons de sécurité, toutes les opérations de maintenance liées au chiffrement nécessitent la clé de chiffrement des données actuelle. +### Providing the current data encryption key +For security reasons, all encryption maintenance operations require that the current data encryption key be provided. -- Si la clé de chiffrement des données est déjà chargée dans le trousseau 4D(1), elle est automatiquement réutilisée par 4D. -- Si la clé de chiffrement des données n'est pas identifiée, vous devez la fournir. La boîte de dialogue suivante s'affiche :  +- If the data encryption key is already loaded in the 4D keychain(1), it is automatically reused by 4D. +- If the data encryption key is not found, you must provide it. The following dialog is displayed:  -À ce stade, deux options s'offrent à vous : -- entrer la phrase secrète actuelle(2) et cliquer sur **OK**. OU -- connecter un appareil tel qu'une clé USB et cliquer sur le bouton **Scanner les disques**. +At this step, you have two options: +- enter the current passphrase(2) and click **OK**. OR +- connect a device such as a USB key and click the **Scan devices** button. -(1) Le trousseau de 4D stocke toutes les clés de chiffrement de données valides saisies durant la session d'application session. -(2) Le mot de passe actuel correspond au mot de passe utilisé pour générer la clé de chiffrement actuelle. +(1) The 4D keychain stores all valid data encrpytion keys entered during the application session. +(2) The current passphrase is the passphrase used to generate the current encryption key. -Dans tous les cas, si des informations valides sont fournies, 4D redémarre en mode maintenance (si ce n'est pas déjà le cas) et exécute l'opération. +In all cases, if valid information is provided, 4D restarts in maintenance mode (if not already the case) and executes the operation. -### Re-chiffrer les données à l'aide de la clé de chiffrement actuelle +### Re-encrypt data with the current encryption key -Cette opération est utile lorsque l'attribut **Chiffrable** a été modifié pour une ou plusieurs tables contenant des données. Dans ce cas, afin d'éviter toute incohérence dans le fichier de données, 4D désactive l'accès en écriture aux enregistrements des tables dans l'application. Il est alors nécessaire de re-chiffrer les données pour restituer un statut de chiffrement valide. +This operation is useful when the **Encryptable** attribute has been modified for one or more tables containing data. In this case, to prevent inconsistencies in the data file, 4D disallows any write access to the records of the tables in the application. Re-encrypting data is then necessary to restore a valid encryption status. -1. Cliquez sur **Re-chiffrer les données à l'aide de la clé actuelle**. -2. Saisissez la clé de chiffrement des données actuelle. +1. Click on **Re-encrypt data with the current encryption key**. +2. Enter the current data encryption key. -Le fichier de données est correctement re-chiffré à l'aide de la clé actuelle et un message de confirmation s'affiche :  +The data file is properly re-encrypted with the current key and a confirmation message is displayed:  -### Changer votre phrase secrète et re-chiffrer les données -Cette opération est utile en cas de modification de la clé de chiffrement des données actuelle. Par exemple, il se peut que vous la modifiiez pour vous conformer aux règles de sécurité (telles que la nécessité de modifier la phrase secrète tous les trois mois). +### Change your passphrase and re-encrypt data +This operation is useful when you need to change the current encryption data key. For example, you may need to do so to comply with security rules (such as requiring changing the passphrase every three months). -1. Cliquez sur **Changer votre phrase secrète et re-chiffrer les données**. -2. Saisissez la clé de chiffrement des données actuelle. -3. Saisissez la nouvelle phrase secrète (pour plus de sécurité, il vous est demandé de la saisir deux fois) :  Le fichier de données est entièrement déchiffré et un message de confirmation s'affiche :  +1. Click on **Change your passphrase and re-encrypt data**. +2. Enter the current data encryption key. +3. Enter the new passphrase (for added security, you are prompted to enter it twice):  The data file is encrypted with the new key and the confirmation message is displayed.  -### Enlever le chiffrement de toutes les données -Cette opération supprime tout le chiffrement du fichier de données. Si vous ne souhaitez plus que vos données soient chiffrées : +### Decrypt all data +This operation removes all encryption from the data file. If you no longer want to have your data encrypted: -1. Cliquez sur **Enlever le chiffrement de toutes les données**. -2. Saisissez la clé de chiffrement de données actuelle (voir Fournir la clé de chiffrement des données actuelle). +1. Click on **Decrypt all data**. +2. Enter the current data encryption key (see Providing the current data encryption key). -Le fichier de données est entièrement déchiffré et un message de confirmation s'affiche :  -> Une fois que le fichier de données est déchiffré, le statut de chiffrement des tables ne correspond plus à leur attribut Chiffrable. Pour restituer un statut de mise en correspondance, vous devez décocher tous les attributs **Chiffrable** au niveau de la structure de la base. +The data file is fully decrypted and a confirmation message is displayed:  +> Once the data file is decrypted, the encryption status of tables do not match their Encryptable attributes. To restore a matching status, you must deselect all **Encryptable** attributes at the database structure level. -## Sauvegarder la clé de chiffrement +## Saving the encryption key -4D vous permet de sauvegarder la clé de chiffrement des données dans un fichier créé à cet effet. Storing this file on an external device such a USB key will facilitate the use of an encrypted application, since the user would only need to connect the device to provide the key before opening the application in order to access encrypted data. +4D allows you to save the data encryption key in a dedicated file. Storing this file on an external device such a USB key will facilitate the use of an encrypted application, since the user would only need to connect the device to provide the key before opening the application in order to access encrypted data. -Vous pouvez sauvegarder la clé de chiffrement chaque fois qu'une nouvelle phrase secrète est fournie : +You can save the encryption key each time a new passphrase has been provided: - when the application is encrypted for the first time, - when the application is re-encrypted with a new passphrase. -Les clés de chiffrement successives peuvent être sauvegardées sur le même appareil. +Successive encryption keys can be stored on the same device. -## Fichier d'historique +## Log file After an encryption operation has been completed, 4D generates a file in the Logs folder of the application. It is created in XML format and named "*ApplicationName_Encrypt_Log_yyyy-mm-dd hh-mm-ss.xml*" or "*ApplicationName_Decrypt_Log_yyyy-mm-dd hh-mm-ss.xml*". -Chaque fois qu'un nouveau fichier d'historique est généré, un bouton Voir le compte rendu s'affiche dans la page CSM. +An Open log file button is displayed on the MSC page each time a new log file has been generated. -Le fichier d'historique liste toutes les opérations internes liées au processus de chiffrement/déchiffrement qui ont été exécutées, ainsi que les erreurs (le cas échéant). +The log file lists all internal operations executed pertaining to the encryption/decryption process, as well as errors (if any). From 7257341e430eb1ef93589496727346411278e7d4 Mon Sep 17 00:00:00 2001 From: arnaud4d
Date: Wed, 16 Dec 2020 16:17:30 +0100 Subject: [PATCH 059/260] New translations information.md (French) --- website/translated_docs/fr/MSC/information.md | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/website/translated_docs/fr/MSC/information.md b/website/translated_docs/fr/MSC/information.md index 0913e92c790b4d..ade0d827d2ee49 100644 --- a/website/translated_docs/fr/MSC/information.md +++ b/website/translated_docs/fr/MSC/information.md @@ -1,52 +1,52 @@ --- id: information -title: Page informations -sidebar_label: Page informations +title: Information Page +sidebar_label: Information Page --- -La page “Informations” fournit diverses informations relatives à l’environnement 4D et l’environnement système, la base de données et les fichiers de l’application. Chaque page d’information est accessible via des onglets situés dans la partie supérieure de la fenêtre. +The Information page provides information about the 4D and system environments, as well as the database and application files. Each page can be displayed using tab controls at the top of the window. -## Programme +## Program -Cette page affiche le nom, la version et l’emplacement de l’application ainsi que du dossier 4D actif (pour plus d’informations sur le dossier 4D actif, reportez-vous à la description de la commande `Get 4D folder` du manuel *Langage 4D*). +This page indicates the name, version and location of the application as well as the active 4D folder (for more information about the active 4D folder, refer to the description of the `Get 4D folder` command in the *4D Language Reference* manual). The central part of the window indicates the name and location of the project and data files as well as the log file (if any). The lower part of the window indicates the name of the 4D license holder, the type of license, and the name of the current 4D user. -- **Affichage et sélection des chemins d’accès** : dans la page **Programme**, les chemins d’accès sont affichés sous forme de pop up menus contenant l’enchaînement des dossiers à partir du disque : -  Si vous sélectionnez un élément du menu (disque ou dossier), il s’affiche dans une nouvelle fenêtre système. La commande **Copier le chemin** copie le chemin d’accès complet dans le Presse-papiers sous forme de texte, et en utilisant les séparateurs de la plate-forme courante. +- **Display and selection of pathnames**: On the **Program** tab, pathnames are displayed in pop-up menus containing the folder sequence as found on the disk: +  If you select a menu item (disk or folder), it is displayed in a new system window. The **Copy the path** command copies the complete pathname as text to the clipboard, using the separators of the current platform. -- **Dossier “Licenses”** Le bouton **Dossier “Licenses”** permet d’afficher le contenu du dossier Licenses actif dans une nouvelle fenêtre système. Tous les fichiers de licence installés dans votre environnement 4D sont regroupés dans ce dossier, placé sur votre disque dur. Lorsqu’ils sont ouverts avec un navigateur Web, ces fichiers affichent des informations relatives aux licences qu’ils contiennent et à leurs caractéristiques. L’emplacement du dossier "Licenses" peut varier en fonction de la version ou de la langue de votre système d’exploitation. For more information about the location of this folder, refer to the `Get 4D folder` command. ***Note :** Vous pouvez également accéder à ce dossier depuis la boîte de dialogue “Mise à jour des licences” (accessible depuis le menu Aide).* +- **"Licenses" Folder** The **"Licenses" Folder** button displays the contents of the active Licenses folder in a new system window. All the license files installed in your 4D environment are grouped together in this folder, on your hard disk. When they are opened with a Web browser, these files display information concerning the licenses they contain and their characteristics. The location of the "Licenses" folder can vary depending on the version of your operating system. For more information about the location of this folder, refer to the `Get 4D folder` command. ***Note:** You can also access this folder from the “Update License” dialog box (available in the Help menu).* ## Tables -Cette page propose une vue d'ensemble de la base : +This page provides an overview of the tables in your database: - -> Les informations présentes dans cette page sont disponibles en mode standard et en mode maintenance. + +> Information on this page is available in both standard and maintenance modes. -La page liste toutes les tables de la base (y compris les tables invisibles) ainsi que leurs caractéristiques : +The page lists all the tables of the database (including invisible tables) as well as their characteristics: -- **No.** : Numéros internes des tables. -- **Tables** : Noms des tables. Les noms des tables supprimées sont affichés entre parenthèses (lorsqu'elles sont dans la corbeille). -- **Enregistrements** : Nombre total d'enregistrements de chaque table. Si un enregistrement est endommagé ou ne peut pas être lu, le mot *Erreur* est affiché à la place du total. Dans ce cas, vous devez envisager d'utiliser les outils de vérification et de réparation. -- **Champs** : Nombre de champs dans la table. Les champs invisibles sont comptés, en revanche les champs supprimés ne le sont pas. -- **Index** : Nombre d'index de tout type associés à la table +- **ID**: Internal number of the table. +- **Tables**: Name of the table. Names of deleted tables are displayed with parenthesis (if they are still in the trash). +- **Records**: Total number of records in the table. If a record is damaged or cannot be read, *Error* is displayed instead of the number. In this case, you can consider using the verify and repair tools. +- **Fields**: Number of fields in the table. Invisible fields are counted, however, deleted fields are not counted. +- **Indexes**: Number of indexes of any kind in the table - **Encryptable**: If checked, the **Encryptable** attribute is selected for the table at the structure level (see "Encryptable" paragraph in the Design Reference Manual). -- **Chiffrée** : Si cet attribut est coché, les enregistrements de la table sont chiffrés dans le fichier de données. ***Note**: Any inconstency between Encryptable and Encrypted options requires that you check the encryption status of the data file in the Encrypt page of the MSC.* -- **Taille table adresses** : Taille de la table d'adresses pour chaque table. La table d'adresses est une table interne qui stocke un élément par enregistrement créé dans la table. Elle établit le lien entre les enregistrements et leur adresse physique. Pour des raisons de performance, elle n'est pas redimensionnée lorsque des enregistrements sont supprimés. Sa taille peut donc être différente du nombre d'enregistrements actuel de la table. À noter que si cette différence est significative, il peut être intéressant de compacter les données avec l'option "Compacter la table d'adresses" afin d'optimiser la taille de la table d'adresses (voir [Page Compactage](compact.md)). ***Note :** Des différences entre la taille de la table d'adresses et le nombre d'enregistrements peuvent également résulter d'un incident durant l'écriture du cache sur le disque. * +- **Encrypted**: If checked, the records of the table are encrypted in the data file. ***Note**: Any inconstency between Encryptable and Encrypted options requires that you check the encryption status of the data file in the Encrypt page of the MSC.* +- **Address Table Size**: Size of the address table for each table. The address table is an internal table which stores one element per record created in the table. It actually links records to their physical address. For performance reasons, it is not resized when records are deleted, thus its size can be different from the current number of records in the table. If this difference is significant, a data compacting operation with the "Compact address table" option checked can be executed to optimize the address table size (see [Compact](compact.md) page). ***Note:** Differences between address table size and record number can also result from an incident during the cache flush.* -## Données +## Data -La page **Données** fournit des informations sur l'espace de stockage libre et occupé dans les fichiers de données et la structure de la base. -> Cette page n'est pas accessible en mode maintenance +The **Data** page provides information about the available and used storage space in the data file. +> This page cannot be accessed in maintenance mode -Ces informations sont fournies sous forme de valeurs en octets et sont également représentées sous forme graphique : +The information is provided in graph form: - -> La page Données ne tient pas compte de la taille des données éventuellement stockées à l’extérieur du fichier de données (cf. section Stockage externe des données). + +> This page does not take into account any data that may be stored outside of the data file (see "External storage"). -Des fichiers trop fragmentés réduisent les performances du disque dur et donc de la base. Si le taux d’occupation est trop faible, 4D vous le signale par une icône d’avertissement (qui apparaît dans le bouton Informations et dans l’onglet du type de fichier correspondant) et indique qu’un compactage est requis : +Files that are too fragmented reduce disk, and thus, database performance. If the occupation rate is too low, 4D will indicate this by a warning icon (which is displayed on the Information button and on the tab of the corresponding file type) and specify that compacting is necessary: -Une icône d’avertissement est également affichée sur le bouton de la Page [Compactage](compact.md) :  +A warning icon is also displayed on the button of the [Compact](compact.md) page:  From 3f9e49045a9e1bc83eb54e30cbd0d9152eb5c7a5 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:17:32 +0100 Subject: [PATCH 060/260] New translations repair.md (French) --- website/translated_docs/fr/MSC/repair.md | 76 ++++++++++++------------ 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/website/translated_docs/fr/MSC/repair.md b/website/translated_docs/fr/MSC/repair.md index ec413bcfa8e8f7..55bc4e7794c9b0 100644 --- a/website/translated_docs/fr/MSC/repair.md +++ b/website/translated_docs/fr/MSC/repair.md @@ -1,71 +1,71 @@ --- id: repair -title: Page Réparation -sidebar_label: Page Réparation +title: Repair Page +sidebar_label: Repair Page --- -Cette page permet de réparer le fichier de données ou le fichier de structure lorsqu’il a été endommagé. Generally, you will only use these functions at the request of 4D, when anomalies have been detected while opening the application or following a [verification](verify.md). +This page is used to repair the data file when it has been damaged. Generally, you will only use these functions at the request of 4D, when anomalies have been detected while opening the application or following a [verification](verify.md). -**Attention :** Chaque réparation entraîne la duplication du fichier d’origine et donc l’augmentation de la taille du dossier de l’application. Il est important de prendre cela en considération (notamment sous macOS, où les applications 4D apparaissent sous forme de paquet) afin de ne pas augmenter excessivement la taille de l'application. Une intervention manuelle à l’intérieur du package peut être utile afin de supprimer les copies des fichiers d’origine. -> La réparation n’est disponible qu’en mode maintenance. If you attempt to carry out this operation in standard mode, a warning dialog will inform you that the application will be closed and restarted in maintenance mode. -> Lorsque la base est chiffrée, la réparation des données comprend le déchiffrage et le chiffrage et nécessite ainsi la clé de chiffrement de données courante. Si aucune clé de chiffrement valide n'a déjà été fournie, une boite de dialogue s'affiche pour demander pour demander le mot de passe ou la clé de chiffrement (voir Page Chiffrement). +**Warning:** Each repair operation involves the duplication of the original file, which increases the size of the application folder. It is important to take this into account (especially in macOS where 4D applications appear as packages) so that the size of the application does not increase excessively. Manually removing the copies of the original file inside the package can be useful to minimize the package size. +> Repairing is only available in maintenance mode. If you attempt to carry out this operation in standard mode, a warning dialog will inform you that the application will be closed and restarted in maintenance mode. +> When the database is encrypted, repairing data includes decryption and encryption steps and thus, requires the current data encryption key. If no valid encryption key has already been provided, a dialog requesting the passphrase or the encryption key is displayed (see Encrypt page). -## Fichiers +## File overview -### Fichier de données à réparer -Chemin d’accès du fichier de données courant. Le bouton **[...]** permet de désigner un autre fichier de données. Lorsque vous cliquez sur ce bouton, une boîte de dialogue standard d’ouverture de documents s’affiche, vous permettant de désigner le fichier de données à réparer. Si vous effectuez une [réparation standard](#standard_repair), vous devez sélectionner un fichier de données compatible avec le fichier de structure ouvert. Si vous effectuez une réparation par [récupération des en-têtes d'enregistrements](#recover-by-record-headers), vous pouvez sélectionner tout fichier de données. Une fois cette boîte de dialogue validée, le chemin d’accès du fichier à réparer est indiqué dans la fenêtre. +### Data file to be repaired +Pathname of the current data file. The **[...]** button can be used to specify another data file. When you click on this button, a standard Open document dialog is displayed so that you can designate the data file to be repaired. If you perform a [standard repair](#standard_repair), you must select a data file that is compatible with the open project file. If you perform a [recover by record headers](#recover-by-record-headers) repair, you can select any data file. Once this dialog has been validated, the pathname of the file to be repaired is indicated in the window. -### Dossier de sauvegarde -Par défaut, le fichier de données original sera dupliqué avant réparation. It will be placed in a subfolder named “Replaced files (repairing)” in the application folder. Le second bouton **[...]** permet de désigner un autre emplacement pour les sauvegardes des fichiers originaux effectuées avant réparation. Cette option permet notamment de réparer des fichiers volumineux en utilisant différents disques. +### Original files backup folder +By default, the original data file will be duplicated before the repair operation. It will be placed in a subfolder named “Replaced files (repairing)” in the application folder. The second **[...]** button can be used to specify another location for the original files to be saved before repairing begins. This option can be used more particularly when repairing voluminous files while using different disks. -### Fichiers réparés -4D crée un nouveau fichier de données vide à l’emplacement du fichier d’origine. The original file is moved into the folder named "\Replaced Files (Repairing) date time" whose location is set in the "Original files backup folder" area (application folder by default). Le fichier vide est rempli avec les données récupérées. +### Repaired files +4D creates a new blank data file at the location of the original file. The original file is moved into the folder named "\Replaced Files (Repairing) date time" whose location is set in the "Original files backup folder" area (application folder by default). The blank file is filled with the recovered data. -## Réparation standard +## Standard repair -La réparation standard permet de réparer des données dans lesquelles seuls quelques enregistrements ou index sont endommagés (les tables d'adresses sont intactes). Les données sont compactées et réparées. A noter que ce type de réparation ne peut être effectué que si le fichier de données et le fichier de structure correspondent. +Standard repair should be chosen when only a few records or indexes are damaged (address tables are intact). The data is compacted and repaired. This type of repair can only be performed when the data and structure file match. -A l’issue de la procédure, la page "Réparation" du CSM est affichée. Un message indique si la réparation a été effectuée avec succès. If so, you can open the application immediately.  +When the repair procedure is finished, the "Repair" page of the MSC is displayed. A message indicates if the repair was successful. If so, you can open the application immediately.  -## Réparation par en-têtes d'enregistrements -Cette option de réparation de bas niveau est à utiliser uniquement dans le cas où le fichier de données a été fortement endommagé et une fois que toutes les autres solutions (restitution de sauvegarde, réparation standard) se sont avérées inefficaces. +## Recover by record headers +Use this low-level repair option only when the data file is severely damaged and after all other solutions (restoring from a backup, standard repair) have proven to be ineffective. -Les enregistrements de 4D sont de taille variable : il est donc nécessaire, pour les retrouver, de conserver dans une table spéciale l’endroit où ils sont stockés sur votre disque. Le programme accède donc à l’adresse de l’enregistrement par l’intermédiaire d’un index et d’une table d’adresses. Si seuls des enregistrements ou des index sont endommagés, l’option de réparation standard suffira généralement pour résoudre le problème. C’est lorsque la table d’adresses est touchée qu’il faudra en venir à une récupération plus sophistiquée, puisqu’il faut la reconstituer. Pour réaliser cette opération, le CSM utilise le marqueur qui se trouve en en-tête de chaque enregistrement. Les marqueurs peuvent être comparés à des résumés des enregistrements, comportant l’essentiel de leurs informations, et à partir desquels une reconstitution de la table d’adresses est possible. +4D records vary in size, so it is necessary to keep the location where they are stored on disk in a specific table, named address table, in order to find them again. The program therefore accesses the address of the record via an index and the address table. If only records or indexes are damaged, the standard repair option is usually sufficient to resolve the problem. However, when the address table itself is affected, it requires a more sophisticated recovery since it will be necessary to reconstitute it. To do this, the MSC uses the marker located in the header of each record. The markers are compared to a summary of the record, including the bulk of their information, and from which it is possible to reconstruct the address table. > If you have deselected the **Records definitively deleted** option in the properties of a table in the structure, performing a recovery by header markers may cause records that were previously deleted to reappear. > -> La récupération par en-têtes ne tient pas compte des éventuelles contraintes d’intégrité. En particulier, à l’issue de cette opération, vous pouvez obtenir des valeurs dupliquées avec des champs uniques ou des valeurs NULL avec des champs déclarés **non NULL**. +> Recovery by headers does not take integrity constraints into account. More specifically, after this operation you may get duplicated values with unique fields or NULL values with fields declared **Never Null**. -Lorsque vous cliquez sur le bouton **Réparer**, 4D effectue une analyse complète du fichier de données. A l’issue de cette analyse, le résultat est affiché dans la fenêtre suivante : +When you click on **Scan and repair...**, 4D performs a complete scan of the data file. When the scan is complete, the results appear in the following window: - -> Si tous les enregistrements et toutes les tables ont été attribués, seule la zone principale est affichée. + +> If all the records and all the tables have been assigned, only the main area is displayed. -La zone "Enregistrements trouvés dans le fichier de données" comporte deux tableaux synthétisant les informations issues de l’analyse du fichier de données. +The "Records found in the data file" area includes two tables summarizing the information from the scan of the data file. -- Le premier tableau liste les informations issues de l’analyse du fichier de données. Chaque ligne représente un groupe d’enregistrements récupérables dans le fichier de données : - - La colonne **Ordre** indique l’ordre de récupération des groupes d’enregistrements. - - La colonne **Nombre** indique le nombre d'enregistrements contenus dans la table. - - La colonne **Table de destination** indique le nom des tables ayant pu être automatiquement associées aux groupes d’enregistrements identifiés. Les noms des tables attribuées automatiquement sont affichés en caractères verts. Les groupes qui n'ont pas encore été attribués, c'est-à-dire, les tables qui n'ont pas pu être associées à des enregistrements sont affichées en caractères rouges. - - La colonne **Récupérer** permet vous permet d’indiquer pour chaque groupe si vous souhaitez récupérer les enregistrements. Par défaut, l’option est cochée pour tous les groupes avec les enregistrements qui peuvent être associés à une table. +- The first table lists the information from the data file scan. Each row shows a group of recoverable records in the data file: + - The **Order** column indicates the recovery order for the group of records. + - The **Count** column indicates the number of the records in the table. + - The **Destination table** column indicates the names of tables that were automatically assigned to the groups of identified records. The names of tables assigned automatically appear in green. Groups that were not assigned, i.e. tables that could not be associated with any records appear in red. + - The **Recover** column lets you indicate, for each group, whether you want to recover the records. By default, this option is checked for every group with records that can be associated with a table. -- Le deuxième tableau liste les tables du fichier de structure. +- The second table lists the tables of the project file. -### Attribution manuelle -Si, du fait de l’endommagement de la table d’adresses, un ou plusieurs groupes d’enregistrements n’ont pas pu être attribués à des tables, vous pouvez les attribuer manuellement. Pour attribuer une table à un groupe non identifié, sélectionnez le groupe dans le premier tableau. Lorsque vous sélectionnez des enregistrements non identifiés, la zone "Contenu des enregistrements" affiche une prévisualisation du contenu des premiers enregistrements du groupe afin de vous permettre de les attribuer plus facilement : +### Manual assigning +If several groups of records could not be assigned to tables due to a damaged address table, you can assign them manually. To do this, first select an unassigned group of records in the first table. The "Content of the records" area then displays a preview of the contents of the first records of the group to make it easier to assign them:  -Sélectionnez ensuite la table à attribuer dans le tableau des "Tables non attribuées" puis cliquez sur le bouton **Identifier table**. Vous pouvez également attribuer une table par glisser-déposer. Le groupe d’enregistrements est alors associé à la table, il sera récupéré dans cette table. Les noms des tables attribuées manuellement sont affichés en caractères noirs. Le bouton **Ignorer enregistrements** permet de supprimer l’association effectuée manuellement entre une table et un groupe d’enregistrements. +Next select the table you want to assign to the group in the "Unassigned tables" table and click on the **Identify table** button. You can also assign a table using drag and drop. The group of records is then associated with the table and it will be recovered in this table. The names of tables that are assigned manually appear in black. Use the **Ignore records** button to remove the association made manually between the table and the group of records. -## Voir le compte rendu +## Open log file -After repair is completed, 4D generates a log file in the Logs folder of the project. Ce fichier liste l’ensemble des opérations qui ont été menées. It is created in XML format and named: *ApplicationName**_Repair_Log_yyyy-mm-dd hh-mm-ss.xml*" where: +After repair is completed, 4D generates a log file in the Logs folder of the project. This file allows you to view all the operations carried out. It is created in XML format and named: *ApplicationName**_Repair_Log_yyyy-mm-dd hh-mm-ss.xml*" where: -- *ApplicationName* est le nom du fichier de structure sans extension, par exemple "Factures", -- *aaaa-mm-jj hh-mm-ss* est l'horodatage du fichier, basé sur la date et l'heure système locales au moment du lancement de l'opération de vérification, par exemple "2019-02-11 15-20-45". +- *ApplicationName* is the name of the project file without any extension, for example "Invoices", +- *yyyy-mm-dd hh-mm-ss* is the timestamp of the file, based upon the local system time when the maintenance operation was started, for example "2019-02-11 15-20-45". -Lorsque vous cliquez sur le bouton **Voir le compte rendu**, 4D affiche le fichier de compte-rendu le plus récent dans le navigateur par défaut de l’ordinateur. \ No newline at end of file +When you click on the **Open log file** button, 4D displays the most recent log file in the default browser of the machine. \ No newline at end of file From 03471a404853f7f28ea9a783814092266cf98c45 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:17:34 +0100 Subject: [PATCH 061/260] New translations restore.md (French) --- website/translated_docs/fr/MSC/restore.md | 80 +++++++++++------------ 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/website/translated_docs/fr/MSC/restore.md b/website/translated_docs/fr/MSC/restore.md index c75efb99c88449..4f6d4be7cc8b6a 100644 --- a/website/translated_docs/fr/MSC/restore.md +++ b/website/translated_docs/fr/MSC/restore.md @@ -1,10 +1,10 @@ --- id: restore -title: Page restitution -sidebar_label: Page restitution +title: Restore Page +sidebar_label: Restore Page --- -## Restauration d'une sauvegarde +## Restoring a backup You can manually restore an archive of the current application using the **Restore** page. This page provides several options that can be used to control the restoration: @@ -12,54 +12,54 @@ You can manually restore an archive of the current application using the **Resto > 4D automatic recovery systems restore applications and include data log file when necessary. -The list found in the left part of the window displays any existing backups of the application. You can also click on the **Browse...** button found just under the area in order to open any other archive file from a different location. Il est alors ajouté à la liste des archives. +The list found in the left part of the window displays any existing backups of the application. You can also click on the **Browse...** button found just under the area in order to open any other archive file from a different location. It is then added to the list of archives. -Lorsque vous sélectionnez une sauvegarde dans cette liste, la partie droite de la fenêtre affiche les informations relatives à cette sauvegarde : +When you select a backup in this list, the right part of the window displays the information concerning this particular backup: -- **Chemin d’accès** : chemin d’accès complet du fichier de sauvegarde sélectionné. Le bouton Montrer ouvre le dossier de sauvegarde dans une fenêtre système. -- **Date et heure** : date et heure de la sauvegarde. -- **Contenu** : contenu du fichier de sauvegarde. Chaque élément de la liste est associé à une case à cocher, permettant de spécifier si vous souhaitez ou non le restituer. Vous pouvez utiliser les boutons **Tout sélectionner** ou **Tout désélectionner** pour paramétrer la liste des éléments à restituer. -- **Emplacement des fichiers restitués** : dossier dans lequel seront placés les fichiers restitués. By default, 4D restores the files in a folder named “Archivename” (no extension) that is placed next to the Project folder. Pour modifier cet emplacement, cliquez sur le bouton **[...]** et désignez le dossier dans lequel vous souhaitez effectuer la restitution. +- **Path**: Complete pathname of the selected backup file. Clicking the Show button opens the backup file in a system window. +- **Date and Time**: Date and time of backup. +- **Content**: Contents of the backup file. Each item in the list has a check box next to it which can be used to indicate whether or not you want to restore it. You can also use the **Check All** or **Uncheck All** buttons to set the list of items to be restored. +- **Destination folder of the restored files**: Folder where the restored files will be placed. By default, 4D restores the files in a folder named “Archivename” (no extension) that is placed next to the Project folder. To change this location, click on **[...]** and specify the folder where you want the restored files to be placed. -Le bouton **Restituer** lance la restitution manuelle des éléments sélectionnés. +The **Restore** button launches the manual restoration of the selected element(s). -## Intégration successive de plusieurs fichiers d’historiques +## Successive integration of several data log files -The **Integrate one or more log file(s) after restore** option allows you to integrate several data log files successively into an application. If, for example, you have 4 journal file archives (.4BL) corresponding to 4 backups, you can restore the first backup then integrate the journal (data log) archives one by one. Ce principe permet par exemple de récupérer un fichier de données alors que les derniers fichiers de sauvegarde de la base sont manquants. +The **Integrate one or more log file(s) after restore** option allows you to integrate several data log files successively into an application. If, for example, you have 4 journal file archives (.4BL) corresponding to 4 backups, you can restore the first backup then integrate the journal (data log) archives one by one. This means that you can, for example, recover a data file even when the last backup files are missing. -Lorsque cette option est cochée, 4D affiche une boîte de dialogue standard d’ouverture de fichiers à l’issue de la restitution, vous permettant de sélectionner la sauvegarde d’historique à intégrer. La boîte de dialogue d’ouverture est affichée de nouveau après chaque intégration, jusqu’à ce qu’elle soit annulée. +When this option is checked, 4D displays the standard Open file dialog box after the restore, which can be used to select journal file to be integrated. The Open file dialog box is displayed again after each integration until it is cancelled. -## Restituer une base chiffrée +## Restoring an encrypted database -Keep in mind that the data encryption key (passphrase) may have been changed through several versions of backup files (.4BK), .journal files (.4BL) and the current application. Il est important que les clés de chiffrement soient toujours mises en correspondance. +Keep in mind that the data encryption key (passphrase) may have been changed through several versions of backup files (.4BK), .journal files (.4BL) and the current application. Matching encryption keys must always be provided. -Au moment de restituer une sauvegarde et d'intégrer le fichier d'historique courant dans une base chiffrée : +When restoring a backup and integrating the current log file in a encrypted database: -- Si vous restituez une sauvegarde à l'aide d'une ancienne phrase secrète, cette dernière sera demandée au prochain démarrage de la base. -- Après un chiffrement, à l'ouverture du fichier de données chiffrées, une sauvegarde est exécutée et un nouveau fichier journal est créé. Ainsi, il n'est pas possible de restituer un fichier chiffré .4BK avec une clé et d'intégrer les fichiers chiffrés .4BL avec une autre clé. +- If you restore a backup using an old passphrase, this passphrase will be required at the next database startup. +- After an encryption, when opening the encrypted data file, a backup is run and a new journal file is created. Thus, it is not possible to restore a .4BK file encrypted with one key and integrate .4BL files encrypted with another key. -La séquence suivante illustre les principes d'une opération de clé multiple de sauvegarde/restitution : +The following sequence illustrates the principles of a multi-key backup/restore operation: -| Opération | Fichiers générés | Commentaire | -| ---------------------------------------- | -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| New data file | | | -| Ajouter des données (enregistrement # 1) | | | -| Sauvegarder la base de données | 0000.4BL et 0001.4BK | | -| Ajouter des données (enregistrement # 2) | | | -| Sauvegarder la base de données | 0001.4BL et 0002.4BK | | -| Ajouter des données (enregistrement # 3) | | | -| Chiffrer un fichier de données avec clé1 | Fichier 0003.4BK (chiffré avec clé1) | Le chiffrement sauvegarde les fichiers originaux (y compris le fichier journal) dans le dossier "Replaced files (Encrypting) YYY-DD-MM HH-MM-SS". À l'ouverture du fichier de données chiffrées, un nouveau fichier journal est créé et une sauvegarde est effectuée pour activer ce fichier journal. | -| Ajouter des données (enregistrement # 4) | | | -| Sauvegarder la base de données | Fichiers 0003.4BL et 0004.4BK (chiffrés avec clé1) | Il est possible de restituer 0003.4BK et d'intégrer 0003.4BL | -| Ajouter des données (enregistrement # 5) | | | -| Sauvegarder la base de données | Fichiers 0004.4BL et 0005.4BK (chiffrés avec clé1) | Il est possible de restituer 0003.4BK et d'intégrer 0003.4BL + 0004.4BL. Il est possible de restituer 0004.4BK et d'intégrer 0004.4BL | -| Ajouter des données (enregistrement # 6) | | | -| Chiffrer un fichier de données avec clé2 | Fichier 0006.4BK (chiffré avec clé2) | Le chiffrement sauvegarde les fichiers originaux (y compris le fichier journal) dans le dossier "Replaced files (Encrypting) YYY-DD-MM HH-MM-SS". À l'ouverture du fichier de données chiffrées, un nouveau fichier journal est créé et une sauvegarde est effectuée pour activer ce fichier journal. | -| Ajouter des données (enregistrement # 7) | | | -| Sauvegarder la base de données | Fichiers 0006.4BL et 0007.4BK (chiffrés avec clé2) | Il est possible de restituer 0006.4BK et d'intégrer 0006.4BL | -| Ajouter des données (enregistrement # 8) | | | -| Sauvegarder la base de données | Fichiers 0007.4BL et 0008.4BK (chiffrés avec clé2) | Il est possible de restituer 0006.4BK et d'intégrer 0006.4BL + 0007.4BL. Il est possible de restituer 0007.4BK et d'intégrer 0007.4BL | -> Au moment de restituer une sauvegarde et d'intégrer un ou plusieurs fichiers .4BL, les fichiers restitués .4BK et .4BL doivent avoir la même clé de chiffrement. Durant le processus d'intégration, si aucune clé de chiffrement valide n'est trouvée dans le trousseau de 4D lors de l'intégration du fichier .4BL, une erreur est générée. +| Operation | Generated files | Comment | +| --------------------------- | ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| New data file | | | +| Add data (record # 1) | | | +| Backup database | 0000.4BL and 0001.4BK | | +| Add data (record # 2) | | | +| Backup database | 0001.4BL and 0002.4BK | | +| Add data (record # 3) | | | +| Encrypt data file with key1 | 0003.4BK file (encrypted with key1) | Encryption saves original files (including journal) in folder "Replaced files (Encrypting) YYY-DD-MM HH-MM-SS". When opening the encrypted data file, a new journal is created and a backup is made to activate this journal | +| Add data (record #4) | | | +| Backup database | 0003.4BL and 0004.4BK files (encrypted with key1) | We can restore 0003.4BK and integrate 0003.4BL | +| Add data (record # 5) | | | +| Backup database | 0004.4BL and 0005.4BK files (encrypted with key1) | We can restore 0003.4BK and integrate 0003.4BL + 0004.4BL. We can restore 0004.4BK and integrate 0004.4BL | +| Add data (record # 6) | | | +| Encrypt data file with key2 | 0006.4BK file (encrypted with key2) | Encryption saves original files (including journal) in folder "Replaced files (Encrypting) YYY-DD-MM HH-MM-SS". When opening the encrypted data file, a new journal is created and a backup is made to activate this journal | +| Add data (record # 7) | | | +| Backup database | 0006.4BL and 0007.4BK files (encrypted with key2) | We can restore 0006.4BK and integrate 0006.4BL | +| Add data (record # 8) | | | +| Backup database | 0007.4BL and 0008.4BK files (encrypted with key2) | We can restore 0006.4BK and integrate 0006.4BL + 0007.4BL. We can restore 0007.4BK and integrate 0007.4BL | +> When restoring a backup and integrating one or several .4BL files, the restored .4BK and .4BL files must have the same encryption key. During the integration process, if no valid encryption key is found in the 4D keychain when the .4BL file is integrated, an error is generated. > -> Si vous avez stocké plusieurs clés de données sur le même appareil externe, la restitution d'une sauvegarde et l'intégration de fichiers d'historique permettront de trouver automatiquement la clé correspondant à l'appareil connecté. +> If you have stored successive data keys on the same external device, restoring a backup and integrating log files will automatically find the matching key if the device is connected. From 51ea11400efe3badf11ff7df76a682af48d02fec Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:17:37 +0100 Subject: [PATCH 062/260] New translations rollback.md (French) --- website/translated_docs/fr/MSC/rollback.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/website/translated_docs/fr/MSC/rollback.md b/website/translated_docs/fr/MSC/rollback.md index ed2b64070281ac..ded1eb72f1edfa 100644 --- a/website/translated_docs/fr/MSC/rollback.md +++ b/website/translated_docs/fr/MSC/rollback.md @@ -1,25 +1,25 @@ --- id: rollback -title: Page Retour en arrière -sidebar_label: Page Retour en arrière +title: Rollback Page +sidebar_label: Rollback Page --- -La page Retour arrière du CSM permet d’accéder à la fonction de retour en arrière parmi les opérations effectuées dans le fichier de données. Elle s’apparente à une fonction d’annulation multi-niveaux. Elle est utile notamment lorsqu’un enregistrement a été supprimé par erreur dans la base de données. +You use the Rollback page to access the rollback function among the operations carried out on the data file. It resembles an undo function applied over several levels. It is particularly useful when a record has been deleted by mistake in a database. This function is only available when the application functions with a data log file.  -> Si la base de données est chiffrée et si aucune clé de données valide correspondant au fichier d'historique ouvert n'a été fournie, les valeurs chiffrées ne s'affichent pas dans la colonne **Valeurs** et un dialogue s'affiche, demandant la saisie d'une phrase secrète ou de la clé de données, si vous cliquez sur le bouton **Revenir en arrière**. +> If the database is encrypted and no valid data key corresponding to the open log file has been provided, encrypted values are not displayed in the **Values** column and a dialog requesting the passphrase or the data key is displayed if you click the **Rollback** button. -Le contenu et le fonctionnement de la liste des opérations sont identiques à ceux de la fenêtre [d’analyse d’activités](analysis.md). Pour plus d’informations, reportez-vous à la section Page Analyse d'activités. +The contents and functioning of the list of operations are the same as for the [Activity analysis](analysis.md) window. -Pour effectuer un retour en arrière parmi les opérations, vous devez sélectionner la ligne située après laquelle toutes les opérations doivent être annulées. L’opération de la ligne sélectionnée sera la dernière conservée. Si par exemple vous souhaitez annuler une suppression, sélectionnez l’opération située juste avant la suppression. L'opération de suppression et les opérations suivantes seront annulées. +To perform a rollback among the operations, select the row after which all operations must be cancelled. The operation of the selected row will be the last kept. If, for example, you wish to cancel a deletion, select the operation located just before it. The deletion operation, as well as all subsequent operations, will be cancelled.  -Cliquez ensuite sur le bouton **Revenir en arrière**. 4D vous demande de confirmer l’opération. Si vous cliquez sur **OK**, les données sont alors restituées dans l’état exact où elles se trouvaient au moment de l’action sélectionnée. +Next click on the **Rollback** button. 4D asks you to confirm the operation. If you click **OK**, the data is then restored to the exact state it was in at the moment of the selected action. -Le menu situé en bas de la fenêtre vous permet de sélectionner le fichier d’historique à utiliser lorsque vous appliquez la fonction de retour en arrière à une base restituée. Dans ce cas, vous devez désigner le fichier d’historique correspondant à l’archive. +You use the menu found at the bottom of the window to select a data log file to be used when you apply the rollback function to a database restored from an archive file. In this case, you must specify the data log file corresponding to the archive. -Le principe mis en oeuvre pour la fonction de retour arrière est le suivant : lorsque l’utilisateur clique sur le bouton **Revenir en arrière**, 4D referme la base de données courante et restitue la dernière sauvegarde des données de la base. La base restituée est ensuite ouverte et 4D intègre les opérations de l’historique jusqu’à l’opération sélectionnée. Si la base n’avait pas encore été sauvegardée, 4D repart d’un fichier de données vierge. \ No newline at end of file +Here is how the rollback function works: when the user clicks the **Rollback** button, 4D shuts the current database and restores the last backup of the database data. The restored database is then opened and 4D integrates the operations of the data log file up through to the selected operation. If the database has not yet been saved, 4D starts with a blank data file. \ No newline at end of file From 8fd71b5254f5f6c152bce9136915dbaa4d0f45de Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:17:39 +0100 Subject: [PATCH 063/260] New translations verify.md (French) --- website/translated_docs/fr/MSC/verify.md | 56 ++++++++++++------------ 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/website/translated_docs/fr/MSC/verify.md b/website/translated_docs/fr/MSC/verify.md index 2bf649b6051ca7..5cd0434a37019e 100644 --- a/website/translated_docs/fr/MSC/verify.md +++ b/website/translated_docs/fr/MSC/verify.md @@ -1,56 +1,56 @@ --- id: verify -title: Page Vérification -sidebar_label: Page Vérification +title: Verify Page +sidebar_label: Verify Page --- -Cette page permet de vérifier l’intégrité des données et de la structure. La vérification peut porter sur les enregistrements et/ou les index ainsi que sur les objets du développement (méthodes, formulaires...). La page effectue uniquement une vérification des objets. Si des erreurs sont trouvées et des réparations requises, il vous sera nécessaire d’utiliser la [Page Réparation](repair.md). +You use this page to verify data integrity. The verification can be carried out on records and/or indexes. This page only checks the data integrity. If errors are found and repairs are needed, you will be advised to use the [Repair page](repair.md). ## Actions -La page comporte quatre boutons d’action permettant un accès direct aux fonctions de vérification. -> Lorsque la base est chiffrée, la cohérence des données chiffrées est vérifiée. Si aucune clé de données valide n'a été fournie, une boîte de dialogue s'affiche pour vous demander de saisir une phrase secrète ou la clé des données. +The page contains action buttons that provide direct access to the verification functions. +> When the database is encrypted, verification includes validation of encrypted data consistency. If no valid data key has already been provided, a dialog requesting the passphrase or the data key is displayed. -- **Vérifier les enregistrements et les index :** lance la procédure de vérification globale des données. -- **Vérifier uniquement les enregistrements :** lance la procédure de vérification des enregistrements uniquement (les index ne sont pas vérifiés). -- **Vérifier uniquement les index :** lance la procédure de vérification des index uniquement (les enregistrements ne sont pas vérifiés). -> La vérification des enregistrements et des index peut également être effectuée en mode détaillé, table par table (cf. paragraphe “Détails” ci-dessous). +- **Verify the records and the indexes:** Starts the total data verification procedure. +- **Verify the records only**: Starts the verification procedure for records only (indexes are not verified). +- **Verify the indexes only**: Starts the verification procedure for indexes only (records are not verified). +> Verification of records and indexes can also be carried out in detail mode, table by table (see the Details section below). -## Voir le compte rendu +## Open log file -Regardless of the verification requested, 4D generates a log file in the `Logs` folder of the application. Ce fichier liste l’ensemble des vérifications effectuées et signale chaque erreur rencontrée, le cas échéant ([OK] est affiché lorsque la vérification est correcte). It is created in XML format and is named: *ApplicationName*_Verify_Log_*yyyy-mm-dd hh-mm-ss*.xml where: +Regardless of the verification requested, 4D generates a log file in the `Logs` folder of the application. This file lists all the verifications carried out and indicates any errors encountered, when applicable ([OK] is displayed when the verification is correct). It is created in XML format and is named: *ApplicationName*_Verify_Log_*yyyy-mm-dd hh-mm-ss*.xml where: -- *ApplicationName* est le nom du fichier de structure sans extension, par exemple "Factures", -- *aaaa-mm-jj hh-mm-ss* est l'horodatage du fichier, basé sur la date et l'heure système locales au moment du lancement de l'opération de vérification, par exemple "2019-02-11 15-20-45". +- *ApplicationName* is the name of the project file without any extension, for example "Invoices", +- *yyyy-mm-dd hh-mm-ss* is the timestamp of the file, based upon the local system time when the maintenance operation was started, for example "2019-02-11 15-20-45". -Lorsque vous cliquez sur le bouton **Voir le compte rendu**, 4D affiche le fichier de compte-rendu le plus récent dans le navigateur par défaut de l’ordinateur. +When you click on the **Open log file** button, 4D displays the most recent log file in the default browser of the machine. -## Détails +## Details -Le bouton **Liste des tables** provoque l’affichage d’une page détaillée permettant de visualiser et de sélectionner les enregistrements et les index à vérifier : +The **Table list** button displays a detailed page that can be used to view and select the actual records and indexes to be checked:  -La désignation des éléments à vérifier permet notamment de gagner du temps lors de la vérification. +Specifying the items to be verified lets you save time during the verification procedure. -La liste principale affiche toutes les tables de la base. Pour chaque table, vous pouvez limiter la vérification aux enregistrements et/ou à chaque index. Cliquez sur l’icône en forme de triangle pour déployer le contenu d’une table ou les index d’un champ et sélectionnez/ désélectionnez les cases à cocher en fonction de vos souhaits. Par défaut, tout est sélectionné. Vous pouvez également utiliser les boutons raccourcis **Tout sélectionner**, **Tout désélectionner**, **Tous les enregistrements** et **Tous les index**. +The main list displays all the tables of the database. For each table, you can limit the verification to the records and/or indexes. Expand the contents of a table or the indexed fields and select/deselect the checkboxes as desired. By default, everything is selected. You can also use the **Select all**, **Deselect all**, **All records** and **All indexes** shortcut buttons. -Pour chaque ligne de table, la colonne “Action” résume les opérations à effectuer. Lorsque la table est déployée, les lignes “Enregistrements” et “Champs indexés” indiquent le nombre d’éléments concernés. +For each row of the table, the "Action" column indicates the operations to be carried out. When the table is expanded, the "Records" and "Indexed fields" rows indicate the number of items concerned. -La colonne "Etat" affiche le statut de la vérification de chaque élément à l’aide de symboles : +The "Status" column displays the verification status of each item using symbols: -|  | Vérification effectuée, pas de problème | -| ------------------------------ | -------------------------------------------- | -|  | Vérification effectuée, problèmes rencontrés | -|  | Vérification partielle effectuée | -|  | Vérification non effectuée | +|  | Verification carried out with no problem | +| ------------------------------ | ---------------------------------------------- | +|  | Verification carried out, problems encountered | +|  | Verification partially carried out | +|  | Verification not carried out | -Cliquez sur le bouton **Vérifier** pour lancer la vérification ou sur le bouton **Standard** pour retourner à la page standard. +Click on **Verify** to begin the verification or on **Standard** to go back to the standard page. -Le bouton **Voir le compte rendu** permet d’afficher le fichier de compte-rendu dans le navigateur par défaut de l’ordinateur (cf. paragraphe [Voir le compte rendu](#open-log-file) ci-dessus). -> La page standard ne tient pas compte des modifications effectuées dans la page détaillée : lorsque vous cliquez sur un bouton de vérification dans la page standard, tous les éléments sont vérifiés. En revanche, les paramétrages effectués dans la page détaillée sont conservés d’une session à l’autre. +The **Open log file** button can be used to display the log file in the default browser of the machine (see [Open log file](#open-log-file) above). +> The standard page will not take any modifications made on the detailed page into account: when you click on a verification button on the standard page, all the items are verified. On the other hand, the settings made on the detailed page are kept from one session to another. From 7473c154be5460f66f6468a0f1ae6605782a03ed Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:17:41 +0100 Subject: [PATCH 064/260] New translations bars.md (French) --- website/translated_docs/fr/Menus/bars.md | 34 ++++++++++++------------ 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/website/translated_docs/fr/Menus/bars.md b/website/translated_docs/fr/Menus/bars.md index 4580550b0f2dc6..fcfcc4c0d99d5d 100644 --- a/website/translated_docs/fr/Menus/bars.md +++ b/website/translated_docs/fr/Menus/bars.md @@ -1,43 +1,43 @@ --- id: bars -title: Barres de menus +title: Menu bar features --- -Les barres de menu fournissent la principale interface des applications personnalisées. Pour chaque application personnalisée, vous devez créer au moins une barre de menu avec au moins un menu. Par défaut, Menu Bar #1 est la barre de menu qui est affichée dans l'application. Vous pouvez modifier la barre de menu affichée à l'aide de la commande `SET MENU BAR`. +Menu bars provide the major interface for custom applications. For each custom application, you must create at least one menu bar with at least one menu. By default, Menu Bar #1 is the menu bar displayed in the Application environment. You can change which menu bar is displayed using the `SET MENU BAR` command. -4D vous permet d’associer une image d’accueil personnalisée à chaque barre de menus et de prévisualiser une barre à tout moment. +4D lets you associate a custom splash screen picture with each menu bar and to preview this menu bar at any time. -## Image d'accueil +## Splash screen -Vous pouvez enrichir l’apparence de chaque barre de menus en lui associant une image d’accueil personnalisée. La fenêtre contenant l’image d’accueil est affichée en-dessous de la barre de menus lorsqu’elle apparaît. Elle peut contenir un logo ou tout type d’image. Par défaut, 4D affiche un logo comme image dans la fenêtre d’accueil : +You can enhance the appearance of each menu bar by associating a custom splash screen with it. The window containing the splash screen is displayed below the menu bar when it appears. It can contain a logo or any type of picture. By default, 4D displays the 4D logo in the splash screen: - + -Une image d’accueil personnalisée peut provenir de toute application graphique. 4D vous permet de coller une image du presse-papiers, d’utiliser une image de la bibliothèque ou toute image présente sur votre disque dur. Tous les formats d’image standard pris en charge par 4D sont utilisables. +A custom splash screen picture can come from any graphic application. 4D lets you paste a clipboard picture or use any picture present on your hard disk. Any standard picture format supported by 4D can be used. -L'image d'accueil peut être uniquement paramétrée dans l'éditeur de menus : sélectionnez la barre de menus à laquelle vous souhaitez associer une image d’accueil personnalisée. Notez la zone "Image de fond" à droite de la fenêtre. Pour ouvrir directement une image stockée sur votre disque, cliquez sur le bouton **Ouvrir** ou cliquez dans la zone “Image de fond”. Un pop up menu apparaît : -- Pour coller une image se trouvant dans le Presse-papiers, choisissez la commande **Coller**. -- Pour ouvrir une image stockée dans un fichier disque, choisissez la commande **Ouvrir**. Si vous avez choisi la commande Ouvrir, une boîte de dialogue standard d’ouverture de fichiers apparaît, vous permettant de sélectionner le fichier image à utiliser. Une fois définie, l’image s’affiche en taille réduite dans la zone. Elle est alors associée à la barre de menus. +The splash screen picture can be set only in the Menu editor: select the menu bar with which you want to associate the custom splash screen. Note the "Background Image" area in the right-hand part of the window. To open a picture stored on your disk directly, click on the **Open** button or click in the "Background Image" area. A pop-up menu appears: +- To paste a picture from the clipboard, choose **Paste**. +- To open a picture stored in a disk file, choose **Open**. If you choose Open, a standard Open file dialog box will appear so that you can select the picture file to be used. Once set, the picture is displayed in miniature in the area. It is then associated with the menu bar.  -Vous pouvez visualiser le résultat final en testant la barre de menus (cf. paragraphe suivant). En mode Application, l’image est affichée dans la fenêtre d’accueil avec un format du type “tronqué centré”. +You can view the final result by testing the menu bar (see the following section). In Application mode, the picture is displayed in the splash screen with the "Truncated (Centered)" type format. > You can choose whether to display or hide this window using the **Display toolbar** option in the Settings. -Pour supprimer l’image personnalisée et afficher l’image par défaut, cliquez sur le bouton **Effacer** ou cliquez dans la zone “Image de fond” et choisissez la commande **Effacer** dans le pop up menu. +To remove the custom picture and display the default one instead, click on the **Clear** button or select **Clear** in the area pop-up menu. -## Prévisualiser la barre de menus +## Previewing menu bars -L’éditeur de menus vous permet de visualiser à tout moment les menus personnalisés et la fenêtre d’accueil sans quitter la fenêtre de la boîte à outils. +The Menu Bar editor lets you view the custom menus and splash screen at any time, without closing the toolbox window. -Pour cela, il vous suffit de sélectionner la barre de menus et de choisir la commande **Tester la barre de menus “Barre n°N”** dans le menu contextuel ou le menu d’options de l’éditeur. +To do so, simply select the menu bar and choose **Test the menu bar "Menu Bar #X"** in the context menu or the options menu of the editor. - + -4D affiche un aperçu de la barre de menus ainsi que de l’écran d’accueil. Vous pouvez dérouler les menus et les sous-menus pour prévisualiser leur contenu. En revanche, les menus ne sont pas actifs. Pour pouvoir tester le fonctionnement des menus et la barre d’outils, vous devez utiliser la commande **Tester l’application** dans le menu **Exécution**. +4D displays a preview of the menu bar as well as the splash screen. You can scroll down the menus and sub-menus to preview their contents. However, these menus are not active. To test the functioning of menus and the toolbar, you must use the **Test Application** command from the **Run** menu. From 996bd5d2a6db7154f50b68dd9fa64be75d3b0ad7 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:17:44 +0100 Subject: [PATCH 065/260] New translations creating.md (French) --- website/translated_docs/fr/Menus/creating.md | 110 +++++++++---------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/website/translated_docs/fr/Menus/creating.md b/website/translated_docs/fr/Menus/creating.md index 475d5014f3d955..a6d7779decc98e 100644 --- a/website/translated_docs/fr/Menus/creating.md +++ b/website/translated_docs/fr/Menus/creating.md @@ -1,105 +1,105 @@ --- id: creating -title: Créer des menus et des barres de menus +title: Creating menus and menu bars --- -Les barres de menus peuvent être définies : +You can create menus and menu bars: -- dans l'éditeur de menus de la fenêtre de Boîte à outils 4D. Dans ce cas, les menus et barres de menus sont stockés dans la structure de l'application. -- dynamiquement, à l'aide des commandes du langage depuis le thème "Menus". Dans ce cas, les menus et barres de menus ne sont pas stockés, ils existent uniquement dans la mémoire. +- using the Menus editor of the 4D Toolbox window. In this case, menus and menu bars are stored in the application's structure. +- dynamically, using the language commands from the "Menus" theme. In this case, menus and menu bars are not stored, they only exist in memory. -Vous pouvez combiner les deux fonctionnalités et utiliser les menus créés dans la structure comme templates pour définir des menus dans la mémoire. +You can combine both features and use menus created in structure as templates to define menus in memory. -## Barre de menu par défaut +## Default menu bar -Une application personnalisée doit contenir au moins une barre de menu avec un menu. By default, when you create a new project, 4D automatically creates a default menu bar (Menu Bar #1) so that you can access the Application environment. La barre de menus par défaut (Barre n°1) comporte des menus standard et une commande de retour au mode Développement. +A custom application must contain at least one menu bar with one menu. By default, when you create a new project, 4D automatically creates a default menu bar (Menu Bar #1) so that you can access the Application environment. The default menu bar includes standard menus and a command for returning to the Design mode. -This allows the user to access the Application environment as soon as the project is created. La barre de menus n°1 est automatiquement appelée lorsque la commande **Tester l’application** est sélectionnée dans le menu **Exécution**. +This allows the user to access the Application environment as soon as the project is created. Menu Bar #1 is called automatically when the **Test Application** command is chosen in the **Run** menu. -La barre de menus par défaut contient trois menus : Fichier, Edition et Mode. +The default menu bar includes three menus: -- **Fichier** : ce menu comporte uniquement la commande **Quitter**. L’action automatique *Quitter* est associée à la commande, ce qui a pour effet de provoquer la fermeture de l’application. -- **Edition** : menu standard et entièrement modifiable. Editing functions such as copy, paste, etc. are defined using standard actions. -- **Mode** : par défaut, ce menu contient la commande **Retour au mode Développement**, permettant de sortir du mode Application. -> Les libellés apparaissent *en caractères italiques* car il s’agit de références et non de textes en dur. Pour plus d’informations sur ce point, reportez-vous à la section [Utiliser des références dans les titres de menus](properties.md#title). +- **File**: only includes the **Quit** command. The *Quit* standard action is associated with the command, which causes the application to quit. +- **Edit**: standard and completely modifiable. Editing functions such as copy, paste, etc. are defined using standard actions. +- **Mode**: contains, by default, the **Return to Design mode** command, which is used to exit the Application mode. +> Menu items appear *in italics* because they consist of references and not hard-coded text. Refer to [Title property](properties.md#title). -Vous pouvez modifier cette barre de menus comme vous le souhaitez ou créer des barres de menus supplémentaires. +You can modify this menu bar as desired or create additional ones. -## Créer des menus +## Creating menus -### A l'aide de l'éditeur de menus +### Using the Menu editor -1. Sélectionnez la ligne de menu que vous souhaitez créer et cliquez sur le bouton d'ajout  sous la zone de liste des barres de menu. OU Choisissez la commande **Créer une nouvelle barre de menus** ou **Créer un nouveau menu** dans le menu contextuel de la liste ou dans le menu d’options situé sous la liste. Si vous avez créé une barre de menu, une nouvelle barre de menus apparaît dans la liste, contenant les menus par défaut (Fichier et Edition). -2. (Facultatif) Effectuez un double-clic sur le nom du menu/de la barre de menus afin de le rendre éditable et saisissez un nom personnalisé. OU Saisissez le nom personnalisé dans la zone “Titre”. Les noms des barres de menu doivent être uniques. Ils peuvent comporter jusqu’à 31 caractères. You can enter the name as "hard coded" or enter a reference (see [information about the Title property](properties.md#title)). +1. Select the item you want to create and click the add  button below the menu bar area. OR Choose **Create a new menu bar** or **Create a new menu** from the context menu of the list or the options menu below the list. If you created a menu bar, a new bar appears in the list containing the default menus (File and Edit). +2. (optional) Double-click on the name of the menu bar/menu to switch it to editing mode and enter a custom name. OR Enter the custom name in the "Title" area. Menu bar names must be unique. They may contain up to 31 characters. You can enter the name as "hard coded" or enter a reference (see [information about the Title property](properties.md#title)). -### A l'aide du langage 4D -Utilisez la commande de `Create menu` pour créer une nouvelle barre de menu ou une référence de menu (*MenuRef*) en mémoire. +### Using the 4D language +Use the `Create menu` command to create a new menu bar or menu reference (*MenuRef*) in memory. -Lorsque les menus sont gérés par des références *MenuRef*, il n'y a pas de différence en soi entre un menu et une barre de menus. Dans les deux cas, il s'agit d'une liste d'éléments. Seul leur utilisation diffère. Dans le cas d'une barre de menus, chaque élément correspond à un menu lui-même composé d'éléments. +When menus are handled by means of *MenuRef* references, there is no difference per se between a menu and a menu bar. In both cases, it consists of a list of items. Only their use differs. In the case of a menu bar, each item corresponds to a menu which is itself composed of items. -`Créer un menu` permet de créer des menus vides (à remplir à l'aide de l'option `APPEND MENU ITEM` ou `INSERT MENU ITEM`) ou des menus créés à partir de menus conçus dans l'éditeur de menus. +`Create menu` can create empty menus (to fill using `APPEND MENU ITEM` or `INSERT MENU ITEM`) or by menus built upon menus designed in the Menu editor. -## Ajouter des lignes -Pour chacun des menus, vous devez ajouter les commandes qui apparaissent lorsque le menu est déroulé. Vous pouvez insérer des lignes qui seront associées à des méthodes ou à des actions standard, ou rattacher d’autres menus (sous-menus). +## Adding items +For each of the menus, you must add the commands that appear when the menu drops down. You can insert items that will be associated with methods or standard actions, or attach other menus (submenus). -### A l'aide de l'éditeur de menus -Pour ajouter une ligne de menu : +### Using the Menu editor +To add a menu item: -1. Dans la liste des menus source, sélectionnez le menu auquel vous souhaitez ajouter une commande. Si le menu contient déjà des commandes, elles seront affichées dans la liste centrale. Si vous souhaitez insérer la nouvelle commande, sélectionnez celle que vous souhaitez voir apparaître ci-dessus. Il est toujours possible de réorganiser le menu ultérieurement par glisser-déposer. -2. Choisissez **Add an item to menu “MenuName”** dans le menu d'options de l'éditeur ou depuis le menu contextuel (clic droit dans la liste centrale). OU Cliquez sur le bouton Ajouter  situé sous la liste centrale. 4D ajoute une nouvelle ligne avec le nom par défaut “Ligne X”, où X représente le nombre de lignes déjà créées. -3. Double-cliquez sur le nom de la commande pour passer en mode édition et saisissez un nom personnalisé. OU Saisissez le nom personnalisé dans la zone “Titre”. Il peut comporter jusqu’à 31 caractères. Vous pouvez saisir le nom comme "en dur" ou saisir une référence (voir ci-dessous). +1. In the list of source menus, select the menu to which you want to add a command. If the menu already has commands, they will be displayed in the central list. If you want to insert the new command, select the command that you want it to appear above. It is still be possible to reorder the menu subsequently using drag and drop. +2. Choose **Add an item to menu “MenuName”** in the options menu of the editor or from the context menu (right click in the central list). OR Click on the add  button located below the central list. 4D adds a new item with the default name “Item X” where X is the number of items already created. +3. Double-click on the name of the command in order to switch it to editing mode and enter a custom name. OR Enter the custom name in the "Title" area. It may contain up to 31 characters. You can enter the name as "hard coded" or enter a reference (see below). -### A l'aide du langage 4D +### Using the 4D language -Utilisez `INSERT MENU ITEM` ou `APPEND MENU ITEM` pour insérer ou ajouter des lignes de menu dans les références de menu existantes. +Use `INSERT MENU ITEM` or `APPEND MENU ITEM` to insert or to add menu items in existing menu references. -## Supprimer des menus et des lignes de menus +## Deleting menus and items -### A l'aide de l'éditeur de menus -Vous pouvez supprimer une barre de menus, un menu ou une ligne de menu à tout moment. A noter qu’il n’existe qu’une seule référence d’un menu ou barre de menus. Lorsqu’un menu est rattaché à différentes barres ou différents menus, toute modification ou suppression effectuée dans ce menu est immédiatement reportée dans toutes les instances de ce menu. Supprimer un menu supprimera uniquement une référence. Lorsque vous supprimez la dernière référence d'un menu, 4D affiche une alerte. +### Using the Menu editor +You can delete a menu bar, a menu or a menu item in the Menu editor at any time. Note that each menu or menu bar has only one reference. When a menu is attached to different bars or different menus, any modification or deletion made to the menu is immediately carried out in all other occurrences of this menu. Deleting a menu will only delete a reference. When you delete the last reference of a menu, 4D displays an alert. -Pour supprimer une barre de menus, un menu ou une ligne de menu, vous disposez de deux possibilités : +To delete a menu bar, menu or menu item: -- Sélectionner l’élément à supprimer et de cliquer sur le bouton de suppression  situé sous la liste. -- ou, utiliser la commande **Supprimer ...** dans le menu contextuel ou le menu d’options de l’éditeur. +- Select the item to be deleted and click on the delete  button located beneath the list. +- or, use the appropriate **Delete...** command from the context menu or the options menu of the editor. -> Il est impossible de supprimer Menu Bar #1. +> It is not possible to delete Menu Bar #1. -### A l'aide du langage 4D +### Using the 4D language -Utilisez la commandes `SUPPRIMER LIGNE DE MENU` pour supprimer une ligne de la barre de menus. Utilisez la commande `EFFACER MENU` pour ne pas charger le menu de la mémoire. +Use `DELETE MENU ITEM` to remove an item from a menu reference. Use `RELEASE MENU` to unload the menu reference from the memory. -## Rattacher des menus +## Attaching menus -Une fois que vous avez créé un menu, vous pouvez le rattacher à une ou plusieurs barres de menus ou à un ou plusieurs autres menus (sous-menus). +Once you have created a menu, you can attach it to one or several other menus (sub-menu) or menu bar(s). -Les sous-menus permettent de regrouper des fonctions thématiques à l’intérieur d’un même menu. Les sous-menus et leurs lignes peuvent disposer des mêmes attributs que les menus (actions, méthodes, raccourcis, icônes, etc.). Les lignes du sous-menu conservent leurs caractéristiques et leurs propriétés, le fonctionnement du sous-menu est identique à celui d’un menu standard. +Sub-menus can be used to group together functions organized according to subject within the same menu. Sub-menus and their items can have the same attributes as the menus themselves (actions, methods, shortcuts, icons, and so on). The items of the sub-menu keep their original characteristics and properties and the functioning of the sub-menu is identical to that of a standard menu. -Vous pouvez créer des sous-menus de sous-menus sur une profondeur virtuellement illimitée. A noter toutefois que pour des raisons d’ergonomie d’interface, il n’est généralement pas conseillé de dépasser deux niveaux de sous-menus. +You can create sub-menus of sub-menus to a virtually unlimited depth. Note, however, that for reasons concerning interface ergonomics, it is generally not recommended to go beyond two levels of sub-menus. -A l'exécution, si un menu rattaché est modifié par programmation, toute autre élément du menu reflétera ces modifications. +At runtime, if an attached menu is modified by programming, every other instance of the menu will reflect these changes. -### A l'aide de l'éditeur de menus +### Using the Menu editor -Un menu peut être attaché à une barre de menus ou à un autre menu. +A menu can be attached to a menu bar or to another menu. -- Pour rattacher un menu à une barre de menus : faites un clic droit sur la barre de menus et sélectionnez **Attach a menu to the menu bar "nom de la barre"**, puis choisissez le menu à rattacher à la barre de menus :  Vous pouvez également sélectionner une barre de menus puis cliquez sur le bouton des options situé sous la liste. -- Pour rattacher un menu à un autre menu : sélectionnez le menu dans la partie gauche puis faites un clic droit sur la ligne de menus et sélectionnez **Attach a menu to the menu bar "nom de la barre"**, puis choisissez le menu à utiliser comme sous-menu : -  Vous pouvez également sélectionner une ligne de menus puis cliquez sur le bouton des options situé sous la liste. Le menu que vous êtes en train de rattacher deviendra un sous-menu. Le titre de la ligne est maintenu (le nom initial du sous-menu est ignoré), mais il peut être modifié. +- To attach a menu to a menu bar: right-click on the menu bar and select **Attach a menu to the menu bar "bar name" >**, then choose the menu to be attached to the menu bar:  You can also select a menu bar then click on the options button found below the list. +- To attach a menu to another menu: select the menu in the left-hand area, then right-click on the menu item and select **Attach a sub-menu to the item "item name">**, then choose the menu you want to use as sub-menu: +  You can also select a menu item then click on the options button found below the list. The menu being attached thus becomes a sub-menu. The title of the item is kept (the original sub-menu name is ignored), but this title can be modified. -#### Détacher des menus +#### Detaching menus -Vous pouvez à tout moment détacher un menu d’une barre ou un sous-menu d’un menu. Le menu détaché n’est alors plus disponible dans la barre ou le sous-menu, mais reste présent dans la liste des menus. +You can detach a menu from a menu bar or a sub-menu from a menu at any time. The detached menu is then no longer available in the menu bar or sub-menu as the case may be, but it is still present in the list of menus. -Pour détacher un menu, cliquez avec le bouton droit dans la liste centrale sur le menu ou le sous-menu à détacher puis choisissez la commande **Détacher le menu “nom menu” de la barre “nom barre”** ou **Détacher le sous-menu de la ligne “nom ligne”** +To detach a menu, right-click with the right button on the menu or sub-menu that you want to detach in the central list, then choose the **Detach the menu(...)** or **Detach the sub-menu(...)** -### A l'aide du langage 4D +### Using the 4D language -Etant donné qu'il n'y a pas de différence entre les menus et les barres de menus dans le langage de 4D, rattacher des menus ou des sous-menus se fait de la même manière : utilisez le paramètre *sous-menu* de la commande `APPEND MENU ITEM` pour rattacher un menu à une barre de menu ou à un autre menu. +Since there is no difference between menus and menu bars in the 4D language, attaching menus or sub-menus is done in the same manner: use the *subMenu* parameter of the `APPEND MENU ITEM` command to attach a menu to a menu bar or an menu. From bd183a86081087cfa2aa985f1291e9d4fd705282 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:17:46 +0100 Subject: [PATCH 066/260] New translations configuration.md (French) --- .../translated_docs/fr/REST/configuration.md | 71 ++++++++++--------- 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/website/translated_docs/fr/REST/configuration.md b/website/translated_docs/fr/REST/configuration.md index 52638caa8a1a85..e3c8d7dfdeb7fd 100644 --- a/website/translated_docs/fr/REST/configuration.md +++ b/website/translated_docs/fr/REST/configuration.md @@ -1,89 +1,90 @@ --- id: configuration -title: Configuration du serveur +title: Server Configuration --- Using standard HTTP requests, the 4D REST Server allows external applications to access the data of your application directly, *i.e.* to retrieve information about the dataclasses in your project, manipulate data, log into your web application, and much more. -Pour commencer à utiliser les fonctionnalités REST, vous devez démarrer et configurer le serveur 4D REST. +To start using the REST features, you need to start and configure the 4D REST server. -> - Sur 4D Server, l'ouverture d'une session REST nécessite une licence client 4D gratuite disponible.
-> - Sur 4D monoposte, vous pouvez ouvrir jusqu'à trois sessions REST à des fins de test. Vous devez gérer le [cookie de session](authUsers.md#session-cookie) pour utiliser la même session pour votre application. +> - On 4D Server, opening a REST session requires that a free 4D client licence is available.
+> - On 4D single-user, you can open up to three REST sessions for testing purposes. +> You need to manage the [session cookie](authUsers.md#session-cookie) to use the same session for your requesting application. -## Démarrage du serveur REST +## Starting the REST Server -Pour des raisons de sécurité, par défaut, 4D ne répond pas aux requêtes REST. If you want to start the REST Server, you must check the **Expose as REST server** option in the "Web/REST resource" page of the structure settings in order for REST requests to be processed. +For security reasons, by default, 4D does not respond to REST requests. If you want to start the REST Server, you must check the **Expose as REST server** option in the "Web/REST resource" page of the structure settings in order for REST requests to be processed.  -> Les services REST utilisent le serveur HTTP 4D; vous devez donc vous assurer que le serveur Web 4D est lancé. +> REST services use the 4D HTTP server, so you need to make sure that the 4D Web server is started. -Le message d'avertissement "Attention, vérifiez les privilèges d'accès" s'affiche lorsque vous cochez cette option, pour attirer votre attention sur le fait que lorsque les services REST sont activés, l'accès par défaut aux objets de base de données est gratuit tant que les accès REST n'ont pas été configurés. +The warning message "Caution, check the access privileges" is displayed when you check this option to draw your attention to the fact that when REST services are activated, by default access to database objects is free as long as the REST accesses have not been configured. -## Configuration de l'accès REST +## Configuring REST access -Par défaut, les accès REST sont ouverts à tous les utilisateurs, ce qui n'est évidemment pas recommandé pour des raisons de sécurité et de contrôle de l'utilisation des licences clientes. +By default, REST accesses are open to all users which is obviously not recommended for security reasons, and also to control client licenses usage. -Vous pouvez configurer les accès REST de l'une des manières suivantes : +You can configuring REST accesses with one of the following means: - assigning a **Read/Write** user group to REST services in the "Web/REST resource" page of the Structure Settings; -- saisir d'une méthode base `On REST Authentication`pour intercepter et gérer chaque demande REST initiale. +- writing an `On REST Authentication` database method to intercept and handle every initial REST request. -> Vous ne pouvez pas utiliser les deux fonctionnalités simultanément. Once an `On REST Authentication` database method has been defined, 4D fully delegates control of REST requests to it: any setting made using the "Read/Write" menu on the Web/REST resource page of the Structure Settings is ignored. +> You cannot use both features simultaneously. Once an `On REST Authentication` database method has been defined, 4D fully delegates control of REST requests to it: any setting made using the "Read/Write" menu on the Web/REST resource page of the Structure Settings is ignored. ### Using the Structure Settings The **Read/Write** menu in the "Web/REST resource" page of the structure settings specifies a group of 4D users that is authorized to establish the link to the 4D application using REST queries. -By default, the menu displays **\**, which means that REST accesses are open to all users. Une fois que vous avez spécifié un groupe, seul un compte utilisateur 4D appartenant à ce groupe peut être utilisé pour [accéder à 4D via une requête REST](authUsers.md). Si un compte utilisé n'appartient pas à ce groupe, 4D renvoie une erreur d'authentification à l'expéditeur de la requête. +By default, the menu displays **\ **, which means that REST accesses are open to all users. Once you have specified a group, only a 4D user account that belongs to this group may be used to [access 4D by means of a REST request](authUsers.md). If an account is used that does not belong to this group, 4D returns an authentication error to the sender of the request. -> Pour que ce paramètre prenne effet, la méthode base `On REST Authentication` ne doit pas être définie. If it exists, 4D ignores access settings defined in the Structure Settings. +> In order for this setting to take effect, the `On REST Authentication` database method must not be defined. If it exists, 4D ignores access settings defined in the Structure Settings. -### Méthode base On REST Authentication -La méthode base `On REST Authentication` vous permet de contrôler de manière personnalisée l’ouverture des sessions REST sur 4D. Cette méthode base est automatiquement appelée lorsqu'une nouvelle session est ouverte à l'aide d'une requête REST. Lorsqu'une [requête d’ouverture de session REST](authUsers.md) est reçue, les identifiants de connexion sont fournis dans l’en-tête de la requête. La méthode base `On REST Authentication` est appelée afin de vous permettre d’évaluer ces identifiants. You can use the list of users for the 4D application or you can use your own table of identifiers. Pour obtenir plus d'informations, veuillez vous reporter à la [documentation](https://doc.4d.com/4Dv18/4D/18/On-REST-Authentication-database-method.301-4505004.fe.html) de la méthode base `On REST Authentication`. +### Using the On REST Authentication database method +The `On REST Authentication` database method provides you with a custom way of controlling the opening of REST sessions on 4D. This database method is automatically called when a new session is opened through a REST request. When a [request to open a REST session](authUsers.md) is received, the connection identifiers are provided in the header of the request. The `On REST Authentication` database method is called so that you can evaluate these identifiers. You can use the list of users for the 4D application or you can use your own table of identifiers. For more information, refer to the `On REST Authentication` database method [documentation](https://doc.4d.com/4Dv18/4D/18/On-REST-Authentication-database-method.301-4505004.en.html). -## Exposer les tables et les champs +## Exposing tables and fields -Once REST services are enabled in the 4D application, by default a REST session can access all tables and fields of the 4D database through the [datastore interface](ORDA/dsMapping.md#datastore). Thus, it can use their data. Par exemple, si votre base de données contient une table [Employee], il est possible d'écrire : +Once REST services are enabled in the 4D application, by default a REST session can access all tables and fields of the 4D database through the [datastore interface](ORDA/dsMapping.md#datastore). Thus, it can use their data. For example, if your database contains an [Employee] table, it is possible to write: ``` http://127.0.0.1:8044/rest/Employee/?$filter="salary>10000" ``` -Cette requête retournera tous les employés dont le champ "salary" est supérieur à 10 000. +This request will return all employees whose salary field is higher than 10000. -> Les tables et/ou champs 4D dont l'attribut est "invisible" sont également exposés par défaut dans REST. +> 4D tables and/or fields that have the "Invisible" attribute are also exposed in REST by default. -Si vous souhaitez personnaliser les objets du datastore accessibles via REST, vous devez désactiver l'exposition de chaque table et/ou champ que vous souhaitez masquer. Lorsqu'une requête REST tente d'accéder à une ressource non autorisée, 4D retourne une erreur. +If you want to customize the datastore objects accessible through REST, you must disable the exposure of each table and/or field that you want to hide. When a REST request attempts to access an unauthorized resource, 4D returns an error. -### Exposer des tables +### Exposing tables -Par défaut, toutes les tables sont exposées dans REST. +By default, all tables are exposed in REST. -Pour des raisons de sécurité, vous pouvez choisir d'exposer uniquement certaines tables du datastore aux appels REST. Par exemple, si vous avez créé une table [Users] stockant les noms d'utilisateur et les mots de passe, il serait préférable de ne pas l'exposer. +For security reasons, you may want to only expose certain tables of your datastore to REST calls. For instance, if you created a [Users] table storing user names and passwords, it would be better not to expose it. -Pour supprimer l'exposition REST d'une table : +To remove the REST exposure for a table: -1. Affichez l'Inspecteur de table dans l'Editeur de structure et sélectionnez la table à modifier. +1. Display the Table Inspector in the Structure editor and select the table you want to modify. -2. Décochez l'option **Exposer en tant que ressource REST** :  Procédez ainsi pour chaque table dont l'exposition doit être modifiée. +2. Uncheck the **Expose as REST resource** option:  Do this for each table whose exposure needs to be modified. -### Exposer des champs +### Exposing fields -Par défaut, touts les champs d'une base 4D sont exposés dans REST. +By default, all 4D database fields are exposed in REST. -Vous pouvez choisir d'exposer certains champs de vos tables à REST. Par exemple, si vous ne souhaitez pas exposer le champ [Employees]Salary. +You may not want to expose certain fields of your tables to REST. For example, you may not want to expose the [Employees]Salary field. -Pour supprimer l'exposition REST d'un champ : +To remove the REST exposure for a field: -1. Affichez l'Inspecteur de champ dans l'Editeur de structure et sélectionnez le champ à modifier. +1. Display the Field Inspector in the Structure editor and select the field you want to modify. -2. Décochez la case **Exposer en tant que ressource REST** pour le champ.  Répétez cette opération pour chaque champ dont l'exposition doit être modifiée. +2. Uncheck the **Expose as REST resource** for the field.  Repeat this for each field whose exposure needs to be modified. -> Pour qu'un champ soit accessible via REST, la table parente doit l'être également. Si la table parente n'est pas exposée, aucun de ses champs ne le sera, quel que soit leur statut. +> In order for a field to be accessible through REST, the parent table must be as well. If the parent table is not exposed, none of its fields will be, regardless of their status. From 778b6b33099ad685ac0270725836945d378d2b3f Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:17:50 +0100 Subject: [PATCH 067/260] New translations gettingStarted.md (French) --- .../translated_docs/fr/REST/gettingStarted.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/website/translated_docs/fr/REST/gettingStarted.md b/website/translated_docs/fr/REST/gettingStarted.md index a503cbec3f4764..abc25c50c7872e 100644 --- a/website/translated_docs/fr/REST/gettingStarted.md +++ b/website/translated_docs/fr/REST/gettingStarted.md @@ -1,55 +1,55 @@ --- id: gettingStarted -title: Prise en main +title: Getting Started --- 4D provides you with a powerful REST server, that allows direct access to data stored in your 4D applications. The REST server is included in 4D and 4D Server, it is automatically available in your 4D applications [once it is configured](configuration.md). -Cette section est destinée à vous familiariser avec la fonctionnalité REST à l'aide d'un exemple simple. Nous allons : +This section is intended to help familiarize you with REST functionality by means of a simple example. We are going to: - create and configure a basic 4D application project - access data from the 4D project through REST using a standard browser. -To keep the example simple, we’re going to use 4D and a browser that are running on the same machine. Bien entendu, vous pouvez également utiliser une architecture distante. +To keep the example simple, we’re going to use 4D and a browser that are running on the same machine. Of course, you could also use a remote architecture. ## Creating and configuring the 4D project -1. Launch your 4D or 4D Server application and create a new project. Vous pouvez, par exemple, le nommer "Emp4D". +1. Launch your 4D or 4D Server application and create a new project. You can name it "Emp4D", for example. -2. Dans l'éditeur de structure, créez une table [Employees] et ajoutez-y les champs suivants : +2. In the Structure editor, create an [Employees] table and add the following fields to it: - Lastname (Alpha) - Firstname (Alpha) - Salary (Longint)  -> L'option "Exposer une ressource REST" est cochée par défaut pour la table et pour chaque champ ; ne modifiez pas ce paramètre. +> The "Expose a REST resource" option is checked by default for the table and every field; do not change this setting. -3. Créez des formulaires, puis créez quelques employés : +3. Create forms, then create a few employees:  4. Display the **Web/REST resource** page of the Settings dialog box and [check the Expose as REST server](configuration.md#starting-the-rest-server) option. -5. Dans le menu **Exécuter**, sélectionnez **Démarrer le serveur Web** (si nécessaire), puis sélectionnez **Tester le serveur Web**. +5. In the **Run** menu, select **Start Web Server** (if necessary), then select **Test Web Server**. -4D affiche la page d'accueil par défaut du serveur Web 4D. +4D displays the default home page of the 4D Web Server. -## Accéder aux données 4D avec le navigateur +## Accessing 4D data through the browser -Vous pouvez désormais lire et modifier des données dans 4D uniquement via les requêtes REST. +You can now read and edit data within 4D only through REST requests. -Toute requête d'URL 4D REST commence par `/ rest`, pour être insérée après la zone `adress:port`. Par exemple, pour voir le contenu du datastore 4D, vous pouvez écrire : +Any 4D REST URL request starts with `/rest`, to be inserted after the `address:port` area. For example, to see what's inside the 4D datastore, you can write: ``` http://127.0.0.1/rest/$catalog ``` -Le serveur REST répond : +The REST server replies: ``` { @@ -64,19 +64,19 @@ Le serveur REST répond : } ``` -Cela signifie que le datastore contient le dataclass Employees. You can see the dataclass attributes by typing: +It means that the datastore contains the Employees dataclass. You can see the dataclass attributes by typing: ``` /rest/$catalog/Employees ``` -Si vous souhaitez obtenir toutes les entités de la dataclass Employee, vous pouvez écrire : +If you want to get all entities of the Employee dataclass, you write: ``` /rest/Employees ``` -**Réponse :** +**Response:** ``` { @@ -117,13 +117,13 @@ Si vous souhaitez obtenir toutes les entités de la dataclass Employee, vous pou } ``` -Il existe plusieurs possibilités pour filtrer les données à recevoir. Par exemple, pour obtenir uniquement la valeur de l'attribut "Lastname" de la 2ème entité, vous pouvez simplement écrire : +You have many possibilities to filter data to receive. For example, to get only the "Lastname" attribute value from the 2nd entity, you can just write: ``` /rest/Employees(2)/Lastname ``` -**Réponse :** +**Response:** ``` { From fef9a422d807680a064ef95ef6f75ac4fffa34e6 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:17:52 +0100 Subject: [PATCH 068/260] New translations properties_Print.md (French) --- .../fr/FormObjects/properties_Print.md | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/website/translated_docs/fr/FormObjects/properties_Print.md b/website/translated_docs/fr/FormObjects/properties_Print.md index a20df95975ca6a..89f16c006d3f9f 100644 --- a/website/translated_docs/fr/FormObjects/properties_Print.md +++ b/website/translated_docs/fr/FormObjects/properties_Print.md @@ -1,36 +1,36 @@ --- id: propertiesPrint -title: Imprimer +title: Print --- --- -## Impression cadre +## Print frame -Cette propriété permet de gérer le mode d'impression des objets dont la taille peut varier d'un enregistrement à l'autre en fonction de leur contenu. Ces objets peuvent être imprimés sur une hauteur de taille fixe ou variable. Un cadre de taille fixe provoque l’impression de l’objet dans les limites définies lors de la création de l’objet dans le formulaire. Un cadre de taille variable s’étend si nécessaire lors de l’impression afin d’imprimer l’intégralité de l’objet. A noter que la largeur des objets imprimés en taille variable n'est pas affectée par cette option; seule la hauteur varie automatiquement en fonction du contenu de l'objet. +This property handles the print mode for objects whose size can vary from one record to another depending on their contents. These objects can be set to print with either a fixed or variable frame. Fixed frame objects print within the confines of the object as it was created on the form. Variable frame objects expand during printing to include the entire contents of the object. Note that the width of objects printed as a variable size is not affected by this property; only the height varies automatically based on the contents of the object. -Vous ne pouvez pas placer deux objets (ou plus) avec une taille variable côte à côte dans un formulaire. Vous pouvez placer des objets de taille fixe à côté d’un objet qui sera imprimé avec une taille variable si l’objet de taille variable est plus long d’au moins une ligne que l’objet placé à son côté et que leurs limites supérieures sont alignées. Si cette condition n’est pas respectée, le contenu des autres champs sera répété pour toute tranche horizontale de l’objet de taille variable. +You cannot place more than one variable frame object side-by-side on a form. You can place non-variable frame objects on either side of an object that will be printed with a variable size provided that the variable frame object is at least one line longer than the object beside it and that all objects are aligned on the top. If this condition is not respected, the contents of the other fields will be repeated for every horizontal slice of the variable frame object. -> Les commandes `Print object` et `Print form` ne sont pas compatibles avec cette option. +> The `Print object` and `Print form` commands do not support this property. -Les options d'impression sont les suivantes : +The print options are: -- L'option **Variable** / **Impression taille variable** cochée : 4D agrandit ou réduit la zone de l'objet du formulaire afin d'imprimer tous les sous-enregistrements. +- **Variable** option / **Print Variable Frame** checked: 4D enlarges or reduces the form object area in order to print all the subrecords. -- L'option **Fixe (Tronqué)** / **Impression taille variable** non cochée : 4D imprime uniquement le contenu qui apparaît dans la zone de l'objet. Le formulaire n'est imprimé qu'une seule fois et le contenu non imprimé est ignoré. +- **Fixed (Truncation)** option / **Print Variable Frame** unchecked: 4D only prints the contents that appear in the object area. The form is only printed once and the contents not printed are ignored. -- **Fixe (Enregistrements multiples)** (sous-formulaires uniquement) : la taille initiale de la zone de sous-formulaire est conservée mais 4D imprime le formulaire plusieurs fois afin d'imprimer tous les enregistrements. +- **Fixed (Multiple Records)** (subforms only): the initial size of the subform area is kept but 4D prints the form several times in order to print all the records. -> Cette propriété peut être définie par programmation à l'aide de la commande `OBJECT SET PRINT VARIABLE FRAME`. +> This property can be set by programming using the `OBJECT SET PRINT VARIABLE FRAME` command. -#### Grammaire JSON +#### JSON Grammar -| Nom | Type de données | Valeurs possibles | -|:----------:|:---------------:| ----------------------------------------------------------------- | -| printFrame | string | "fixed", "variable", (sous-formulaire uniquement) "fixedMultiple" | +| Name | Data Type | Possible Values | +|:----------:|:---------:| --------------------------------------------------- | +| printFrame | string | "fixed", "variable", (subform only) "fixedMultiple" | -#### Objets pris en charge +#### Objects Supported -[Zone de saisie](input_overview.md) - [Sous-formulaires](subform_overview.md) (sous-formulaires liste uniquement) - [Zones 4D Write Pro](writeProArea_overview.md) +[Input](input_overview.md) - [Subforms](subform_overview.md) (list subforms only) - [4D Write Pro areas](writeProArea_overview.md) From 6a3d076ed983a974f262637a20cb069123e3a277 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:18:20 +0100 Subject: [PATCH 069/260] New translations log.md (French) --- website/translated_docs/fr/Backup/log.md | 34 ++++++++++++------------ 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/website/translated_docs/fr/Backup/log.md b/website/translated_docs/fr/Backup/log.md index 36a487885b346b..b7f1cd538d7b2e 100644 --- a/website/translated_docs/fr/Backup/log.md +++ b/website/translated_docs/fr/Backup/log.md @@ -3,17 +3,17 @@ id: log title: Fichier d'historique (.journal) --- -Une application exploitée de manière continue enregistre en permanence des modifications, des ajouts ou des suppressions d’enregistrements. Réaliser des sauvegardes régulières des données est important mais ne permet pas, en cas d’incident, de récupérer les données saisies depuis la dernière sauvegarde. Pour répondre à ce besoin, 4D dispose d’un outil particulier : le fichier d’historique. Ce fichier permet d’assurer la sécurité permanente des données. +A continuously-used application is always recording changes, additions or deletions. Réaliser des sauvegardes régulières des données est important mais ne permet pas, en cas d’incident, de récupérer les données saisies depuis la dernière sauvegarde. Pour répondre à ce besoin, 4D dispose d’un outil particulier : le fichier d’historique. This file allows ensuring permanent security of data. -En outre, 4D travaille en permanence avec un cache de données situé en mémoire. Toute modification effectuée sur les données de l'application est stockée provisoirement dans le cache avant d’être écrite sur le disque dur. Ce principe permet d’accélérer le fonctionnement des applications ; en effet, les accès mémoire sont bien plus rapides que les accès disque. Si un incident survient sur l'application avant que les données stockées dans le cache aient pu être écrites sur le disque, vous devrez intégrer le fichier d’historique courant afin de récupérer entièrement l'application. +En outre, 4D travaille en permanence avec un cache de données situé en mémoire. Any changes made to the application data are stored temporarily in the cache before being written to the hard disk. Ce principe permet d’accélérer le fonctionnement des applications ; en effet, les accès mémoire sont bien plus rapides que les accès disque. If an incident occurs in the application before the data stored in the cache could be written to the disk, you must include the current log file in order to restore the application entirely. -Enfin, 4D dispose d'une fonction d'analyse du contenu du fichier d'historique, permettant également de faire remonter en arrière les opérations exécutées sur les données de l'application. Ces fonctions sont accessibles via le CSM : reportez-vous aux sections [Page Analyse d'activités](MSC/analysis.md) et [Page Retour arrière](MSC/rollback.md). +Finally, 4D has functions that analyze the contents of the log file, making it possible to rollback the operations carried out on the application data. Ces fonctions sont accessibles via le CSM : reportez-vous aux sections [Page Analyse d'activités](MSC/analysis.md) et [Page Retour arrière](MSC/rollback.md). ## Fonctionnement du fichier d'historique -L’historique généré par 4D se présente sous la forme d’un fichier dans lequel toutes les opérations effectuées sur les données des tables journalisées de l'application viennent s’inscrire séquentiellement. Par défaut, toutes les tables sont journalisées, c'est-à-dire incluses dans l'historique, mais vous pouvez en désélectionner certaines via la propriété **Inclure dans le fichier d'historique**. +The log file generated by 4D contains a description of all operations performed on the data of journaled tables, which are logged sequentially. Par défaut, toutes les tables sont journalisées, c'est-à-dire incluses dans l'historique, mais vous pouvez en désélectionner certaines via la propriété **Inclure dans le fichier d'historique**. -Ainsi, chaque opération effectuée par un utilisateur provoque deux actions simultanées : une première sur le fichier de données (l’instruction est exécutée normalement) et une seconde dans le fichier d’historique (la description de l’opération y est enregistrée). Le fichier d’historique se construit de manière indépendante, sans gêner ni ralentir le travail de l’utilisateur. Une application ne peut travailler qu’avec un seul fichier d’historique à la fois. Le fichier d’historique enregistre les types d’opérations suivants : +As such, each operation performed by a user causes two simultaneous actions: the first one in the data file (instruction is executed normally) and the second one in the log file (the description of the operation is recorded). Le fichier d’historique se construit de manière indépendante, sans gêner ni ralentir le travail de l’utilisateur. An application can only work with one log file at a time. Le fichier d’historique enregistre les types d’opérations suivants : - Ouvertures et fermetures du fichier de données, - Ouvertures et fermetures de process (contextes), @@ -34,33 +34,33 @@ Ce schéma résume le principe général de fonctionnement du fichier d’histor Le fichier d’historique courant est automatiquement sauvegardé avec le fichier de données courant. Ce mécanisme procure deux avantages principaux : - Eviter la saturation du disque accueillant le fichier d’historique. En effet, sans sauvegarde, l’historique grossirait indéfiniment au fur et à mesure de l’exploitation de la base et finirait par saturer votre disque. A chaque sauvegarde du fichier de données, 4D ou 4D Server ferme le fichier d’historique courant et débute immédiatement un nouveau fichier vide, évitant ainsi le risque de saturation. L’ancien fichier d’historique est alors archivé puis éventuellement détruit, conformément au mécanisme des jeux de sauvegarde. -- Conserver les fichiers d’historique correspondant aux sauvegardes, afin de pouvoir analyser ou réparer a posteriori une application. En effet, l’intégration du fichier d’historique ne peut se faire que dans l'application qui lui correspond. Il est donc important, pour pouvoir intégrer correctement un fichier d’historique dans une sauvegarde, de disposer de sauvegardes et d’historiques archivés simultanément. +- It keeps log files corresponding to backups in order to be able to parse or repair an application at a later point in time. The integration of a log file can only be done in the application to which it corresponds. Il est donc important, pour pouvoir intégrer correctement un fichier d’historique dans une sauvegarde, de disposer de sauvegardes et d’historiques archivés simultanément. ## Créer le fichier d’historique -Par défaut, toute application créée avec 4D utilise un fichier d’historique (option définie dans la Page **Général** des Préférences de 4D). Le fichier d’historique est nommé par défaut *data.journal* et est placé dans le dossier Data. +By default, any application project created with 4D uses a log file (option set in the **General** page of the Preferences). Le fichier d’historique est nommé par défaut *data.journal* et est placé dans le dossier Data. -Vous pouvez à tout moment savoir si votre application utilise un fichier d’historique : l’option **Utiliser le fichier d’historique** est cochée dans la Page **Sauvegarde/Configuration** des Propriétés. Si vous avez désélectionné cette option ou si vous utilisez une application sans fichier d’historique et souhaitez mettre en place une stratégie de sauvegarde avec fichier d’historique, il vous appartient d’en créer un. +You can find out if your application uses a log file at any time: just check whether the **Use Log** option is selected on the **Backup/Configuration** page of the Settings. If you deselected this option, or if you use an application without a log file and wish to set up a backup strategy with a log file, you will have to create one. Pour créer un fichier d’historique : -1. Dans la Page **Sauvegarde/Configuration** des Propriétés de structure, cochez l’option **Utiliser le fichier d’historique**. Le programme affiche une boîte de dialogue standard de création de fichier. Par défaut, le fichier d’historique est baptisé *data.journal*. +1. On the **Backup/Configuration** page of the Structure Settings, check the **Use Log** option. Le programme affiche une boîte de dialogue standard de création de fichier. Par défaut, le fichier d’historique est baptisé *data.journal*. -2. Conservez le nom du fichier par défaut ou choisissez-en un autre et déterminez l’emplacement du fichier. Si vous disposez d’au moins deux disques durs, il est recommandé de placer le fichier d'historique sur un autre disque que celui contenant le projet d'application. Si le disque dur de l'application est perdu, vous pouvez toujours rappeler votre fichier d'historique. +2. Conservez le nom du fichier par défaut ou choisissez-en un autre et déterminez l’emplacement du fichier. If you have at least two hard drives, it is recommended that you place the log file on a disk other than the one containing the application project. If the application hard drive is lost, you can still recall your log file. 3. Cliquez sur le bouton **Enregistrer**. Le disque et le nom du fichier d’historique ouvert s’affichent alors dans la zone **“Utiliser le fichier d’historique”** de la boîte de dialogue. Vous pouvez cliquer dans cette zone afin d’afficher un pop up menu contenant l’enchaînement des dossiers à partir du disque. -4. Validez la boîte de dialogue des Propriétés. +4. Validate the Settings dialog box. -Pour que vous puissiez directement créer un fichier d’historique, les données doivent se trouver dans une des situations suivantes : +In order for you to be able to create a log file directly, the data must be in one of the following situations: - Le fichier de données est vierge, -- Vous venez d’effectuer une sauvegarde et aucune modification sur les données n’a encore été effectuée. +- You just performed a backup and no changes have yet been made to the data. -Dans tous les autres cas, au moment où vous validez la fenêtre des Propriétés, une boîte de dialogue d’alerte vous informe qu’une sauvegarde est nécessaire. Si vous cliquez sur **OK**, la sauvegarde démarre immédiatement puis l’historique est activé. Si vous cliquez sur **Annuler**, la requête est enregistrée mais la création du fichier d’historique est différée et sera créée uniquement après la prochaine sauvegarde de l'application. Cette précaution est indispensable car il vous faudra, pour restituer une application après un éventuel incident, disposer d’une copie de l'application dans laquelle pourront s’intégrer les opérations enregistrées dans le fichier d’historique. +In all other cases, when you validate the Settings dialog box, an alert dialog box will appear to inform you that it is necessary to perform a backup. Si vous cliquez sur **OK**, la sauvegarde démarre immédiatement puis l’historique est activé. If you click **Cancel**, the request is saved but the creation of the log file is postponed and it will actually be created only after the next backup of the application. This precaution is indispensable because, in order to restore an application after any incidents, you will need a copy of the application into which the operations recorded in the log file will be integrated. -Sans autre manipulation de votre part, toutes les opérations effectuées sur les données s’inscriront dans ce fichier, et il sera utilisé également lors des ouvertures ultérieures de l'application. +Without having to do anything else, all operations performed on the data are logged in this file and it will be used in the future when the application is opened. Vous devrez créer un autre fichier d’historique si vous créez un nouveau fichier de données. Vous devrez désigner ou créer un autre fichier d’historique si vous ouvrez un autre fichier de données non associé à un fichier d’historique (ou si le fichier d’historique est manquant). @@ -68,13 +68,13 @@ Vous devrez créer un autre fichier d’historique si vous créez un nouveau fic ## Fermer l’historique -Si vous souhaitez interrompre l’enregistrement du fichier d’historique courant, désélectionnez l’option **Utiliser le fichier d’historique** dans la Page **Sauvegarde/Configuration** des Propriétés. +If you would like to stop logging operations to the current log file, simply deselect the **Use Log** option on the **Backup/Configuration** page of the Settings. 4D affiche alors un message d’alerte afin d’attirer votre attention sur le fait que cette action vous prive de la sécurité apportée par le fichier d’historique :  -Si vous cliquez sur le bouton **Fermer**, le fichier d’historique courant est immédiatement refermé (il n’est pas nécessaire que la boîte de dialogue des Propriétés soit ensuite validée). +If you click **Stop**, the current log file is immediately closed (the Settings dialog box does not need to be validated afterwards). Si vous souhaitez fermer votre fichier d’historique courant parce qu’il devient trop important, il est préférable d’effectuer une sauvegarde du fichier de données, ce qui entraînera la sauvegarde de l’historique. From b6eea53f1a38a72b65453e51d7df83c43e4bcabe Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:18:24 +0100 Subject: [PATCH 070/260] New translations manData.md (French) --- website/translated_docs/fr/REST/manData.md | 112 ++++++++++----------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/website/translated_docs/fr/REST/manData.md b/website/translated_docs/fr/REST/manData.md index 05a3762edff742..e1474017d610ae 100644 --- a/website/translated_docs/fr/REST/manData.md +++ b/website/translated_docs/fr/REST/manData.md @@ -1,13 +1,13 @@ --- id: manData -title: Manipulation des données +title: Manipulating Data --- -Tous [les attributs, dataclasses exposés](configuration.md#exposing-tables-and-fields) et toutes les [fonctions](classFunctions.md) sont accessibles via REST. Les noms de dataclass, d'attributs et de fonctions sont sensibles à la casse; contrairement aux données des requêtes. +All [exposed dataclasses, attributes](configuration.md#exposing-tables-and-fields) and [functions](classFunctions.md) can be accessed through REST. Dataclass, attribute, and function names are case-sensitive; however, the data for queries is not. -## Rechercher des données +## Querying data -Pour rechercher directement des données, vous pouvez utiliser la fonction [`$filter`]($filter.md). Par exemple, pour trouver une personne nommée "Smith", vous pouvez écrire : +To query data directly, you can do so using the [`$filter`]($filter.md) function. For example, to find a person named "Smith", you could write: `http://127.0.0.1:8081/rest/Person/?$filter="lastName=Smith"` @@ -16,105 +16,105 @@ Pour rechercher directement des données, vous pouvez utiliser la fonction [`$fi ## Adding, modifying, and deleting entities -Avec l'API REST, vous pouvez effectuer toutes les manipulations de données souhaitées dans 4D. +With the REST API, you can perform all the manipulations to data as you can in 4D. -Pour ajouter et modifier des entités, vous pouvez appeler [`$method=update`]($method.md#methodupdate). Si vous souhaitez supprimer une ou plusieurs entités, vous pouvez utiliser [`$method=delete`]($method.md#methoddelete). +To add and modify entities, you can call [`$method=update`]($method.md#methodupdate). If you want to delete one or more entities, you can use [`$method=delete`]($method.md#methoddelete). -Outre la récupération d'un attribut dans une dataclass à l'aide de [{dataClass}({key})](%7BdataClass%7D_%7Bkey%7D.html), vous pouvez également écrire une [fonction de classe (class function)](classFunctions.md#function-calls) qui retourne une entity selection (ou une collection). +Besides retrieving a single entity in a dataclass using [{dataClass}({key})](%7BdataClass%7D_%7Bkey%7D.html), you can also write a [class function](classFunctions.md#function-calls) that returns an entity selection (or a collection). -Avant de retourner la sélection, vous pouvez également la trier en utilisant [`$orderby`]($orderby.md) un ou plusieurs attributs (même les attributs de relation). +Before returning a selection, you can also sort it by using [`$orderby`]($orderby.md) one one or more attributes (even relation attributes). ## Navigating data -Ajoutez le [`$skip`]($skip.md) (pour définir avec quelle entité commencer) et [`$top/$limit`]($top_$limit.md) (pour définir le nombre d'entités à retourner) des requêtes REST à vos requêtes ou entity selections pour parcourir la collection d'entités. +Add the [`$skip`]($skip.md) (to define with which entity to start) and [`$top/$limit`]($top_$limit.md) (to define how many entities to return) REST requests to your queries or entity selections to navigate the collection of entities. ## Creating and managing entity set -Un ensemble d'entités (également appelé *entity set* ou <0>entity selection0>) est une collection d'entités obtenue via une requête REST stockée dans le cache de 4D Server. L'utilisation d'un entity set vous empêche de lancer continuellement des requêtes à votre application pour obtenir les mêmes résultats. L'accès à un entity set est beaucoup plus rapide et peut améliorer la vitesse de votre application. +An entity set (aka *entity selection*) is a collection of entities obtained through a REST request that is stored in 4D Server's cache. Using an entity set prevents you from continually querying your application for the same results. Accessing an entity set is much quicker and can improve the speed of your application. -Pour créer un entity set, appelez [`$method=entityset`]($method.md#methodentityset) dans votre requête REST. Par mesure de sécurité, vous pouvez également utiliser [`$savedfilter`]($savedfilter.md) et/ou [`$savedorderby`]($savedorderby.md) lorsque vous appelez [`$filter`]($filter.md) et/ou [`$orderby`]($orderby.md) afin que l'entité définie puisse être rapidement récupérée avec le même ID que précédemment, dans le cas où elle expireait ou serait supprimée du serveur. +To create an entity set, call [`$method=entityset`]($method.md#methodentityset) in your REST request. As a measure of security, you can also use [`$savedfilter`]($savedfilter.md) and/or [`$savedorderby`]($savedorderby.md) when you call [`$filter`]($filter.md) and/or [`$orderby`]($orderby.md) so that if ever the entity set timed out or was removed from the server, it can be quickly retrieved with the same ID as before. -Pour accéder à l'entity set, vous devez utiliser `$entityset/{entitySetID}`, par exemple : +To access the entity set, you must use `$entityset/{entitySetID}`, for example: `/rest/People/$entityset/0AF4679A5C394746BFEB68D2162A19FF` -Par défaut, un entity set est stocké pendant deux heures; cependant, vous pouvez modifier le timeout en passant une nouvelle valeur à [`$timeout`]($timeout.md). Le timeout est continuellement réinitialisé à la valeur définie (soit par défaut soit à celle que vous définissez) chaque fois que vous l'utilisez. +By default, an entity set is stored for two hours; however, you can change the timeout by passing a new value to [`$timeout`]($timeout.md). The timeout is continually being reset to the value defined for its timeout (either the default one or the one you define) each time you use it. -Si vous souhaitez supprimer un entity set du cache de 4D Server, vous pouvez utiliser [`$method=release`]($method.md#methodrelease). +If you want to remove an entity set from 4D Server's cache, you can use [`$method=release`]($method.md#methodrelease). -Si vous modifiez l'un des attributs de l'entité dans l'entity set, les valeurs seront mises à jour. Toutefois, si vous modifiez une valeur qui faisait partie de la requête exécutée pour créer l'entity set, elle ne sera pas supprimée de l'entity set même si elle ne correspond plus aux critères de recherche. Bien entendu, les entités que vous supprimez ne feront plus partie de l'entity set. +If you modify any of the entity's attributes in the entity set, the values will be updated. However, if you modify a value that was a part of the query executed to create the entity set, it will not be removed from the entity set even if it no longer fits the search criteria. Any entities you delete will, of course, no longer be a part of the entity set. -Si l'ensemble d'entités ne se trouve plus dans le cache de 4D Server, il sera recréé avec un nouveau timeout de 10 minutes. L'ensemble d'entités sera actualisé (certaines entités peuvent être incluses tandis que d'autres peuvent être supprimées) depuis la dernière fois qu'il a été créé, s'il n'existait plus avant de le recréer. +If the entity set no longer exists in 4D Server's cache, it will be recreated with a new default timeout of 10 minutes. The entity set will be refreshed (certain entities might be included while others might be removed) since the last time it was created, if it no longer existed before recreating it. -Using [`$entityset/{entitySetID}?$logicOperator... &$otherCollection`]($entityset.md#entitysetentitysetidoperatorothercollection), you can combine two entity sets that you previously created. Vous pouvez combiner les résultats dans les deux, retourner uniquement ce qui est commun aux deux, ou renvoyer ce qui n'est pas commun aux deux. +Using [`$entityset/{entitySetID}?$logicOperator... &$otherCollection`]($entityset.md#entitysetentitysetidoperatorothercollection), you can combine two entity sets that you previously created. You can either combine the results in both, return only what is common between the two, or return what is not common between the two. -Une nouvelle sélection d'entités est renvoyée; vous pouvez néanmoins créer un nouvel ensemble d'entités en appelant [`$method=entityset`]($method.md#methodentityset) à la fin de la requête REST. +A new selection of entities is returned; however, you can also create a new entity set by calling [`$method=entityset`]($method.md#methodentityset) at the end of the REST request. ## Calculating data -En utilisant [`$compute`]($compute.md), vous pouvez calculer la **moyenne**, le **nombre**, le **min**, le **max** ou la **somme** pour un attribut spécifique d'une dataclass. Vous pouvez également calculer toutes les valeurs avec le mot clé $all. +By using [`$compute`]($compute.md), you can compute the **average**, **count**, **min**, **max**, or **sum** for a specific attribute in a dataclass. You can also compute all values with the $all keyword. -Par exemple, pour obtenir le salaire le plus élevé : +For example, to get the highest salary: `/rest/Employee/salary/?$compute=sum` -Pour calculer toutes les valeurs et retourner un objet JSON : +To compute all values and return a JSON object: `/rest/Employee/salary/?$compute=$all` -## Appeler les fonctions de classe du modèle de données +## Calling Data model class functions -Vous pouvez appeler des [fonctions de classe utilisateurs](classFunctions.md) ORDA du modèle de données via des requêtes POST, afin de pouvoir bénéficier de l'API de l'application ciblée. Par exemple, si vous avez défini une fonction `getCity()` dans la dataclass City, vous pouvez l'appeler à l'aide de la requête suivante : +You can call ORDA Data Model [user class functions](classFunctions.md) through POST requests, so that you can benefit from the exposed API of the targeted application. For example, if you have defined a `getCity()` function in the City dataclass class, you could call it using the following request: `/rest/City/getCity` -avec des données contenues dans le corps de la requête : `["Paris"]` +with data in the body of the request: `["Paris"]` -> Les appels aux méthodes projet 4D exposées en tant que service REST sont toujours pris en charge mais sont obsolètes. +> Calls to 4D project methods that are exposed as REST Service are still supported but are deprecated. ## Selecting Attributes to get -Vous pouvez toujours définir les attributs à retourner dans la réponse REST après une requête initiale en passant leur chemin d'accès dans la requête (par exemple, `Company(1)/name,revenues/`) +You can always define which attributes to return in the REST response after an initial request by passing their path in the request (*e.g.*, `Company(1)/name,revenues/`) -Vous pouvez appliquer ce filtre comme suit : +You can apply this filter in the following ways: -| Objet | Syntaxe | Exemple | -| -------------------- | --------------------------------------------------- | ------------------------------------------------------------- | -| Dataclass | {dataClass}/{att1,att2...} | /People/firstName,lastName | -| Collection d'entités | {dataClass}/{att1,att2...}/?$filter="{filter}" | /People/firstName,lastName/?$filter="lastName='a@'" | -| Entité spécifique | {dataClass}({ID})/{att1,att2...} | /People(1)/firstName,lastName | -| | {dataClass}:{attribute}(value)/{att1,att2...}/ | /People:firstName(Larry)/firstName,lastName/ | -| Entity selection | {dataClass}/{att1,att2...}/$entityset/{entitySetID} | /People/firstName/$entityset/528BF90F10894915A4290158B4281E61 | +| Objet | Syntax | Example | +| ---------------------- | --------------------------------------------------- | ------------------------------------------------------------- | +| Dataclass | {dataClass}/{att1,att2...} | /People/firstName,lastName | +| Collection of entities | {dataClass}/{att1,att2...}/?$filter="{filter}" | /People/firstName,lastName/?$filter="lastName='a@'" | +| Specific entity | {dataClass}({ID})/{att1,att2...} | /People(1)/firstName,lastName | +| | {dataClass}:{attribute}(value)/{att1,att2...}/ | /People:firstName(Larry)/firstName,lastName/ | +| Entity selection | {dataClass}/{att1,att2...}/$entityset/{entitySetID} | /People/firstName/$entityset/528BF90F10894915A4290158B4281E61 | -Les attributs doivent être délimités par une virgule, c'est-à-dire `/Employee/firstName,lastName,salary`. Des attributs de stockage ou des attributs relationnels peuvent être transmis. +The attributes must be delimited by a comma, *i.e.*, `/Employee/firstName,lastName,salary`. Storage or relation attributes can be passed. -### Exemples -Voici quelques exemples vous permettant d'indiquer les attributs à retourner en fonction de la méthode employée pour récupérer les entités. +### Examples +Here are a few examples, showing you how to specify which attributes to return depending on the technique used to retrieve entities. -Vous pouvez appliquer cette méthode à : +You can apply this technique to: -- Dataclass (tout ou une collection d'entités dans une dataclass) -- Entités spécifiques +- Dataclasses (all or a collection of entities in a dataclass) +- Specific entities - Entity sets -#### Exemple avec une dataclass +#### Dataclass Example -Les requêtes suivantes retournent uniquement le prénom et le nom de la datastore class People (soit la datastore class entière, soit une sélection d'entités basée sur la recherche définie dans `$filter`). +The following requests returns only the first name and last name from the People datastore class (either the entire datastore class or a selection of entities based on the search defined in `$filter`). `GET /rest/People/firstName,lastName/` -**Résultat** : +**Result**: ```` { @@ -154,7 +154,7 @@ Les requêtes suivantes retournent uniquement le prénom et le nom de la datasto `GET /rest/People/firstName,lastName/?$filter="lastName='A@'"/` -**Résultat** : +**Result**: ```` { @@ -174,13 +174,13 @@ Les requêtes suivantes retournent uniquement le prénom et le nom de la datasto ```` -#### Exemple d'entité +#### Entity Example -La requête suivante retourne uniquement les attributs de prénom et nom à partir d'une entité spécifique de la dataclass People : +The following request returns only the first name and last name attributes from a specific entity in the People dataclass: `GET /rest/People(3)/firstName,lastName/` -**Résultat** : +**Result**: ```` { @@ -195,7 +195,7 @@ La requête suivante retourne uniquement les attributs de prénom et nom à part `GET /rest/People(3)/` -**Résultat** : +**Result**: ```` { @@ -218,31 +218,31 @@ La requête suivante retourne uniquement les attributs de prénom et nom à part } ```` -#### Exemple d'ensemble d'entités +#### Entity Set Example Once you have [created an entity set](#creating-and-managing-entity-set), you can filter the information in it by defining which attributes to return: `GET /rest/People/firstName,employer.name/$entityset/BDCD8AABE13144118A4CF8641D5883F5?$expand=employer` -## Affichage d'un attribut d'image +## Viewing an image attribute -Si vous souhaitez afficher intégralement un attribut d'image, saisissez ce qui suit : +If you want to view an image attribute in its entirety, write the following: `GET /rest/Employee(1)/photo?$imageformat=best&$version=1&$expand=photo` -Pour plus d'informations sur les formats d'image, reportez-vous à [`$imageformat`]($imageformat.md). Pour plus d'informations sur le paramètre de version, reportez-vous à [`$version`]($version.md). +For more information about the image formats, refer to [`$imageformat`]($imageformat.md). For more information about the version parameter, refer to [`$version`]($version.md). -## Enregistrement d'un attribut BLOB sur le disque +## Saving a BLOB attribute to disk -Si vous souhaitez enregistrer un BLOB stocké dans votre dataclass, vous pouvez écrire ce qui suit : +If you want to save a BLOB stored in your dataclass, you can write the following: `GET /rest/Company(11)/blobAtt?$binary=true&$expand=blobAtt` -## Récupérer une seule entité +## Retrieving only one entity -Vous pouvez utiliser la syntaxe[`{dataClass}:{attribute}(value)`](%7BdataClass%7D.html#dataclassattributevalue) lorsque vous souhaitez récupérer une seule entité. C'est particulièrement utile lorsque vous souhaitez lancer une recherche associée qui n'est pas créée sur la clé primaire de la dataclass. Par exemple, vous pouvez écrire : +You can use the [`{dataClass}:{attribute}(value)`](%7BdataClass%7D.html#dataclassattributevalue) syntax when you want to retrieve only one entity. It's especially useful when you want to do a related search that isn't created on the dataclass's primary key. For example, you can write: `GET /rest/Company:companyCode("Acme001")` From cba6b3403d6ede26473f86170267d8cf89d8b5ab Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:18:27 +0100 Subject: [PATCH 071/260] New translations handling_users_groups.md (French) --- .../fr/Users/handling_users_groups.md | 152 +++++++++--------- 1 file changed, 76 insertions(+), 76 deletions(-) diff --git a/website/translated_docs/fr/Users/handling_users_groups.md b/website/translated_docs/fr/Users/handling_users_groups.md index b96f398016accb..caa789f952a4b2 100644 --- a/website/translated_docs/fr/Users/handling_users_groups.md +++ b/website/translated_docs/fr/Users/handling_users_groups.md @@ -1,153 +1,153 @@ --- id: editing -title: Gestion des groupes et utilisateurs 4D +title: Managing 4D users and groups --- -## Super_Utilisateur et Administrateur +## Designer and Administrator -4D fournit à certains utilisateurs des privilèges d’accès standard ainsi que des prérogatives spécifiques. Une fois qu’un système d’utilisateurs et de groupes a été créé, ces privilèges standard prennent effet. +4D provides users with certain standard access privileges and certain powers. Once a users and groups system has been initiated, these standard privileges take effect. -L’utilisateur le plus puissant est le **Super_Utilisateur**. Aucune partie de l'application n’est inaccessible au Super_Utilisateur. Le Super_Utilisateur peut : -- accéder à tous les serveurs de l'application sans restrictions, -- créer des utilisateurs et des groupes, -- affecter des privilèges d’accès aux groupes, -- utiliser le mode Développement. En monoposte, les droits d'accès du Super_Utilisateur sont toujours utilisés. En mode client/serveur, l'affectation d'un mot de passe au Super_Utilisateur affiche la boîte de dialogue de connexion. L'accès au mode Développement est en lecture seule. +The most powerful user is named **Designer**. No aspect of the application is closed to the Designer. The Designer can: +- access all application servers without restriction, +- create users and groups, +- assign access privileges to groups, +- access the Design environment. In single-user environment, Designer access rights are always used. In client/server environment, assigning a password to the Designer activates the display of the 4D user login dialog. Access to Design environment is read-only. -Après le Super_Utilisateur, le second plus puissant utilisateur est **l’Administrateur**, qui est en général responsable de la gestion du système d’accès et des fonctionnalités d'administration. +After the Designer, the next most powerful user is the **Administrator**, who is usually given the tasks of managing the access system and administration features. -L'Administrateur peut : -- créer des utilisateurs et des groupes, -- accéder au moniteur et à la fenêtre d'administration de 4D Server -- accéder à la fenêtre CSM pour gérer les sauvegardes, restitutions ou le serveur. +The Administrator can: +- create users and groups, +- access the 4D Server Administration window and monitor +- access the MSC window to monitor backup, restore, or server. -L'Administrateur ne peut pas : -- modifier l'utilisateur Super_Utilisateur -- par défaut, accéder à des objets protégés de l'application. En particulier, l'Administrateur ne peut pas accéder au mode Développement s'il est restreint. L'Administrateur doit faire partie d'un ou plusieurs groupes pour avoir des privilèges d’accès dans l'application. Il est placé dans tous les nouveaux groupes, mais vous pouvez cependant l'exclure de ces groupes. +The Administrator cannot: +- edit the Designer user +- by default, access to protected parts of the application. In particular, the Administrator cannot access to the Design mode if it is restricted. The Administrator must be part of one or more groups to have access privileges in the application. The Administrator is placed in every new group, but you can remove the Administrator’s name from any group. -Par défaut, le Super_Utilisateur et l'Administrateur se trouvent dans toutes les applications. Dans la [boîte de dialogue de gestion des utilisateurs](#users-and-groups-editor), les icônes du Super_Utilisateur et de l’Administrateur ont des icônes respectivement rouge et verte : +Both the Designer and Administrator are available by default in all applications. In the [user management dialog box](#users-and-groups-editor), the icons of the Designer and Administrator are displayed in red and green respectively: -- Icône du Super_Utilisateur :  -- Icône de l'Administrateur :  +- Designer icon:  +- Administrator icon:  -Vous pouvez renommer les utilisateurs Super_Utilisateur et Administrateur. Dans le langage, Super_Utilisateur porte toujours l'identifiant 1 et l'Administrateur l'identifiant 2. +You can rename the Designer and Administrator users. In the language, the Designer ID is always 1 and the Administrator ID is always 2. -Le Super_Utilisateur et l’Administrateur peuvent créer chacun 16 000 groupes et 16 000 utilisateurs. +The Designer and Administrator can each create up to 16,000 groups and 16,000 users. -## Éditeur d'utilisateurs +## Users editor -L'éditeur des utilisateurs se trouve dans la boîte à outils de 4D. +The editor for users is located in the Toolbox of 4D.  -### Ajouter et modifier des utilisateurs +### Adding and modifying users -Vous utilisez l’éditeur d’utilisateurs pour créer des comptes utilisateurs, définir leurs propriétés et leur appartenance aux différents groupes. +You use the users editor to create user accounts, set their properties and assign them to various groups. -Pour ajouter un utilisateur depuis la boite à outils : +To add a user from the Toolbox : -1. Sélectionnez **Boîte à outils > Utilisateurs** dans le menu **Développement** ou cliquez sur le bouton **Boîte outils** de la barre d’outils de 4D. 4D affiche la fenêtre d’édition des utilisateurs. +1. Select **Tool Box > Users** from the **Design** menu or click on the **Tool Box** button of the 4D toolbar. 4D displays the users editor. -La liste des utilisateurs affiche tous les utilisateurs, y compris [le Super_Utilisateur et l'l’Administrateur](#designer-and-administrator). +The list of users displays all the users, including the [Designer and the Administrator](#designer-and-administrator). -2. Cliquez sur le bouton d’ajout  situé au-dessous de la Liste des utilisateurs. OU Cliquez avec le bouton droit de la souris dans la Liste des utilisateurs et choisissez la commande **Ajouter** ou **Dupliquer** dans le menu contextuel. +2. Click on the  button located below the list of users. OR Right-click in the list of users and choose **Add** or **Duplicate** in the context menu. -> La commande **Dupliquer** permet de créer rapidement plusieurs utilisateurs ayant des caractéristiques communes. +> The **Duplicate** command can be used to create several users having the same characteristics quickly. -4D ajoute un nouvel utilisateur à la liste, nommé par défaut "Nouvel utilisateurN". +4D adds a new user to the list, named "New userX" by default. -3. Saisissez le nom du nouvel utilisateur. Ce nom sera utilisé par l’utilisateur pour ouvrir l'application. Vous pouvez renommer un utilisateur à tout moment en utilisant la commande **Renommer** du menu contextuel, ou en utilisant la combinaison Alt+clic (Windows) ou Option+clic (macOS) ou en cliquant deux fois sur un nom. +3. Enter the user name. This name will be used by the user to open the application. You can rename a user at any time using the **Rename** command of the context menu, or by using the Alt+click (Windows) or Option+click (macOS) shortcuts, or by clicking twice on the name you want to change. -4. Pour saisir le mot de passe de l’utilisateur, cliquez sur le bouton **Modifier...** dans la zone des propriétés de l’utilisateur et saisissez deux fois le mot de passe dans la boite de dialogue. Vous pouvez saisir jusqu’à 15 caractères alphanumériques. L’éditeur de mots de passe tient compte de la casse des caractères (majuscules ou minuscules). +4. To enter a password for the user, click the **Edit...** button in the user properties area and enter the password twice in the dialog box. You can use up to 15 alphanumeric characters for a password. The password editor is case sensitive. -> Les utilisateurs peuvent modifier leur mot de passe à tout moment en fonction des options de la page Sécurité des propriétés de la structure, ou à l'aide de la commande `CHANGE PASSWORD`. +> Users can change their password at any time according to the options in the "Security" page of the structure settings, or using the `CHANGE PASSWORD` command. -5. Définissez le ou les groupe(s) d’appartenance de l’utilisateur à l’aide du tableau “Membre des groupes”. Vous pouvez ajouter l’utilisateur sélectionné à un groupe en cochant l’option correspondante dans la colonne Membre. +5. Set the group(s) to which the user belongs using the "Member of Groups" table. You can add or remove the selected user to/from a group by checking the corresponding option in the Member column. -L’appartenance des utilisateurs aux groupes peut également être définie par groupe dans la [page Groupes](#configuring-access-groups). +The membership of users to different groups can also be set by group on the [Groups page](#configuring-access-groups). -### Supprimer un utilisateur +### Deleting a user -Pour supprimer un utilisateur, sélectionnez-le puis cliquez sur le bouton de suppression ou utilisez la commande **Supprimer** du menu contextuel.  +To delete a user, select it then click the deletion button or use the **Delete** command of the context menu.  -Les utilisateurs supprimés n'apparaissent plus dans la liste de l'éditeur d'utilisateurs. A noter que les numéros des utilisateurs supprimés peuvent être réattribués lors de la création de nouveaux comptes. +Deleted user names no longer appear in the Users editor. Note that the IDs for deleted users are reassigned when new user accounts are created. -### Propriétés des utilisateurs +### User properties -- Le champ **Type d’utilisateur** : le champ Type d’utilisateur contient "Super_Utilisateur", "Administrateur", ou (pour tous les autres utilisateurs) "Utilisateur". +- **User Kind**: The User Kind field contains "Designer", "Administrator", or (for all other users) "User". -- **Méthodes de démarrage** : Nom d'une méthode associée qui sera automatiquement associée lorsque l'utilisateur ouvre l'application (facultatif). Cette méthode peut être utilisée par exemple pour charger les préférences utilisateur. +- **Startup Method**: Name of an associated method that will be automatically executed when the user opens the application (optional). This method can be used for example to load the user preferences. -## Éditeur de groupes +## Groups editor -L'éditeur de groupes se trouve dans la boîte à outils de 4D. +The editor for groups is located in the Toolbox of 4D. -### Configurer des groupes +### Configuring groups -Vous utilisez l’éditeur de groupes pour définir les éléments qu’ils contiennent (utilisateurs et/ou autres groupes) et pour répartir les accès aux plug-ins. +You use the groups editor to set the elements that each group contains (users and/or other groups) and to distribute access to plug-ins. -Attention, une fois créé, un groupe ne peut pas être supprimé. Si vous souhaitez désactiver un groupe, il vous suffit de retirer tous les utilisateurs qu’il contient. +Keep in mind that once a group has been created, it cannot be deleted. If you want to deactivate a group, you just need to remove any users it contains. -Pour créer un groupe : +To create a group: -1. Sélectionnez **Boîte à outils > Groupes** dans le menu **Développement** ou cliquez sur le bouton **Boîte outils** de la barre d’outils de 4D puis cliquez sur le bouton **Groupes**. 4D affiche la fenêtre d’édition des groupes. La liste des groupes affiche tous les groupes du projet d'application. +1. Select **Tool Box > Groups** in the **Design** menu or click on the **Tool Box** button of the 4D toolbar then on the **Groups** button. 4D displays the groups editor window. The list of groups displays all the groups of the application project. -2. Cliquez sur le bouton  situé en-dessous de la liste des groupes. - OU - Faites un clic droit sur la liste de groupes et sélectionnez la commande **Ajouter** ou **Dupliquer** dans le menu contextuel. +2. Click on the  button located below the list of groups. + OR + Right-click in the list of groups and choose the **Add** or **Duplicate** command in the context menu. -> La commande Dupliquer permet de créer rapidement plusieurs groupes ayant des caractéristiques communes. +> The Duplicate command can be used to create several groups having the same characteristics quickly. -4D ajoute un nouveau groupe à la liste, nommé par défaut "Nouveau groupe1". +4D adds a new group to the list, named "New groupX" by default. -3. Saisissez le nom du nouveau groupe. Le nom du groupe peut avoir une longueur maximale de 15 caractères. Vous pouvez renommer un groupe à tout moment en utilisant la commande **Renommer** du menu contextuel, ou en utilisant la combinaison Alt+clic (Windows) ou Option+clic (macOS) ou en cliquant deux fois sur un nom. +3. Enter the name of the new group. The group name can be up to 15 characters long. You can rename a group at any time using the **Rename** command of the context menu, or by using the Alt+click (Windows) or Option+click (macOS) shortcuts, or by clicking twice on the name you want to change. -### Placer des utilisateurs ou des groupes dans des groupes +### Placing users or groups into groups -Vous pouvez placer tout utilisateur ou tout groupe dans un groupe et vous pouvez aussi le placer dans plusieurs groupes. Il n’est pas obligatoire de placer un utilisateur dans un groupe. +You can place any user or group into a group, and you can also place the group itself into several other groups. It is not mandatory to place a user in a group. -Pour placer un utilisateur ou un groupe dans un groupe, il suffit de sélectionner le groupe dans la liste puis de cocher l’option "Membre" pour chaque utilisateur ou groupe dans la zone d’attribution des membres : +To place a user or group in a group, you simply need to check the "Member" option for each user or group in the member attribution area:  -Si vous cochez le nom d’un utilisateur, l’utilisateur est ajouté au groupe. Si vous cochez un nom de groupe, tous les utilisateurs du groupe sont ajoutés au nouveau groupe. L’utilisateur ou le groupe affilié dispose alors des privilèges d’accès affectés au nouveau groupe. +If you check the name of a user, this user is added to the group. If you check the name of a group, all the users of the group are added to the new group. The affiliated user or group will then have the same access privileges as those assigned to the new group. -Placer des groupes dans d’autres groupes permet de créer une hiérarchie d’utilisateurs. Les utilisateurs d’un groupe placé dans un autre groupe disposent des autorisations d’accès des deux groupes. Reportez-vous au paragraphe [Un schéma d’accès hiérarchique](#an-access-hierarchy-scheme) ci-dessous. +Placing groups into other groups lets you create a user hierarchy. The users of a group placed in another group will have the access privileges of both groups. See "[An access hierarchy scheme](#an-access-hierarchy-scheme)" below. -Pour supprimer un utilisateur ou un groupe d’un autre groupe, il suffit de désélectionner l’option correspondante dans la liste des membres. +To remove a user or group from another group, you just need to deselect the corresponding option in the member attribution area. -### Affecter un groupe à un plug-in ou à un serveur +### Assigning a group to a plug-in or to a server -Vous pouvez affecter un groupe d’accès à tout plug-in 4D installé dans votre projet. Les plug-ins comprennent tous les plug-ins de 4D ainsi que tout plug-in développés par une société tierce. +You can assign a group privileges to any plug-ins installed in the project. This includes all the 4D plug-ins and any third-party plug-ins. -Répartir les accès aux plug-ins vous permet de contrôler l’utilisation des licences dont vous disposez pour ces plug-ins. Tout utilisateur n’appartenant pas au groupe d’accès à un plug-in ne pourra pas charger ce plug-in. +Distributing access to the plug-ins lets you control the use of the licenses you possess for these plug-ins. Any users that do not belong to the access group of a plug-in cannot load this plug-in. -> Les licences utilisées demeurent associées aux comptes utilisateurs 4D dans le groupe, durant toute la session 4D. +> Used licenses remain attached to 4D user accounts in the group for the whole 4D session. -La zone “Plug-ins” de la page Groupes de la boîte à outils liste tous les plug-ins chargés par l’application 4D. Pour affecter un groupe à un plug-in, il suffit de cocher l’option correspondante. +The “Plug-in” area on the Groups page of the tool box lists all the plug-ins loaded by the 4D application. To give a group access to a plug-in, you simply need to check the corresponding option.  -Les lignes **4D Client Web Server** et **4D Client SOAP Server** permettent contrôler la possibilité de publication Web et SOAP (Web Services) de chaque 4D en mode distant. En effet, ces licences sont considérées par 4D Server comme des licences de plug-ins. Ainsi, comme pour un plug-in, vous pouvez restreindre le droit d’utiliser ces licences à un groupe d’utilisateurs spécifique. +The **4D Client Web Server** and **4D Client SOAP Server** items lets you control the possibility of Web and SOAP (Web Services) publication for each 4D in remote mode. These licenses are considered as plug-in licenses by 4D Server. Therefore, in the same way as for plug-ins, you can restrict the right to use these licenses to a specific group of users. -### Un schéma d’accès hiérarchique +### An access hierarchy scheme -Le meilleur moyen d’assurer la sécurité de votre application et de proposer différents niveaux d’accès aux utilisateurs est d’utiliser un schéma hiérarchique des accès. Les utilisateurs peuvent être affectés à différents groupes et les groupes peuvent être hiérarchisés pour créer des niveaux de droits d’accès. Cette section décrit différentes approches de ce thème. +The best way to ensure the security of your application and provide users with different levels of access is to use an access hierarchy scheme. Users can be assigned to appropriate groups and groups can be nested to create a hierarchy of access rights. This section discusses several approaches to such a scheme. -Dans cet exemple, un utilisateur appartient à l’un des trois groupes définis suivant son niveau de responsabilité. Les utilisateurs du groupe Comptabilité sont responsables de la saisie de données. Les utilisateurs du groupe Dir. finance sont responsables de la mise à jour des données, comme la mise à jour d’enregistrements ou la suppression d’enregistrements obsolètes. Les utilisateurs du groupe Direction générale sont responsables de l’analyse de données, ce qui inclut la réalisation de recherches et l’impression d’états. +In this example, a user is assigned to one of three groups depending on their level of responsibility. Users assigned to the Accounting group are responsible for data entry. Users assigned to the Finances group are responsible for maintaining the data, including updating records and deleting outdated records. Users assigned to the General Management group are responsible for analyzing the data, including performing searches and printing analytical reports. -Les groupes sont hiérarchisés afin que les privilèges soient correctement affectés aux utilisateurs de chacun des groupes. +The groups are then nested so that privileges are correctly distributed to the users of each group. -- Le groupe Direction générale ne contient que les utilisateurs de “haut niveau”.  +- The General Management group contains only “high-level” users.  -- Le groupe Dir. finance contient les utilisateurs du groupe Direction générale.  +- The Finances group contains data maintenance users as well as General Management users, thus the users in General Management have the privileges of the Finances group as well.  -- Le groupe Comptabilité contient des opérateurs de saisie mais aussi les utilisateurs des groupes Dir. finance et donc Direction générale.  +- The Accounting group contains data entry users as well as Finances group users, so the users who belong to the Finances group and the General Management group enjoy the privileges of the Accounting group as well.  -Vous pouvez ensuite décider des privilèges affectés à chaque groupe suivant le niveau de responsabilité des utilisateurs qu’il contient. +You can decide which access privileges to assign to each group based on the level of responsibility of the users it includes. -Un tel système hiérarchique rend aisée l’affectation d’un utilisateur à un groupe. Il suffit de placer chaque utilisateur dans un groupe et d’utiliser la hiérarchie des groupes pour déterminer les accès. +Such a hierarchical system makes it easy to remember to which group a new user should be assigned. You only have to assign each user to one group and use the hierarchy of groups to determine access. From b2b895948d41e4a11775494fc76feb057515ac58 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:18:30 +0100 Subject: [PATCH 072/260] New translations overview.md (French) --- website/translated_docs/fr/Users/overview.md | 56 ++++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/website/translated_docs/fr/Users/overview.md b/website/translated_docs/fr/Users/overview.md index dd63fe1de9dc83..35928c34eb7e1c 100644 --- a/website/translated_docs/fr/Users/overview.md +++ b/website/translated_docs/fr/Users/overview.md @@ -3,70 +3,70 @@ id: overview title: Aperçu --- -Si plusieurs personnes utilisent une application, ce qui est souvent le cas dans une architecture client-serveur ou d'interfaces Web, vous devez contrôler ses accès ou proposer différentes fonctionnalités selon les utilisateurs connectés. Il peut être également essentiel de protéger des données importantes. You can provide this security by assigning passwords to users and creating access groups that have different levels of access to information in the application or to application operations. +If more than one person uses an application, which is usually the case in client-server architecture or Web interfaces, you need to control access or provide different features according to the connected users. It is also essential to provide security for sensitive data. You can provide this security by assigning passwords to users and creating access groups that have different levels of access to information in the application or to application operations. -> Consultez le document [4D Security guide](https://blog.4d.com/4d-security-guide/) pour une vue d'ensemble des fonctions de sécurité de 4D. +> For an overview of 4D's security features, see the [4D Security guide](https://blog.4d.com/4d-security-guide/). -## Définition des accès aux groupes +## Assigning group access -Le système de gestion des accès de 4D est basé sur les notions d’utilisateurs et de groupes. Créez des noms d’utilisateurs et affectez-leur un mot de passe, placez les utilisateurs dans des groupes, et assignez à chaque groupe les privilèges d’accès appropriés aux objets de l'application. +4D’s password access system is based on users and groups. You create users and assign passwords, put users in groups, and assign each group access rights to appropriate parts of the application. -Les groupes peuvent alors se voir affecter des privilèges d'accès à des parties spécifiques ou des fonctionnalités de l'application (accès au mode Développement, serveur HTTP, serveur SQL, etc.), ou à toute partie personnalisée. +Groups can then be assigned access privileges to specific parts or features of the application (Design access, HTTP server, SQL server, etc.), or any custom part. -L'exemple suivant présente les droits d'accès à l'explorateur d'exécution et au Développement assignés au groupe "Devs" : +The following example shows Design and Runtime explorer access rights being assigned to the "Devs" group:  -## Activer le contrôle des accès +## Activating access control -Le contrôle effectif des accès par mots de passe de 4D est activé par **l’affectation d’un mot de passe au Super_Utilisateur**. +You initiate the 4D password access control system in client-server by **assigning a password to the Designer**. -Tant que le Super_Utilisateur n’a pas de mot de passe, 4D permet à tout utilisateur d’accéder à toutes les parties de l'application, même si vous avez défini des utilisateurs et des groupes (à l'ouverture de l'application, aucune identification n'est requise). N'importe quelle partie de l'application peut être ouverte. +Until you give the Designer a password, all application access are done with the Designer's access rights, even if you have set up users and groups (when the application opens, no ID is required). Any part of the application can be opened. -Lorsqu’un mot de passe est affecté au Super_Utilisateur, tous les privilèges d’accès que vous avez affectés prennent effet. Pour pouvoir utiliser l'application, les utilisateurs distants doivent alors saisir un mot de passe. +When a password is assigned to the Designer, all the access privileges take effect. In order to connect to the application, remote users must enter a password. -Pour désactiver le système de restriction d’accès, il suffit de supprimer (mettre à blanc) le mot de passe du Super_Utilisateur. +To disable the password access system, you just need to remove the Designer password. -## Utilisateurs et groupes dans l'architecture projet +## Users and groups in project architecture -Dans les applications projet (fichiers .4DProject ou .4dz), les utilisateurs et groupes 4D peuvent être configurés à la fois en monoposte ou en client-serveur. Toutefois, le contrôle d'accès ne prend effet qu'avec 4D Server. Le tableau suivant liste les principales fonctionnalités des utilisateurs et groupes ainsi que leur disponibilité : +In project applications (.4DProject or .4dz files), 4D users and groups can be configured in both single-user and client-server environments. However, access control is only effective with 4D Server. The following table lists the main users and groups features and their availability: -| | 4D (monoposte) | 4D Server | -| ------------------------------------------------------------------------------- | ------------------------------------------------------- | --------- | -| Ajouter/modifier des utilisateurs et groupes | oui | oui | -| Affecter l'accès des utilisateurs/groupes aux serveurs | oui | oui | -| Identification de l'utilisateur | non (tous les utilisateurs sont des Super_Utilisateur) | oui | -| Contrôle d'accès une fois qu'un mot de passe a été affecté au Super_Utilisateur | non (tous les accès sont accordés au Super_Utilisateur) | oui | +| | 4D (single-user) | 4D Server | +| ------------------------------------------------------------- | ---------------------------- | --------- | +| Adding/editing users and groups | oui | oui | +| Assigning user/group access to servers | oui | oui | +| User identification | no (all users are Designer) | oui | +| Access control once the Designer has been assigned a password | no (all access are Designer) | oui | -## Éditeur de boîte à outils +## Toolbox editor -Les éditeurs des utilisateurs et groupes sont placés dans la boîte à outils de 4D. Ces éditeurs peuvent être utilisés pour la création d'utilisateurs et de groupes, l'affectation de mots de passe aux utilisateurs, le placement d'utilisateurs dans des groupes, etc. +The editors for users and groups are located in the toolbox of 4D. These editors can be used to create both users and groups, assign passwords to users, place users in groups, etc.  -> L'éditeur d'utilisateurs et de groupes peut s'afficher à l'exécution à l'aide de la commande [EDIT ACCESS](https://doc.4d.com/4Dv18/4D/18/EDIT-ACCESS.301-4504687.en.html). L'éditeur d'utilisateurs et de groupes peut s'afficher à l'exécution à l'aide de la commande [EDIT ACCESS](https://doc.4d.com/4Dv18/4D/18/EDIT-ACCESS.301-4504687.en.html). +> Users and groups editor can be displayed at runtime using the [EDIT ACCESS](https://doc.4d.com/4Dv18/4D/18/EDIT-ACCESS.301-4504687.en.html) command. The whole users and groups configuration can also be edited during application execution using 4D language commands of the [Users and Groups](https://doc.4d.com/4Dv18R3/4D/18-R3/Users-and-Groups.201-4900438.en.html) theme. -## Fichier directory.json +## Directory.json file -Les utilisateurs, les groupes ainsi que leurs droits d'accès sont stockés dans un fichier spécifique du projet nommé **directory.json**. +Users, groups, as well as their access rights are stored in a specific project file named **directory.json**. -Ce fichier peut être stocké dans les emplacements suivants : +This file can be stored at the following locations: -- dans le dossier de propriétés utilisateur, c'est-à-dire le dossier "Settings", au même niveau que le dossier "Project". Ces propriétés sont utilisées par défaut dans l'application. -- dans le dossier de propriétés des données, c'est-à-dire dans le dossier "Settings" du dossier "Data". Si un fichier **directory.json** se trouve à cet emplacement, il est prioritaire par rapport au fichier du dossier Settings utilisateur. Cette fonctionnalité vous permet de définir des configurations Utilisateurs et Groupes personnalisées/locales. La configuration personnalisée ne sera pas affectée par des mises à niveau de l'application. +- in the user settings folder, i.e. in the "Settings" folder at the same level as the "Project" folder. These settings are used by default for the application. +- in the data settings folder, i.e. in the "Settings" folder in the "Data" folder. If a **directory.json** file is present at this location, it takes priority over the file in the user settings folder. This feature allows you to define custom/local Users and Groups configurations. The custom configuration will left untouched by an application upgrade. -> Si la gestion des groupes et utilisateurs est inactive, le fichier **directory.json** n'est pas créé. +> If users and groups management is not active, the **directory.json** is not created. From a0e6030cb4ec1b985597a62403be8819a4b41978 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:18:32 +0100 Subject: [PATCH 073/260] New translations webServerObject.md (French) --- .../fr/WebServer/webServerObject.md | 242 +++++++++--------- 1 file changed, 121 insertions(+), 121 deletions(-) diff --git a/website/translated_docs/fr/WebServer/webServerObject.md b/website/translated_docs/fr/WebServer/webServerObject.md index 5fffa5dd2fbdbb..94f07c5ab99f53 100644 --- a/website/translated_docs/fr/WebServer/webServerObject.md +++ b/website/translated_docs/fr/WebServer/webServerObject.md @@ -1,173 +1,173 @@ --- id: webServerObject -title: Objet Serveur Web +title: Web Server object --- ## Aperçu -Un projet 4D peut démarrer et surveiller un serveur Web pour l'application principale (hôte) ainsi que chaque composant hébergé. +A 4D project can start and monitor a web server for the main (host) application as well as each hosted component. -Par exemple, si vous avez installé deux composants dans votre application principale, vous pouvez démarrer et contrôler jusqu'à trois serveurs Web indépendants à partir de votre application : +For example, if you installed two components in your main application, you can start and monitor up to three independant web servers from your application: -- un serveur web pour l'application hôte, -- un serveur web pour le composant n°1, -- un serveur web pour le composant n°2. +- one web server for the host application, +- one web server for the component #1, +- one web server for the component #2. -En dehors de la mémoire, il n'y a pas de limite au nombre de composants et donc, de serveurs Web, pouvant être rattachés à un seul projet d'application 4D. +Other than memory, there is no limit to the number of components and thus, of web servers, that can be attached to a single 4D application project. -Chaque serveur web 4D, y compris le serveur web de l'application principale, est exposé comme un **objet** spécifique. Une fois instancié, un objet serveur Web peut être géré à partir de l'application courante ou de n'importe quel composant. +Each 4D web server, including the main application's web server, is exposed as a specific **object**. Once instantiated, a web server object can be handled from the current application or from any component. -> Les [commandes WEB](https://doc.4d.com/4Dv18/4D/18/Web-Server.201-4504301.en.html) héritées du langage 4D sont prises en charge mais ne peuvent pas sélectionner le serveur Web auquel elles s'appliquent (voir ci-dessous). +> The legacy [WEB commands](https://doc.4d.com/4Dv18/4D/18/Web-Server.201-4504301.en.html) of the 4D language are supported but cannot select the web server to which they apply (see below). -Chaque serveur web (application hôte ou composant) peut être utilisé dans son propre contexte, notamment : -- les appels vers la méthode base `On Web Authentication` et `On Web Connection` -- le traitement des balises 4D et les appels de méthodes, -- la gestion de sessions web et des protocoles TLS. +Each web server (host application or component) can be used in its own separate context, including: +- `On Web Authentication` and `On Web Connection` database method calls +- 4D tags processing and method calls, +- managing web sessions and TLS protocols. -Cette fonctionnalité vous permet de développer des composants indépendants et des fonctionnalités qui accompagnent leurs propres interfaces Web. +This feature allows you to develop independant components and features that come with their own web interfaces. -## Instancier un objet serveur web +## Instantiating a web server object -L'objet serveur Web de l'application hôte (serveur Web par défaut) est automatiquement chargé par 4D au démarrage. Ainsi, si vous écrivez dans un projet nouvellement créé : +The web server object of the host application (default web server) is automatically loaded by 4D at startup. Thus, if you write in a newly created project: ```4d $nbSrv:=WEB Server list.length -//la valeur de $nbSrv est 1 +//$nbSrv value is 1 ``` -Pour instancier un objet serveur web, appelez la commande `WEB Server` : +To instantiate a web server object, call the `WEB Server` command: ```4d C_OBJECT(webServer) - //appeler le serveur web depuis le contexte courant + //call the web server from the current context webServer:=WEB Server - //équivalent à + //equivalent to webServer:=WEB Server(Web server database) ``` If the application uses components and you want to call: - the host application's web server from a component or -- le serveur qui a reçu la requête (quel que soit le serveur) +- the server that received the request (whatever the server), -vous pouvez également utiliser : +you can also use: ```4d C_OBJECT(webServer) - //appler le serveur web hôte depuis un composant + //call the host web server from a component webServer:=WEB Server(Web server host database) - //appeler le serveur web cible + //call the target web server webServer:=WEB Server(Web server receiving request) ``` -## Méthodes du serveur web +## Web server methods -Un objet serveur Web contient les méthodes membres suivantes : +A web server object contains the following member methods: -| Méthode | Paramètres | Valeur retournée | Description | -| --------- | ---------------- | ---------------- | ---------------------- | -| `start()` | settings (objet) | status (object) | Démarre le serveur web | -| `stop()` | - | - | Stoppe le serveur web | +| Method | Parameter | Return value | Description | +| --------- | ----------------- | --------------- | --------------------- | +| `start()` | settings (object) | status (object) | Starts the web server | +| `stop()` | - | - | Stops the web server | -Pour démarrer et arrêter un serveur Web, il suffit d'appeler les méthodes membres `start()` et `stop()` de l'objet serveur Web : +To start and stop a web server, just call the `start()` and `stop()` member methods of the web server object: ```4d C_OBJECT($status) - //pour démarrer un serveur web avec les paramètres par défaut + //to start a web server with default settings $status:=webServer.start() - //pour démarrer un serveur web avec des paramètres personnalisés - //objet $settings contenant des propriétés du serveur web + //to start the web server with custom settings + //$settings object contains web server properties webServer.start($settings) - //pour stopper le serveur web + //to stop the web server $status:=webServer.stop() ``` -## Propriétés du serveur web - -Un objet serveur Web contient les propriétés suivantes. - -| Propriété | Type | Description | -| -------------------------- | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| certificateFolder | Texte | Dossier dans lequel les fichiers de certificat sont sauvegardés. Format POSIX du chemin d'accès complet à l'aide de filesystem. Peut être passé comme objet `Folder` dans le paramètre `settings`. | -| characterSet | Numérique ou texte | Jeu de caractères devant être utilisé par 4D Web Server pour communiquer avec les navigateurs connectés à l'application. La valeur par défaut dépend de la langue du système d'exploitation. Peut être une chaîne MIBEnum longint ou Name, identifiants [définis par l'IANA](http://www.iana.org/assignments/character-sets) pris en charge par le serveur Web 4D : 4 = ISO-8859-1 12 = ISO-8859-9 13 = ISO-8859-10 17 = Shift-JIS 2024 = Windows-31J 2026 = Big5 38 = euc-kr 106 = UTF-8 2250 = Windows-1250 2251 = Windows-1251 2253 = Windows-1253 2255 = Windows-1255 2256 = Windows-1256 | -| cipherSuite | Texte | Liste de chiffrement utilisée pour le protocole sécurisé. Définit la priorité des algorithmes de chiffrement mis en œuvre par le serveur Web. Peut être une séquence de chaînes séparées par des deux-points (par exemple "ECDHE-RSA-AES128 -..."). Voir la [page des chiffrements](https://www.openssl.org/docs/manmaster/man1/ciphers.html) sur le site OpenSSL. | -| CORSEnabled | boolean | Statut CORS (Cross-origin resource sharing) activé pour le serveur Web. Pour des raisons de sécurité, les requêtes "cross-domain" sont interdites par défaut au niveau du navigateur. Lorsqu'il est activé (True), les appels XHR (par exemple les requêtes REST) à partir de pages Web hors du domaine peuvent être autorisés dans votre application (vous devez définir la liste des adresses autorisées dans la liste des domaines CORS, voir `CORSSettings` ci-dessous). Lorsqu'il est désactivé (False, par défaut), toutes les requêtes entre sites (cross site) envoyées avec CORS sont ignorées. Lorsqu'il est activé (True) et qu'un domaine ou une méthode non autorisé(e) envoie une requête entre sites, elle est rejetée avec une réponse d'erreur «403 - forbidden». Par défaut : False (désactivé)
Pour plus d'informations sur CORS, veuillez consulter la [page de partage de ressources cross-origin](http://en.wikipedia.org/wiki/Cross-origin_resource_sharing) sur Wikipedia. | -| CORSSettings | collection d'objets | Liste des hôtes et des méthodes autorisés pour le service CORS (voir `CORSEnabled` ci-dessus). Chaque objet doit contenir une propriété **host** et, optionnellement, une propriété **methods** :
**host** (texte, obligatoire) : nom de domaine ou adresse IP à partir duquel les pages externes sont autorisées à envoyer des requêtes de données au serveur via CORS. Plusieurs attributs de domaine peuvent être ajoutés pour créer une liste blanche. Si *host* n'est pas présent ou vide, l'objet est ignoré. Plusieurs syntaxes sont prises en charge :
192.168.5.17:8081
192.168.5.17
192.168.\*
192.168.\*:8081
http://192.168.5.17:8081
http://\*.myDomain.com
http://myProject.myDomain.com
\*.myDomain.com
myProject.myDomain.com
\***methods** (texte, facultatif) : méthode(s) HTTP acceptée(s) pour l'hôte CORS correspondant. Séparez chaque méthode par un ";" (ex : "post;get"). Si *methods* est vide, null ou non défini, toutes les méthodes sont activées. | -| debugLog | number | Etat du fichier journal des requêtes HTTP (HTTPDebugLog_nn.txt, stocké dans le dossier "Logs" de l'application - nn est le numéro de fichier). 0 = désactivé 1 = activé sans les parties du corps (la taille du corps est fournie dans ce cas) 3 = activé avec les parties du corps en réponse uniquement 5 = activé avec des parties du corps sur requête uniquement 7 = activé avec des parties du corps en réponse et requête | -| defaultHomepage | Texte | Nom de la page d'accueil par défaut ou "" pour ne pas envoyer la page d'accueil personnalisée | -| HSTSEnabled | boolean | État de HTTP Strict Transport Security (HSTS). HSTS permet au serveur Web de déclarer que les navigateurs doivent interagir avec uniquement via des connexions HTTPS sécurisées. Les navigateurs enregistreront les informations HSTS la première fois qu'ils recevront une réponse du serveur Web, puis toutes les futures requêtes HTTP seront automatiquement transformées en requêtes HTTPS. La durée de stockage de ces informations par le navigateur est indiquée avec la propriété `HSTSMaxAge`. HSTS nécessite l'activation de HTTPS sur le serveur. HTTP doit également être activé pour permettre des connexions client initiales. | -| HSTSMaxAge | number | Durée maximale (en secondes) d'activation de HSTS pour chaque nouvelle connexion client. Ces informations sont stockées côté client pendant la durée spécifiée.Valeur par défaut : 63072000 (2 ans) | -| HTTPCompressionLevel | number | Niveau de compression pour tous les échanges HTTP compressés pour le serveur HTTP 4D (requêtes clients ou réponses serveur). Ce sélecteur vous permet d'optimiser les échanges en priorisant soit la vitesse d'exécution (moins de compression), soit la quantité de compression (moins de vitesse).
Valeurs possibles :
Par défaut = 1 (compression plus rapide). | -| HTTPCompressionThreshold | number | Seuil de taille (octets) pour les requêtes en dessous desquelles les échanges ne doivent pas être compressés. Ce paramètre est utile pour éviter de perdre du temps machine en compressant les petits échanges.
- 1 à 9 (où 1 correspond à la compression la plus rapide et 9 la plus élevée).
- -1 = définir un compromis entre la vitesse et le taux de compression.
Seuil de compression par défaut = 1024 octets | -| HTTPEnabled | boolean | État du protocole HTTP | -| HTTPPort | number | Numéro de port IP d'écoute pour HTTP.
Par défaut = 80 | -| HTTPTrace | boolean | Activation HTTP TRACE. Pour des raisons de sécurité, le serveur Web rejette par défaut les requêtes HTTP TRACE avec une erreur 405. Lorsqu'il est activé, le serveur Web répond aux requêtes HTTP TRACE avec la ligne de requête, l'en-tête et le corps. | -| HTTPSEnabled | boolean | État du protocole HTTPS | -| HTTPSPort | number | Numéro de port IP d'écoute pour HTTPS.
Par défaut = 443 | -| inactiveProcessTimeout | number | Durée de vie (en minutes) des process de session inactives. À la fin du délai d'attente (tiemout), le process est tué sur le serveur, la méthode base `On Web Close Process` est appelée, puis le contexte de session est détruit.
Par défaut = 480 minutes | -| inactiveSessionTimeout | number | Durée de vie (en minutes) des sessions inactives (durée définie dans le cookie). À la fin de cette période, le cookie de session expire et n'est plus envoyé par le client HTTP.
Par défaut = 480 minutes | -| IPAddressToListen | Texte | Adresse IP sur laquelle le serveur Web 4D recevra les requêtes HTTP. Les formats de chaîne IPv6 et IPv4 sont pris en charge. | -| *isRunning* | boolean | État d'exécution du serveur Web | -| keepSession | boolean | État d'activation de la gestion de session
Par défaut = true | -| logRecording | number | Valeur d'enregistrement des requêtes de journal (logweb.txt).
0 = Ne pas enregistrer (par défaut) 1 = Enregistrer au format CLF 2 = Enregistrer au format DLF 3 = Enregistrer au format ELF 4 = Enregistrer au format WLF | -| maxConcurrentProcesses | number | Nombre maximal de process Web simultanés pris en charge par le serveur Web. Lorsque ce nombre (moins un) est atteint, 4D ne crée aucun autre process et retourne le statut HTTP 503 - Service Unavailable to all new requests.Valeurs possibles : 10 - 32000
Par défaut = 100 | -| maxRequestSize | number | Taille maximale (en octets) des requêtes HTTP entrantes (POST) que le serveur Web est autorisé à traiter. Passer la valeur maximale (2147483648) signifie qu'en pratique, aucune limite n'est définie. Cette limite est utilisée pour éviter la saturation du serveur Web en raison de requêtes entrantes trop volumineuses. Si une requête atteint cette limite, le serveur Web la rejette.
Valeurs possibles : 500000 - 2147483648 | -| maxSessions | number | Nombre maximum de sessions simultanées. Lorsque vous atteignez la limite, la session la plus ancienne est fermée (et la méthode base `On Web Close Process` est appelée) si le serveur Web doit en créer une nouvelle. Le nombre de sessions simultanées ne peut pas dépasser le nombre total de processus Web (propriété `maxConcurrentProcesses`, 100 par défaut) | -| minTLSVersion | number | Version TLS minimale acceptée pour les connexions. Les tentatives de connexion de clients prenant en charge uniquement les versions inférieures au minimum seront rejetées.
Valeurs possibles :
1 = `TLSv1_0` 2 = `TLSv1_1` 3 = `TLSv1_2` (par défaut) En cas de modification, le serveur doit être redémarré pour utiliser la nouvelle valeur. | -| *name* | Texte | Nom de l'application du serveur Web | -| *openSSLVersion* | Texte | Version de la bibliothèque OpenSSL utilisée | -| *perfectForwardSecrecy* | boolean | Disponibilité PFS sur le serveur | -| rootFolder | Texte | Chemin du dossier racine du serveur Web. Format POSIX du chemin d'accès complet à l'aide de filesystem. Peut être passé comme objet `Folder` dans le paramètre `settings`. | -| sessionCookieDomain | Texte | Champ "domaine" du cookie de session. Utilisé pour contrôler la portée des cookies de session. Par exemple, si vous définissez la valeur "/*.4d.fr" pour ce sélecteur, le client enverra un cookie uniquement lorsque la requête est adressée au domaine ".4d.fr", ce qui exclut les serveurs hébergeant des données statiques externes. | -| sessionCookieName | Texte | Nom du cookie utilisé pour stocker l'ID de session.
Par défaut = "4DSID" | -| sessionCookiePath | Texte | Champ "path" du cookie de session. Utilisé pour contrôler la portée des cookies de session. Par exemple, si vous définissez la valeur "/4DACTION" pour ce sélecteur, le client enverra un cookie uniquement pour les requêtes dynamiques commençant par 4DACTION, et non pour les images, les pages statiques, etc. | -| sessionIPAddressValidation | boolean | Validation d'adresse IP pour les cookies de session. Pour des raisons de sécurité, le serveur Web vérifie par défaut l'adresse IP de chaque requête contenant un cookie de session et la rejette si cette adresse ne correspond pas à l'adresse IP utilisée pour créer le cookie. Dans certaines applications spécifiques, vous souhaiterez peut-être désactiver cette validation et accepter les cookies de session, même lorsque leurs adresses IP ne correspondent pas. Par exemple, lorsque les appareils mobiles basculent entre les réseaux Wifi et 3G/4G, leur adresse IP change. Dans ce cas, vous pouvez permettre aux clients de continuer à utiliser leurs sessions Web même lorsque les adresses IP changent.
Note : ce paramètre réduit le niveau de sécurité de votre application | - -Ces propriétés sont définies : - -1. à l'aide du paramètre `settings` de la méthode `webServer.start()` (sauf pour les propriétés en lecture seule, voir ci-dessous), -2. si elles ne sont pas utilisées, à l'aide de la commande `WEB SET OPTION` (applications hôtes uniquement), -3. si elles ne sont pas utilisées, dans les paramètres de l'application hôte ou du composant. - -- Si le serveur Web n'est pas démarré, les propriétés contiennent les valeurs qui seront utilisées au prochain démarrage du serveur Web. -- Si le serveur Web est démarré, les propriétés contiennent les valeurs réelles utilisées par le serveur Web (les paramètres par défaut peuvent avoir été remplacés par le paramètre `settings` de la méthode `webServer.start()`. - -> *isRunning*, *name*, *openSSLVersion* et *perfectForwardSecrecy* sont des propriétés en lecture seule qui ne peuvent pas être prédéfinies dans le paramètre objet `settings` pour la méthode `start()`. - - -## Portée des commandes 4D Web - -Le langage 4D contient [plusieurs commandes](https://doc.4d.com/4Dv18/4D/18/Web-Server.201-4504301.en.html) permettant de contrôler le serveur Web. Cependant, ces commandes sont destinées à fonctionner avec un seul serveur Web (par défaut). Lorsque vous utilisez ces commandes dans le contexte d'objets serveur Web, assurez-vous que leur portée est appropriée. - -| Commande | Portée | -| ------------------------------- | --------------------------------- | -| `SET DATABASE PARAMETER` | Application hôte du serveur web | -| `WEB CLOSE SESSION` | Serveur Web ayant reçu la requête | -| `WEB GET BODY PART` | Serveur Web ayant reçu la requête | -| `WEB Get body part count` | Serveur Web ayant reçu la requête | -| `WEB Get Current Session ID` | Serveur Web ayant reçu la requête | -| `WEB GET HTTP BODY` | Serveur Web ayant reçu la requête | -| `WEB GET HTTP HEADER` | Serveur Web ayant reçu la requête | -| `WEB GET OPTION` | Application hôte du serveur web | -| `WEB Get server info` | Application hôte du serveur web | -| `WEB GET SESSION EXPIRATION` | Serveur Web ayant reçu la requête | -| `WEB Get session process count` | Serveur Web ayant reçu la requête | -| `WEB GET STATISTICS` | Application hôte du serveur web | -| `WEB GET VARIABLES` | Serveur Web ayant reçu la requête | -| `WEB Is secured connection` | Serveur Web ayant reçu la requête | -| `WEB Is server running` | Application hôte du serveur web | -| `WEB SEND BLOB` | Serveur Web ayant reçu la requête | -| `WEB SEND FILE` | Serveur Web ayant reçu la requête | -| `WEB SEND HTTP REDIRECT` | Serveur Web ayant reçu la requête | -| `WEB SEND RAW DATA` | Serveur Web ayant reçu la requête | -| `WEB SEND TEXT` | Serveur Web ayant reçu la requête | -| `WEB SET HOME PAGE` | Application hôte du serveur web | -| `WEB SET HTTP HEADER` | Serveur Web ayant reçu la requête | -| `WEB SET OPTION` | Application hôte du serveur web | -| `WEB SET ROOT FOLDER` | Application hôte du serveur web | -| `WEB START SERVER` | Application hôte du serveur web | -| `WEB STOP SERVER` | Application hôte du serveur web | -| `WEB Validate digest` | Serveur Web ayant reçu la requête | +## Web server properties + +A web server object contains the following properties. + +| Property | Type | Description | +| -------------------------- | --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| certificateFolder | text | Folder where the certificate files are located. The path is formatted in POSIX full path using filesystems. When using this property in the `settings` parameter, it can be a `Folder` object. | +| characterSet | number or text | Character set that the 4D Web Server should use to communicate with browsers connecting to the application. The default value actually depends on the language of the OS. Can be a MIBEnum longint or Name string, identifiers [defined by IANA](http://www.iana.org/assignments/character-sets) supported by the 4D Web Server:
4 = ISO-8859-1 12 = ISO-8859-9 13 = ISO-8859-10 17 = Shift-JIS 2024 = Windows-31J 2026 = Big5 38 = euc-kr 106 = UTF-8 2250 = Windows-1250 2251 = Windows-1251 2253 = Windows-1253 2255 = Windows-1255 2256 = Windows-1256 | +| cipherSuite | text | Cipher list used for the secure protocol. Sets the priority of ciphering algorithms implemented by the web server. Can be a sequence of strings separated by colons (for example "ECDHE-RSA-AES128-..."). See the [ciphers page](https://www.openssl.org/docs/manmaster/man1/ciphers.html) on the OpenSSL site. | +| CORSEnabled | boolean | CORS (Cross-origin resource sharing) service status for the Web server. For security reasons, "cross-domain" requests are forbidden at the browser level by default. When enabled (True), XHR calls (e.g. REST requests) from Web pages outside the domain can be allowed in your application (you need to define the list of allowed addresses in the CORS domain list, see `CORSSettings` below). When disabled (False, default), all cross site requests sent with CORS are ignored. When enabled (True) and a non-allowed domain or method sends a cross site request, it is rejected with a "403 - forbidden" error response. Default: False (disabled)
For more information about CORS, please refer to the [Cross-origin resource sharing page](http://en.wikipedia.org/wiki/Cross-origin_resource_sharing) on Wikipedia. | +| CORSSettings | collection of objects | List of allowed hosts and methods for the CORS service (see `CORSEnabled` above). Each object must contain a **host** property and, optionnally, a **methods** property:
**host** (text, mandatory): Domain name or IP address from where external pages are allowed to send data requests to the Server via CORS. Multiple domain attributes can be added to create a white list. If *host* is not present or empty, the object is ignored. Several syntaxes are supported:
192.168.5.17:8081
192.168.5.17
192.168.\*
192.168.\*:8081
http://192.168.5.17:8081
http://\*.myDomain.com
http://myProject.myDomain.com
\*.myDomain.com
myProject.myDomain.com
\***methods** (text, optional): Accepted HTTP method(s) for the corresponding CORS host. Separate each method with a ";" (e,g,: "post;get"). If *methods* is empty, null, or undefined, all methods are enabled. | +| debugLog | number | Status of the HTTP request log file (HTTPDebugLog_nn.txt, stored in the "Logs" folder of the application -- nn is the file number). 0 = disabled 1 = enabled without body parts (body size is provided in this case) 3 = enabled with body parts in response only 5 = enabled with body parts in request only 7 = enabled with body parts in response and request | +| defaultHomepage | text | Name of the default home page or "" to not send the custom home page | +| HSTSEnabled | boolean | HTTP Strict Transport Security (HSTS) status. HSTS allows the Web server to declare that browsers should only interact with it via secure HTTPS connections. Browsers will record the HSTS information the first time they receive a response from the web server, then any future HTTP requests will automatically be transformed into HTTPS requests. The length of time this information is stored by the browser is specified with the `HSTSMaxAge` property. HSTS requires that HTTPS is enabled on the server. HTTP must also be enabled to allow initial client connections. | +| HSTSMaxAge | number | Maximum length of time (in seconds) that HSTS is active for each new client connection. This information is stored on the client side for the specified duration.Default value: 63072000 (2 years) | +| HTTPCompressionLevel | number | Compression level for all compressed HTTP exchanges for the 4D HTTP server (client requests or server replies). This selector lets you optimize exchanges by either prioritizing speed of execution (less compression) or the amount of compression (less speed).
Possible values:
Default = 1 (faster compression). | +| HTTPCompressionThreshold | number | Size threshold (bytes) for requests below which exchanges should not be compressed. This setting is useful in order to avoid losing machine time by compressing small exchanges.
- 1 to 9 (where 1 is the fastest compression and 9 the highest).
- -1 = set a compromise between speed and rate of compression.
Default compression threshold = 1024 bytes | +| HTTPEnabled | boolean | HTTP protocol state | +| HTTPPort | number | Listening IP port number for HTTP.
Default = 80 | +| HTTPTrace | boolean | HTTP TRACE activation. For security reasons, by default the Web server rejects HTTP TRACE requests with an error 405. When enabled, the web server replies to HTTP TRACE requests with the request line, header, and body. | +| HTTPSEnabled | boolean | HTTPS protocol state | +| HTTPSPort | number | Listening IP port number for HTTPS.
Default = 443 | +| inactiveProcessTimeout | number | Life duration (in minutes) of the inactive session processes. At the end of the timeout, the process is killed on the server, the `On Web Close Process` database method is called, then the session context is destroyed.
Default = 480 minutes | +| inactiveSessionTimeout | number | Life duration (in minutes) of inactive sessions (duration set in cookie). At the end of this period, the session cookie expires and is no longer sent by the HTTP client.
Default = 480 minutes | +| IPAddressToListen | text | IP address on which the 4D Web Server will receive HTTP requests. Both IPv6 string formats and IPv4 string formats are supported. | +| *isRunning* | boolean | Web server running state | +| keepSession | boolean | Session management enabling status
Default = true | +| logRecording | number | Log requests (logweb.txt) recording value.
0 = Do not record (default) 1 = Record in CLF format 2 = Record in DLF format 3 = Record in ELF format 4 = Record in WLF format | +| maxConcurrentProcesses | number | Maximum number of concurrent web processes supported by the web server. When this number (minus one) is reached, 4D will not create any other processes and returns the HTTP status 503 - Service Unavailable to all new requests.Possible values: 10 - 32000
Default = 100 | +| maxRequestSize | number | Maximum size (in bytes) of incoming HTTP requests (POST) that the Web server is allowed to process. Passing the maximum value (2147483648) means that, in practice, no limit is set. This limit is used to avoid web server saturation due to incoming requests that are too large. If a request reaches this limit, the web server rejects it.
Possible values: 500000 - 2147483648 | +| maxSessions | number | Maximum number of simultaneous sessions. When you reach the limit, the oldest session is closed (and `On Web Close Process` database method is called) if the web server needs to create a new one. The number of simultaneous sessions cannot exceed the total number of web processes (`maxConcurrentProcesses` property, 100 by default) | +| minTLSVersion | number | Minimum TLS version accepted for connections. Connection attempts from clients supporting only versions below the minimum will be rejected.
Possible values:
1 = `TLSv1_0` 2 = `TLSv1_1` 3 = `TLSv1_2` (default) If modified, the server must be restarted to use the new value. | +| *name* | text | Name of the web server application | +| *openSSLVersion* | text | Version of the OpenSSL library used | +| *perfectForwardSecrecy* | boolean | PFS availability on the server | +| rootFolder | text | Path of web server root folder. The path is formatted in POSIX full path using filesystems. When using this property in the `settings` parameter, it can be a `Folder` object. | +| sessionCookieDomain | text | "domain" field of the session cookie. Used to control the scope of the session cookies. If you set, for example, the value "/*.4d.fr" for this selector, the client will only send a cookie when the request is addressed to the domain ".4d.fr", which excludes servers hosting external static data. | +| sessionCookieName | text | Name of the cookie used for storing the session ID.
Default = "4DSID" | +| sessionCookiePath | text | "path" field of the session cookie. Used to control the scope of the session cookies. If you set, for example, the value "/4DACTION" for this selector, the client will only send a cookie for dynamic requests beginning with 4DACTION, and not for pictures, static pages, etc. | +| sessionIPAddressValidation | boolean | IP address validation for session cookies. For security reasons, by default the web server checks the IP address of each request containing a session cookie and rejects it if this address does not match the IP address used to create the cookie. In some specific applications, you may want to disable this validation and accept session cookies, even when their IP addresses do not match. For example when mobile devices switch between Wifi and 3G/4G networks, their IP address will change. In this case, you can allow clients to be able to continue using their web sessions even when the IP addresses change.
Note: this setting lowers the security level of your application | + +These properties are defined: + +1. using the `settings` parameter of the `webServer.start( )` method (except for read-only properties, see below), +2. if not used, using the `WEB SET OPTION` command (host applications only), +3. if not used, in the settings of the host application or the component. + +- If the web server is not started, the properties contain the values that will be used at the next web server startup. +- If the web server is started, the properties contain the actual values used by the web server (default settings could have been overriden by the `settings` parameter of the `webServer.start()` method. + +> *isRunning*, *name*, *openSSLVersion*, and *perfectForwardSecrecy* are read-only properties that cannot be predefined in the `settings` object parameter for the `start()` method. + + +## Scope of the 4D Web commands + +The 4D Language contains [several commands](https://doc.4d.com/4Dv18/4D/18/Web-Server.201-4504301.en.html) that can be used to control the web server. However, these commands are designed to work with a single (default) web server. When using these commands in the context of web server objects, make sure their scope is appropriate. + +| Command | Scope | +| ------------------------------- | ------------------------------------ | +| `SET DATABASE PARAMETER` | Host application web server | +| `WEB CLOSE SESSION` | Web server that received the request | +| `WEB GET BODY PART` | Web server that received the request | +| `WEB Get body part count` | Web server that received the request | +| `WEB Get Current Session ID` | Web server that received the request | +| `WEB GET HTTP BODY` | Web server that received the request | +| `WEB GET HTTP HEADER` | Web server that received the request | +| `WEB GET OPTION` | Host application web server | +| `WEB Get server info` | Host application web server | +| `WEB GET SESSION EXPIRATION` | Web server that received the request | +| `WEB Get session process count` | Web server that received the request | +| `WEB GET STATISTICS` | Host application web server | +| `WEB GET VARIABLES` | Web server that received the request | +| `WEB Is secured connection` | Web server that received the request | +| `WEB Is server running` | Host application web server | +| `WEB SEND BLOB` | Web server that received the request | +| `WEB SEND FILE` | Web server that received the request | +| `WEB SEND HTTP REDIRECT` | Web server that received the request | +| `WEB SEND RAW DATA` | Web server that received the request | +| `WEB SEND TEXT` | Web server that received the request | +| `WEB SET HOME PAGE` | Host application web server | +| `WEB SET HTTP HEADER` | Web server that received the request | +| `WEB SET OPTION` | Host application web server | +| `WEB SET ROOT FOLDER` | Host application web server | +| `WEB START SERVER` | Host application web server | +| `WEB STOP SERVER` | Host application web server | +| `WEB Validate digest` | Web server that received the request | From 5df6ba569594b0087009cb62e9ab8635445a4b99 Mon Sep 17 00:00:00 2001 From: arnaud4d
Date: Wed, 16 Dec 2020 16:19:01 +0100 Subject: [PATCH 074/260] New translations properties_RangeOfValues.md (French) --- .../FormObjects/properties_RangeOfValues.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/website/translated_docs/fr/FormObjects/properties_RangeOfValues.md b/website/translated_docs/fr/FormObjects/properties_RangeOfValues.md index eac186cade2a51..41f6be2cb6d239 100644 --- a/website/translated_docs/fr/FormObjects/properties_RangeOfValues.md +++ b/website/translated_docs/fr/FormObjects/properties_RangeOfValues.md @@ -1,10 +1,10 @@ --- id: propertiesRangeOfValues -title: Plage de valeurs +title: Range of Values --- --- -## Valeur par défaut +## Default value You can assign a default value to be entered in an input object. This property is useful for example when the input [data source](properties_Object.md#variable-or-expression) is a field: the default value is entered when a new record is first displayed. You can change the value unless the input area has been defined as [non-enterable](properties_Entry.md#enterable). @@ -27,13 +27,13 @@ You can use a sequence number to create a unique number for each record in the t > Do not make confusion between this property and the "[default values](properties_DataSource.md#default-list-of-values)" property that allows to fill a list box column with static values. -#### Grammaire JSON +#### JSON Grammar -| Nom | Type de données | Valeurs possibles | +| Name | Data Type | Possible Values | | ------------ | ----------------------------------- | ------------------------------------------ | | defaultValue | string, number, date, time, boolean | Any value and/or a stamp: "#D", "#H", "#N" | -#### Objets pris en charge +#### Objects Supported [Input](input_overview.md) @@ -43,16 +43,16 @@ You can use a sequence number to create a unique number for each record in the t ## Excluded List -Allows setting a list whose values cannot be entered in the object. Si une valeur exclue est saisie, elle n'est pas acceptée et un message d'erreur s'affiche. +Allows setting a list whose values cannot be entered in the object. If an excluded value is entered, it is not accepted and an error message is displayed. > If a specified list is hierarchical, only the items of the first level are taken into account. -#### Grammaire JSON +#### JSON Grammar -| Nom | Type de données | Valeurs possibles | -| ------------ | --------------- | ------------------------------- | -| excludedList | liste | Une liste de valeurs à exclure. | +| Name | Data Type | Possible Values | +| ------------ | --------- | -------------------------------- | +| excludedList | list | A list of values to be excluded. | -#### Objets pris en charge +#### Objects Supported [Combo Box](comboBox_overview.md) - [List Box Column](listbox_overview.md#list-box-columns) - [Input](input_overview.md) @@ -62,18 +62,18 @@ Allows setting a list whose values cannot be entered in the object. Si une valeu ## Required List -Limite les entrées valides aux éléments de la liste. Par exemple, si vous souhaitez utiliser une liste pour les titres de postes, afin que les entrées valides soient limitées aux titres qui ont été approuvés par la direction. +Restricts the valid entries to the items on the list. For example, you may want to use a required list for job titles so that valid entries are limited to titles that have been approved by management. -La création d'une liste obligatoire n'affiche pas automatiquement la liste lorsque le champ est sélectionné. Si vous souhaitez afficher la liste requise, assignez la même liste à la propriété [Choice List](properties_DataSource.md#choice-list). Cependant, contrairement à la propriété [Choice List](properties_DataSource.md#choice-list), lorsqu'une liste obligatoire est définie, la saisie au clavier n'est plus possible, seule la sélection d'une valeur de liste à l'aide du pop-up menu est autorisée. If different lists are defined using the [Choice List](properties_DataSource.md#choice-list) and Required List properties, the Required List property has priority. +Making a list required does not automatically display the list when the field is selected. If you want to display the required list, assign the same list to the [Choice List](properties_DataSource.md#choice-list) property. However, unlike the [Choice List](properties_DataSource.md#choice-list) property, when a required list is defined, keyboard entry is no longer possible, only the selection of a list value using the pop-up menu is allowed. If different lists are defined using the [Choice List](properties_DataSource.md#choice-list) and Required List properties, the Required List property has priority. > If a specified list is hierarchical, only the items of the first level are taken into account. -#### Grammaire JSON +#### JSON Grammar -| Nom | Type de données | Valeurs possibles | -| ------------ | --------------- | ---------------------------------- | -| requiredList | liste | Une liste de valeurs obligatoires. | +| Name | Data Type | Possible Values | +| ------------ | --------- | --------------------------- | +| requiredList | list | A list of mandatory values. | -#### Objets pris en charge +#### Objects Supported [Combo Box](comboBox_overview.md) - [List Box Column](listbox_overview.md#list-box-columns) - [Input](input_overview.md) From 74c8746512223c3a5b618e04c38512f91425a98f Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:04 +0100 Subject: [PATCH 075/260] New translations properties_Plugins.md (French) --- .../fr/FormObjects/properties_Plugins.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/website/translated_docs/fr/FormObjects/properties_Plugins.md b/website/translated_docs/fr/FormObjects/properties_Plugins.md index 797cbf4b5fd99c..3a39c7db45495e 100644 --- a/website/translated_docs/fr/FormObjects/properties_Plugins.md +++ b/website/translated_docs/fr/FormObjects/properties_Plugins.md @@ -4,22 +4,22 @@ title: Plug-ins --- --- -## Propriétés avancées +## Advanced Properties -Si des options avancées sont fournies par l'auteur du plug-in, un bouton **Propriétés avancées** peut être activé dans la liste de propriétés. In this case, you can click this button to set these options, usually through a custom dialog box. +If advanced options are provided by the author of the plug-in, an **Advanced Properties** button may be enabled in the Property list. In this case, you can click this button to set these options, usually through a custom dialog box. -Étant donné que la fonction Propriétés avancées est sous le contrôle de l'auteur du plug-in, les informations sur ces options avancées relèvent de la responsabilité du distributeur du plug-in. +Because the Advanced properties feature is under the control of the author of the plug-in, information about these Advanced options is the responsibility of the distributor of the plug-in. -#### Grammaire JSON +#### JSON Grammar -| Nom | Type de données | Valeurs possibles | -| ---------------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| customProperties | Texte | Propriétés spécifiques du plug-in, passées au plug-in sous forme de chaîne JSON s'il s'agit d'un objet ou sous forme de tampon binaire s'il s'agit d'une chaîne encodée en base64 | +| Name | Data Type | Possible Values | +| ---------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------- | +| customProperties | text | Plugin specific properties, passed to plugin as a JSON string if an object, or as a binary buffer if a base64 encoded string | -#### Objets pris en charge +#### Objects Supported -[Zone de plug-in](pluginArea_overview.md) +[Plug-in Area](pluginArea_overview.md) From 56f20499d19191c5da6ba21e4b6828aba7d1120d Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:06 +0100 Subject: [PATCH 076/260] New translations onDeleteAction.md (French) --- website/translated_docs/fr/Events/onDeleteAction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/translated_docs/fr/Events/onDeleteAction.md b/website/translated_docs/fr/Events/onDeleteAction.md index ae16c780ff3d45..505ad869d88384 100644 --- a/website/translated_docs/fr/Events/onDeleteAction.md +++ b/website/translated_docs/fr/Events/onDeleteAction.md @@ -3,7 +3,7 @@ id: onDeleteAction title: Sur action suppression --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | ----------------------------------------------------------------------------------------------- | ----------------------------------- | | 58 | [Hierarchical List](FormObjects/list_overview.md) - [List Box](FormObjects/listbox_overview.md) | The user attempts to delete an item | From 2d18fab05c60922a8d6775ada2e69409d78f1d0b Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:08 +0100 Subject: [PATCH 077/260] New translations onAlternativeClick.md (French) --- website/translated_docs/fr/Events/onAlternativeClick.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/translated_docs/fr/Events/onAlternativeClick.md b/website/translated_docs/fr/Events/onAlternativeClick.md index 45374c0278ed20..69ab04a846720f 100644 --- a/website/translated_docs/fr/Events/onAlternativeClick.md +++ b/website/translated_docs/fr/Events/onAlternativeClick.md @@ -3,7 +3,7 @@ id: onAlternativeClick title: Sur clic alternatif --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 38 | [Button](FormObjects/button_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox_overview.md#list-box-columns) | Buttons: The "arrow" area of a button is clicked List boxes: In a column of an object array, an ellipsis button ("alternateButton" attribute) is clicked | From 3d25305c4358928722c92a930969adfd386fb711 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:10 +0100 Subject: [PATCH 078/260] New translations onBeforeDataEntry.md (French) --- website/translated_docs/fr/Events/onBeforeDataEntry.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/translated_docs/fr/Events/onBeforeDataEntry.md b/website/translated_docs/fr/Events/onBeforeDataEntry.md index d39909a97c18c3..ccfa74ee9ace58 100644 --- a/website/translated_docs/fr/Events/onBeforeDataEntry.md +++ b/website/translated_docs/fr/Events/onBeforeDataEntry.md @@ -3,7 +3,7 @@ id: onBeforeDataEntry title: Sur avant saisie --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | | 41 | [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox_overview.md#list-box-columns) | A list box cell is about to change to editing mode | From 0313c7278a9c130d0836a92d8dad6294a8c1d280 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:13 +0100 Subject: [PATCH 079/260] New translations onBeforeKeystroke.md (French) --- .../fr/Events/onBeforeKeystroke.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/website/translated_docs/fr/Events/onBeforeKeystroke.md b/website/translated_docs/fr/Events/onBeforeKeystroke.md index 14ab919df9b693..d9f00a6862295d 100644 --- a/website/translated_docs/fr/Events/onBeforeKeystroke.md +++ b/website/translated_docs/fr/Events/onBeforeKeystroke.md @@ -3,21 +3,21 @@ id: onBeforeKeystroke title: Sue avant frappe clavier --- -| Code | Peut être appelé par | Définition | -| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | -| 17 | [4D Write Pro area](FormObjects/writeProArea_overview) - [Combo Box](FormObjects/comboBox_overview.md) - Form - [Input](FormObjects/input_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox_overview.md#list-box-columns) | Un caractère est sur le point d'être saisi dans l'objet qui a le focus. `Get edited text` returns the object's text **without** this character. | +| Code | Can be called by | Definition | +| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| 17 | [4D Write Pro area](FormObjects/writeProArea_overview) - [Combo Box](FormObjects/comboBox_overview.md) - Form - [Input](FormObjects/input_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox_overview.md#list-box-columns) | A character is about to be entered in the object that has the focus. `Get edited text` returns the object's text **without** this character. | ## Description -Après avoir sélectionné les propriétés d'événement `On Before Keystroke` et [`On After Keystroke`](onAfterKeystroke.md) pour un objet, vous pouvez détecter et gérer les frappes au sein de l'objet, en utilisant la commande `Form event` qui retournera `On Before Keystroke` puis [`On After Keystroke` ](onAfterKeystroke.md)(pour plus d'informations, veuillez vous reporter à la description de la commande `Get edited text`). +After the `On Before Keystroke` and [`On After Keystroke event`](onAfterKeystroke.md) properties are selected for an object, you can detect and handle the keystrokes within the object, using the `Form event code` command that will return `On Before Keystroke` and then [`On After Keystroke event`](onAfterKeystroke.md) (for more information, please refer to the description of the `Get edited text` command). -Ces événements sont également activés par des commandes de langage qui simulent une action utilisateur telle que `POST KEY`. +These events are also activated by language commands that simulate a user action like `POST KEY`. -Gardez à l'esprit que les modifications utilisateur qui ne sont pas effectuées à l'aide du clavier (coller, glisser-déposer, etc.) ne sont pas prises en compte. Pour traiter ces événements, vous devez utiliser [`On After Edit`](onAfterEdit.md). +Keep in mind that user modifications that are not carried out using the keyboard (paste, drag-drop, etc.) are not taken into account. To process these events, you must use [`On After Edit`](onAfterEdit.md). -> Les événements `On Before Keystroke` et `On After Keystroke` ne sont pas générés lors de l'utilisation d'une méthode de saisie. Une méthode de saisie (ou IME, Input Method Editor) est un programme ou un composant système qui peut être utilisé pour saisir des caractères ou des symboles complexes (par exemple, du japonais ou du chinois) à l'aide d'un clavier occidental. +> The `On Before Keystroke` and `On After Keystroke` events are not generated when using an input method. An input method (or IME, Input Method Editor) is a program or a system component that can be used to enter complex characters or symbols (for example, Japanese or Chinese) using a Western keyboard. -### Voir également +### See also [On After Keystroke](onAfterKeystroke.md). \ No newline at end of file From 81de3a2147d75d0165174eaa0e42c64782b2fffb Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:15 +0100 Subject: [PATCH 080/260] New translations onBeginDragOver.md (French) --- website/translated_docs/fr/Events/onBeginDragOver.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/translated_docs/fr/Events/onBeginDragOver.md b/website/translated_docs/fr/Events/onBeginDragOver.md index 05e3dc802a5f0f..638b197e4097be 100644 --- a/website/translated_docs/fr/Events/onBeginDragOver.md +++ b/website/translated_docs/fr/Events/onBeginDragOver.md @@ -3,7 +3,7 @@ id: onBeginDragOver title: Sur début survol --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- | | 17 | [4D Write Pro area](FormObjects/writeProArea_overview) - [Button](FormObjects/button_overview.md) - [Button Grid](FormObjects/buttonGrid_overview.md) - [Check Box](FormObjects/checkbox_overview.md) - [Dropdown list](FormObjects/dropdownList_Overview.md) - Form - [Hierarchical List](FormObjects/list_overview.md#overview) - [Input](FormObjects/input_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox_overview.md#list-box-columns) - [Picture Button](FormObjects/pictureButton_overview.md) - [Picture Pop up menu](FormObjects/picturePopupMenu_overview.md) - [Plug-in Area](FormObjects/pluginArea_overview.md#overview) - [Progress Indicators](FormObjects/progressIndicator.md) - [Radio Button](FormObjects/radio_overview.md) - [Ruler](FormObjects/ruler.md) - [Spinner](FormObjects/spinner.md) - [Splitter](FormObjects/splitters.md) - [Stepper](FormObjects/stepper.md) - [Tab control](FormObjects/tabControl.md) | An object is being dragged | From c390c93b9fbec9f481458ebd324605a77461743d Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:17 +0100 Subject: [PATCH 081/260] New translations onBeginUrlLoading.md (French) --- website/translated_docs/fr/Events/onBeginUrlLoading.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/translated_docs/fr/Events/onBeginUrlLoading.md b/website/translated_docs/fr/Events/onBeginUrlLoading.md index 330a1a09e1fffb..f7eb5de22cbe11 100644 --- a/website/translated_docs/fr/Events/onBeginUrlLoading.md +++ b/website/translated_docs/fr/Events/onBeginUrlLoading.md @@ -3,9 +3,9 @@ id: onBeginUrlLoading title: On Begin URL Loading --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | ------------------------------------------- | ----------------------------------- | -| 47 | [Zone Web](FormObjects/webArea_overview.md) | A new URL is loaded in the Web area | +| 47 | [Web Area](FormObjects/webArea_overview.md) | A new URL is loaded in the Web area | ## Description From 88665f3398462071b642dbfdf61d4c5e883d94b2 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:18 +0100 Subject: [PATCH 082/260] New translations onBoundVariableChange.md (French) --- website/translated_docs/fr/Events/onBoundVariableChange.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/translated_docs/fr/Events/onBoundVariableChange.md b/website/translated_docs/fr/Events/onBoundVariableChange.md index 7d4928731a877c..239aae38ad4eb0 100644 --- a/website/translated_docs/fr/Events/onBoundVariableChange.md +++ b/website/translated_docs/fr/Events/onBoundVariableChange.md @@ -3,9 +3,9 @@ id: onBoundVariableChange title: On Bound Variable Change --- -| Code | Peut être appelé par | Définition | -| ---- | -------------------- | ------------------------------------------- | -| 54 | Formulaire | The variable bound to a subform is modified | +| Code | Can be called by | Definition | +| ---- | ---------------- | ------------------------------------------- | +| 54 | Form | The variable bound to a subform is modified | ## Description From b2a8c180ddf9b428e4dfd95d8831aa83e09a5b53 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:21 +0100 Subject: [PATCH 083/260] New translations onClicked.md (French) --- website/translated_docs/fr/Events/onClicked.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/website/translated_docs/fr/Events/onClicked.md b/website/translated_docs/fr/Events/onClicked.md index ffff41c5100afe..225a15e1d22cc7 100644 --- a/website/translated_docs/fr/Events/onClicked.md +++ b/website/translated_docs/fr/Events/onClicked.md @@ -3,7 +3,7 @@ id: onClicked title: Sur clic --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------- | | 4 | [4D View Pro Area](FormObjects/viewProArea_overview.md) - [4D Write Pro area](FormObjects/writeProArea_overview) - [Button](FormObjects/button_overview.md) - [Button Grid](FormObjects/buttonGrid_overview.md) - [Check Box](FormObjects/checkbox_overview.md) - [Combo Box](FormObjects/comboBox_overview.md) - [Dropdown list](FormObjects/dropdownList_Overview.md) - Form - [Hierarchical List](FormObjects/list_overview.md#overview) - [Input](FormObjects/input_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox_overview.md#list-box-columns) - [Picture Button](FormObjects/pictureButton_overview.md) - [Picture Pop up menu](FormObjects/picturePopupMenu_overview.md) - [Plug-in Area](FormObjects/pluginArea_overview.md#overview) - [Progress Indicators](FormObjects/progressIndicator.md) - [Radio Button](FormObjects/radio_overview.md) - [Ruler](FormObjects/ruler.md) - [Spinner](FormObjects/spinner.md) - [Splitter](FormObjects/splitters.md) - [Stepper](FormObjects/stepper.md) - [Tab control](FormObjects/tabControl.md) | A click occurred on an object | @@ -34,15 +34,15 @@ If both events are selected for an object, the `On Clicked` and then the `On Dou This event is generated when the user clicks anywhere on a 4D View Pro document. On this context, the [event object](overview.md#event-object) returned by the `FORM Event` command contains: -| Propriété | Type | Description | -| ----------- | ----------- | ------------------------------ | -| code | entier long | Sur clic | -| description | Texte | "On Clicked" | -| objectName | Texte | 4D View Pro area name | -| sheetName | Texte | Name of the sheet of the event | -| range | object | Cell range | +| Property | Type | Description | +| ----------- | ------- | ------------------------------ | +| code | longint | Sur clic | +| description | text | "On Clicked" | +| objectName | text | 4D View Pro area name | +| sheetName | text | Name of the sheet of the event | +| range | object | Cell range | -#### Exemple +#### Example ```4d If(FORM Event.code=On Clicked) From 7dc1f4f286b41ae3d767a17877dc1df369527e4d Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:23 +0100 Subject: [PATCH 084/260] New translations onCloseBox.md (French) --- website/translated_docs/fr/Events/onCloseBox.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/website/translated_docs/fr/Events/onCloseBox.md b/website/translated_docs/fr/Events/onCloseBox.md index 0bfb4f742c3daf..5c0bff081375fc 100644 --- a/website/translated_docs/fr/Events/onCloseBox.md +++ b/website/translated_docs/fr/Events/onCloseBox.md @@ -3,16 +3,16 @@ id: onCloseBox title: On Close Box --- -| Code | Peut être appelé par | Définition | -| ---- | -------------------- | --------------------------------------- | -| 22 | Formulaire | The window’s close box has been clicked | +| Code | Can be called by | Definition | +| ---- | ---------------- | --------------------------------------- | +| 22 | Form | The window’s close box has been clicked | ## Description The `On Close Box` event is generated when the user clicks on the clos box of the window. -### Exemple +### Example This example shows how to respond to a close window event with a form used for record data entry: @@ -24,8 +24,6 @@ This example shows how to respond to a close window event with a form used for r :(Form event code=On Close Box) If(Modified record($vpFormTable->)) CONFIRM("This record has been modified. Save Changes?") - Save Changes?") - Save Changes?") If(OK=1) ACCEPT Else @@ -35,6 +33,5 @@ This example shows how to respond to a close window event with a form used for r CANCEL End if //... - //déclaration(s) End case ``` \ No newline at end of file From cb680afa9610f45dd8a44a383fc95a6807df9ec8 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:24 +0100 Subject: [PATCH 085/260] New translations onCloseDetail.md (French) --- website/translated_docs/fr/Events/onCloseDetail.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/translated_docs/fr/Events/onCloseDetail.md b/website/translated_docs/fr/Events/onCloseDetail.md index a0e9f5526674a0..1a918df966f165 100644 --- a/website/translated_docs/fr/Events/onCloseDetail.md +++ b/website/translated_docs/fr/Events/onCloseDetail.md @@ -3,7 +3,7 @@ id: onCloseDetail title: Sur fermeture corps --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | -------------------------------------------------- | -------------------------------------------------------------- | | 26 | Form - [List Box](FormObjects/listbox_overview.md) | You left the detail form and are going back to the output form | From 3562b1bfa90214bbaa56245970bf3adeccefb77a Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:28 +0100 Subject: [PATCH 086/260] New translations onCollapse.md (French) --- website/translated_docs/fr/Events/onCollapse.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/translated_docs/fr/Events/onCollapse.md b/website/translated_docs/fr/Events/onCollapse.md index bcaf2c2adb740e..f70bcda98f633e 100644 --- a/website/translated_docs/fr/Events/onCollapse.md +++ b/website/translated_docs/fr/Events/onCollapse.md @@ -3,7 +3,7 @@ id: onCollapse title: Sur contracter --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | | 44 | [Hierarchical List](FormObjects/list_overview.md#overview) - [List Box](FormObjects/listbox_overview.md) | An element of the hierarchical list or hierarchical list box has been collapsed using a click or a keystroke | @@ -14,5 +14,5 @@ title: Sur contracter - [Hierarchical list boxes](FormObjects/listbox_overview.md#hierarchical-list-boxes): This event is generated when a row of the hierarchical list box is collapsed. -### Voir également +### See also [Sur déployer](onExpand.md) \ No newline at end of file From 1ba6da9e97526c252a44b1173979561f110406be Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:30 +0100 Subject: [PATCH 087/260] New translations onColumnMoved.md (French) --- website/translated_docs/fr/Events/onColumnMoved.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/translated_docs/fr/Events/onColumnMoved.md b/website/translated_docs/fr/Events/onColumnMoved.md index 77fbb35304d3d4..4e3d82c46d0c6d 100644 --- a/website/translated_docs/fr/Events/onColumnMoved.md +++ b/website/translated_docs/fr/Events/onColumnMoved.md @@ -3,7 +3,7 @@ id: onColumnMoved title: Sur déplacement colonne --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | | 32 | [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox_overview.md#list-box-columns) | A list box column is moved by the user via drag and drop | From 7643edeeb0432cdc0738af4092bf5ae6b839ee64 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:32 +0100 Subject: [PATCH 088/260] New translations onColumnResize.md (French) --- .../fr/Events/onColumnResize.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/website/translated_docs/fr/Events/onColumnResize.md b/website/translated_docs/fr/Events/onColumnResize.md index fd419fabd42059..29f29c769d64e6 100644 --- a/website/translated_docs/fr/Events/onColumnResize.md +++ b/website/translated_docs/fr/Events/onColumnResize.md @@ -3,7 +3,7 @@ id: onColumnResize title: Sur redimensionnement colonne --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | | 33 | [4D View Pro Area](FormObjects/viewProArea_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox_overview.md#list-box-columns) | The width of a column is modified directly by the user or consequently to a form window resize | @@ -20,16 +20,16 @@ This event is generated when the width of a column in the list box is modified b This event is generated when the width of a column is modified by a user. On this context, the [event object](overview.md#event-object) returned by the `FORM Event` command contains: -| Propriété | Type | Description | -| ----------- | ----------- | ------------------------------------------------------------------- | -| code | entier long | Sur redimensionnement colonne | -| description | Texte | "On Column Resize" | -| objectName | Texte | 4D View Pro area name | -| sheetName | Texte | Name of the sheet of the event | -| range | object | Cell range of the columns whose widths have changed | -| header | boolean | True if the row header column (first column) is resized, else false | +| Property | Type | Description | +| ----------- | ------- | ------------------------------------------------------------------- | +| code | longint | Sur redimensionnement colonne | +| description | text | "On Column Resize" | +| objectName | text | 4D View Pro area name | +| sheetName | text | Name of the sheet of the event | +| range | object | Cell range of the columns whose widths have changed | +| header | boolean | True if the row header column (first column) is resized, else false | -#### Exemple +#### Example ```4d If(FORM Event.code=On Column Resize) From ca0d81f023ad0c641806e0e12863273023a66538 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:34 +0100 Subject: [PATCH 089/260] New translations onDataChange.md (French) --- website/translated_docs/fr/Events/onDataChange.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/translated_docs/fr/Events/onDataChange.md b/website/translated_docs/fr/Events/onDataChange.md index 0e62a62846fc98..d0ef7c294b5e00 100644 --- a/website/translated_docs/fr/Events/onDataChange.md +++ b/website/translated_docs/fr/Events/onDataChange.md @@ -3,7 +3,7 @@ id: onDataChange title: Sur données modifiées --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | | 20 | [4D Write Pro area](FormObjects/writeProArea_overview) - [Dropdown list](FormObjects/dropdownList_Overview.md) - Form - [Hierarchical List](FormObjects/list_overview.md) - [Input](FormObjects/input_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox_overview.md#list-box-columns) - [Plug-in Area](FormObjects/pluginArea_overview.md#overview) - [Progress Indicators](FormObjects/progressIndicator.md) - [Ruler](FormObjects/ruler.md) - [Spinner](FormObjects/spinner.md) - [Stepper](FormObjects/stepper.md) - [Subform](FormObjects/subform_overview.md) | An object data has been modified | From 55067c5b39353849a23ca5aac8fc519b400d7b50 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:36 +0100 Subject: [PATCH 090/260] New translations onDeactivate.md (French) --- website/translated_docs/fr/Events/onDeactivate.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/website/translated_docs/fr/Events/onDeactivate.md b/website/translated_docs/fr/Events/onDeactivate.md index 06babd10114d8f..28554948af4078 100644 --- a/website/translated_docs/fr/Events/onDeactivate.md +++ b/website/translated_docs/fr/Events/onDeactivate.md @@ -3,16 +3,16 @@ id: onDeactivate title: On Deactivate --- -| Code | Peut être appelé par | Définition | -| ---- | -------------------- | --------------------------------------------------- | -| 12 | Formulaire | The form’s window ceases to be the frontmost window | +| Code | Can be called by | Definition | +| ---- | ---------------- | --------------------------------------------------- | +| 12 | Form | The form’s window ceases to be the frontmost window | ## Description If the window of a form was the frontmost window, this event is called when the window is sent to the background. -Cet événement s'applique au formulaire dans son ensemble et non à un objet particulier. Consequently, if the `On Deactivate` form event property is selected, only the form will have its form method called. +This event applies to the form as a whole and not to a particular object. Consequently, if the `On Deactivate` form event property is selected, only the form will have its form method called. -### Voir également +### See also [Sur activation](onActivate.md) \ No newline at end of file From bcd7eb8d7738386d471eb3570c5210c4f8cffcba Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:38 +0100 Subject: [PATCH 091/260] New translations onDisplayDetail.md (French) --- website/translated_docs/fr/Events/onDisplayDetail.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/translated_docs/fr/Events/onDisplayDetail.md b/website/translated_docs/fr/Events/onDisplayDetail.md index 732fcabae0fe4b..e24b6b4a99a3eb 100644 --- a/website/translated_docs/fr/Events/onDisplayDetail.md +++ b/website/translated_docs/fr/Events/onDisplayDetail.md @@ -3,7 +3,7 @@ id: onDisplayDetail title: Sur affichage corps --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | -------------------------------------------------- | ------------------------------------------------------------------------------------------------- | | 8 | Form - [List Box](FormObjects/listbox_overview.md) | A record is about to be displayed in a list form or a row is about to be displayed in a list box. | @@ -30,7 +30,7 @@ In this context, the following sequence of calls to methods and form events is t Calling a 4D command that displays a dialog box from the `On Display Detail` event is not allowed and will cause a syntax error to occur. More particularly, the commands concerned are: `ALERT`, `DIALOG`, `CONFIRM`, `Request`, `ADD RECORD`, `MODIFY RECORD`, `DISPLAY SELECTION`, and `MODIFY SELECTION`. -### Liste box sélection +### Selection list box This event is generated when a row of a [**selection type**](FormObjects/listbox_overview.md#selection-list-boxes) list box is displayed. From e792fcb7149d39fe54a08748c5597b610c6b1e79 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:40 +0100 Subject: [PATCH 092/260] New translations onAfterKeystroke.md (French) --- .../fr/Events/onAfterKeystroke.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/website/translated_docs/fr/Events/onAfterKeystroke.md b/website/translated_docs/fr/Events/onAfterKeystroke.md index 7040b5da419dea..a403a3d54dff6f 100644 --- a/website/translated_docs/fr/Events/onAfterKeystroke.md +++ b/website/translated_docs/fr/Events/onAfterKeystroke.md @@ -3,22 +3,22 @@ id: onAfterKeystroke title: Sue après frappe clavier --- -| Code | Peut être appelé par | Définition | -| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| 28 | [4D Write Pro area](FormObjects/writeProArea_overview) - [Combo Box](FormObjects/comboBox_overview.md) - Form - [Input](FormObjects/input_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox_overview.md#list-box-columns) | Un caractère est sur le point d'être saisi dans l'objet qui a le focus. `Get edited text` returns the object's text **including** this character. | +| Code | Can be called by | Definition | +| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| 28 | [4D Write Pro area](FormObjects/writeProArea_overview) - [Combo Box](FormObjects/comboBox_overview.md) - Form - [Input](FormObjects/input_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox_overview.md#list-box-columns) | A character is about to be entered in the object that has the focus. `Get edited text` returns the object's text **including** this character. | ## Description -> L'événement `On After Keystroke` peut généralement être remplacé par l'événement On After Edit Date: Wed, 16 Dec 2020 16:19:42 +0100 Subject: [PATCH 093/260] New translations onDoubleClicked.md (French) --- .../fr/Events/onDoubleClicked.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/website/translated_docs/fr/Events/onDoubleClicked.md b/website/translated_docs/fr/Events/onDoubleClicked.md index 37321a524ac976..c8ef29f842df33 100644 --- a/website/translated_docs/fr/Events/onDoubleClicked.md +++ b/website/translated_docs/fr/Events/onDoubleClicked.md @@ -3,7 +3,7 @@ id: onDoubleClicked title: Sur double clic --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------ | | 13 | [4D View Pro Area](FormObjects/viewProArea_overview.md) - [4D Write Pro area](FormObjects/writeProArea_overview) - [Button](FormObjects/button_overview.md) - [Button Grid](FormObjects/buttonGrid_overview.md) - [Check Box](FormObjects/checkbox_overview.md) - [Combo Box](FormObjects/comboBox_overview.md) - [Dropdown list](FormObjects/dropdownList_Overview.md) - Form - [Hierarchical List](FormObjects/list_overview.md#overview) - [Input](FormObjects/input_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox_overview.md#list-box-columns) - [Picture Button](FormObjects/pictureButton_overview.md) - [Picture Pop up menu](FormObjects/picturePopupMenu_overview.md) - [Plug-in Area](FormObjects/pluginArea_overview.md#overview) - [Progress Indicators](FormObjects/progressIndicator.md) - [Radio Button](FormObjects/radio_overview.md) - [Ruler](FormObjects/ruler.md) - [Spinner](FormObjects/spinner.md) - [Splitter](FormObjects/splitters.md) - [Stepper](FormObjects/stepper.md) - [Tab control](FormObjects/tabControl.md) | A double click occurred on an object | @@ -20,15 +20,15 @@ If both events are selected for an object, the `On Clicked` and then the `On Dou This event is generated when the user doubl-clicks anywhere on a 4D View Pro document. On this context, the [event object](overview.md#event-object) returned by the `FORM Event` command contains: -| Propriété | Type | Description | -| ----------- | ----------- | ------------------------------ | -| code | entier long | 13 | -| description | Texte | "On Double Clicked" | -| objectName | Texte | 4D View Pro area name | -| sheetName | Texte | Name of the sheet of the event | -| range | object | Cell range | +| Property | Type | Description | +| ----------- | ------- | ------------------------------ | +| code | longint | 13 | +| description | text | "On Double Clicked" | +| objectName | text | 4D View Pro area name | +| sheetName | text | Name of the sheet of the event | +| range | object | Cell range | -#### Exemple +#### Example ```4d If(FORM Event.code=On Double Clicked) From 5ed3d4bc356493dde664d2a07b0115c679b4279b Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:44 +0100 Subject: [PATCH 094/260] New translations onDragOver.md (French) --- website/translated_docs/fr/Events/onDragOver.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/translated_docs/fr/Events/onDragOver.md b/website/translated_docs/fr/Events/onDragOver.md index 1df5eb3b8ddf1a..ac1f3264af1112 100644 --- a/website/translated_docs/fr/Events/onDragOver.md +++ b/website/translated_docs/fr/Events/onDragOver.md @@ -3,7 +3,7 @@ id: onDragOver title: Sur glisser --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------ | | 21 | [4D Write Pro area](FormObjects/writeProArea_overview) - [Button](FormObjects/button_overview.md) - [Button Grid](FormObjects/buttonGrid_overview.md) - [Check Box](FormObjects/checkbox_overview.md) - [Dropdown list](FormObjects/dropdownList_Overview.md) - [Hierarchical List](FormObjects/list_overview.md#overview) - [Input](FormObjects/input_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox_overview.md#list-box-columns) - [Picture Button](FormObjects/pictureButton_overview.md) - [Picture Pop up menu](FormObjects/picturePopupMenu_overview.md) - [Plug-in Area](FormObjects/pluginArea_overview.md#overview) - [Progress Indicators](FormObjects/progressIndicator.md) - [Radio Button](FormObjects/radio_overview.md) - [Ruler](FormObjects/ruler.md) - [Spinner](FormObjects/spinner.md) - [Splitter](FormObjects/splitters.md) - [Stepper](FormObjects/stepper.md) - [Tab control](FormObjects/tabControl.md) | Data could be dropped onto an object | @@ -26,5 +26,5 @@ The `On Drag Over` event is the means by which you control the first phase of a The code handling an `On Drag Over` event should be short and execute quickly, because that event is sent repeatedly to the current destination object, due to the movements of the mouse. -#### Voir également +#### See also [`Sur début survol`](onBeginDragOver.md) \ No newline at end of file From ed98e2fda058e3f68d2a799aca30c5da3f77f167 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:46 +0100 Subject: [PATCH 095/260] New translations onDrop.md (French) --- website/translated_docs/fr/Events/onDrop.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/translated_docs/fr/Events/onDrop.md b/website/translated_docs/fr/Events/onDrop.md index a98c854be5b24e..10b471fc4b5645 100644 --- a/website/translated_docs/fr/Events/onDrop.md +++ b/website/translated_docs/fr/Events/onDrop.md @@ -3,7 +3,7 @@ id: onDrop title: Sur déposer --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------ | | 16 | [4D Write Pro area](FormObjects/writeProArea_overview) - [Button](FormObjects/button_overview.md) - [Button Grid](FormObjects/buttonGrid_overview.md) - [Check Box](FormObjects/checkbox_overview.md) - [Dropdown list](FormObjects/dropdownList_Overview.md) - Form - [Hierarchical List](FormObjects/list_overview.md#overview) - [Input](FormObjects/input_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox_overview.md#list-box-columns) - [Picture Button](FormObjects/pictureButton_overview.md) - [Picture Pop up menu](FormObjects/picturePopupMenu_overview.md) - [Plug-in Area](FormObjects/pluginArea_overview.md#overview) - [Progress Indicators](FormObjects/progressIndicator.md) - [Radio Button](FormObjects/radio_overview.md) - [Ruler](FormObjects/ruler.md) - [Spinner](FormObjects/spinner.md) - [Splitter](FormObjects/splitters.md) - [Stepper](FormObjects/stepper.md) - [Tab control](FormObjects/tabControl.md) | Data has been dropped onto an object | @@ -16,5 +16,5 @@ This event is not sent to the object if the drag was not accepted during the [`O -#### Voir également +#### See also [`Sur début survol`](onBeginDragOver.md) \ No newline at end of file From 16809a556a35546653b855245a0a2481945d50ae Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:48 +0100 Subject: [PATCH 096/260] New translations onEndUrlLoading.md (French) --- website/translated_docs/fr/Events/onEndUrlLoading.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/translated_docs/fr/Events/onEndUrlLoading.md b/website/translated_docs/fr/Events/onEndUrlLoading.md index c81f3db1961f5b..d709c273a971bb 100644 --- a/website/translated_docs/fr/Events/onEndUrlLoading.md +++ b/website/translated_docs/fr/Events/onEndUrlLoading.md @@ -3,9 +3,9 @@ id: onEndUrlLoading title: On End URL Loading --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | ------------------------------------------- | --------------------------------------------- | -| 49 | [Zone Web](FormObjects/webArea_overview.md) | All the resources of the URL have been loaded | +| 49 | [Web Area](FormObjects/webArea_overview.md) | All the resources of the URL have been loaded | ## Description From e6b9bc3ff72df47f30dfaeb36aefd0d3281416cf Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:50 +0100 Subject: [PATCH 097/260] New translations onExpand.md (French) --- website/translated_docs/fr/Events/onExpand.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/translated_docs/fr/Events/onExpand.md b/website/translated_docs/fr/Events/onExpand.md index 4316ad953c2406..1ed4b237d48d52 100644 --- a/website/translated_docs/fr/Events/onExpand.md +++ b/website/translated_docs/fr/Events/onExpand.md @@ -3,7 +3,7 @@ id: onExpand title: Sur déployer --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | | 44 | [Hierarchical List](FormObjects/list_overview.md#overview) - [List Box](FormObjects/listbox_overview.md) | An element of the hierarchical list or hierarchical list box has been expanded using a click or a keystroke | @@ -14,5 +14,5 @@ title: Sur déployer - [Hierarchical list boxes](FormObjects/listbox_overview.md#hierarchical-list-boxes): This event is generated when a row of the hierarchical list box is expanded. -### Voir également +### See also [Sur contracter](onCollapse.md) \ No newline at end of file From a1823cbbaa3385bc5f5dcf4c7c3a67001fffe2af Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:52 +0100 Subject: [PATCH 098/260] New translations onFooterClick.md (French) --- website/translated_docs/fr/Events/onFooterClick.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/translated_docs/fr/Events/onFooterClick.md b/website/translated_docs/fr/Events/onFooterClick.md index a863e202ae7644..ce240164e27c7c 100644 --- a/website/translated_docs/fr/Events/onFooterClick.md +++ b/website/translated_docs/fr/Events/onFooterClick.md @@ -3,7 +3,7 @@ id: onFooterClick title: Sur clic pied --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | | 57 | [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox_overview.md#list-box-columns) | A click occurs in the footer of a list box column | From eeb4e836ffecf186b3c21bacef5e1743bcc9610a Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:54 +0100 Subject: [PATCH 099/260] New translations onGettingFocus.md (French) --- website/translated_docs/fr/Events/onGettingFocus.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/translated_docs/fr/Events/onGettingFocus.md b/website/translated_docs/fr/Events/onGettingFocus.md index e49076ae6335cc..c86645d8b2e85f 100644 --- a/website/translated_docs/fr/Events/onGettingFocus.md +++ b/website/translated_docs/fr/Events/onGettingFocus.md @@ -3,7 +3,7 @@ id: onGettingFocus title: On getting focus --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- | | 15 | [4D View Pro Area](FormObjects/viewProArea_overview.md) - [4D Write Pro area](FormObjects/writeProArea_overview) - [Button](FormObjects/button_overview.md) - [Check Box](FormObjects/checkbox_overview.md) - [Combo Box](FormObjects/comboBox_overview.md) - Form - [Hierarchical List](FormObjects/list_overview.md#overview) - [Input](FormObjects/input_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox_overview.md#list-box-columns) - [Plug-in Area](FormObjects/pluginArea_overview.md#overview) - [Progress Indicators](FormObjects/progressIndicator.md) - [Radio Button](FormObjects/radio_overview.md) - [Ruler](FormObjects/ruler.md) - [Spinner](FormObjects/spinner.md) - [Stepper](FormObjects/stepper.md) - [Subform](FormObjects/subform_overview.md) - [Web area](FormObjects/webArea_overview.md) | A form object is getting the focus | From 19785d51697256158d66a12c1d02cad6903e639f Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:57 +0100 Subject: [PATCH 100/260] New translations onHeader.md (French) --- website/translated_docs/fr/Events/onHeader.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/translated_docs/fr/Events/onHeader.md b/website/translated_docs/fr/Events/onHeader.md index 3ad80eaab9ce72..f77341d85b2841 100644 --- a/website/translated_docs/fr/Events/onHeader.md +++ b/website/translated_docs/fr/Events/onHeader.md @@ -3,7 +3,7 @@ id: onHeader title: Sur entête --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | 5 | [4D Write Pro area](FormObjects/writeProArea_overview) - [Button](FormObjects/button_overview.md) - [Button Grid](FormObjects/buttonGrid_overview.md) - [Check Box](FormObjects/checkbox_overview.md) - [Dropdown list](FormObjects/dropdownList_Overview.md) - Form (list form only) - [Hierarchical List](FormObjects/list_overview.md#overview) - [Input](FormObjects/input_overview.md) - [Picture Button](FormObjects/pictureButton_overview.md) - [Picture Pop up menu](FormObjects/picturePopupMenu_overview.md) - [Plug-in Area](FormObjects/pluginArea_overview.md#overview) - [Progress Indicators](FormObjects/progressIndicator.md) - [Radio Button](FormObjects/radio_overview.md) - [Ruler](FormObjects/ruler.md) - [Spinner](FormObjects/spinner.md) - [Splitter](FormObjects/splitters.md) - [Stepper](FormObjects/stepper.md) - [Tab control](FormObjects/tabControl.md) | The form's header area is about to be printed or displayed. | From de8d43e46ba3b6afbf7da7ee2759cc484112821e Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:19:59 +0100 Subject: [PATCH 101/260] New translations onHeaderClick.md (French) --- .../fr/Events/onHeaderClick.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/website/translated_docs/fr/Events/onHeaderClick.md b/website/translated_docs/fr/Events/onHeaderClick.md index bd253479184b5e..dab8355f71a907 100644 --- a/website/translated_docs/fr/Events/onHeaderClick.md +++ b/website/translated_docs/fr/Events/onHeaderClick.md @@ -3,7 +3,7 @@ id: onHeaderClick title: Sur clic entête --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | | 42 | [4D View Pro Area](FormObjects/viewProArea_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox_overview.md#list-box-columns) | A click occurs in a column header | @@ -27,16 +27,16 @@ If the [Sortable](FormObjects/properties_Action.md#sortable) property is not sel This event is generated when the user clicks on a column or row header in a 4D View Pro document. In this context, the [event object](overview.md#event-object) returned by the `FORM Event` command contains: -| Propriété | Type | Description | -| ----------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------- | -| code | entier long | 42 | -| description | Texte | "On Header Click" | -| objectName | Texte | 4D View Pro area name | -| sheetName | Texte | Name of the sheet of the event | -| range | object | Cell range | -| sheetArea | entier long | The sheet location where the event took place: 0: The crossing area between column number/letter headers (top left of the sheet) 1: The column headers (area indicating the column numbers/letters) 2: The row headers (area indicating the row numbers) | +| Property | Type | Description | +| ----------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| code | longint | 42 | +| description | text | "On Header Click" | +| objectName | text | 4D View Pro area name | +| sheetName | text | Name of the sheet of the event | +| range | object | Cell range | +| sheetArea | longint | The sheet location where the event took place:0: The crossing area between column number/letter headers (top left of the sheet) 1: The column headers (area indicating the column numbers/letters) 2: The row headers (area indicating the row numbers) | -#### Exemple +#### Example ```4d If(FORM Event.code=On Header Click) From 234a8d82728bb6818e6afed93c3743360028eefd Mon Sep 17 00:00:00 2001 From: arnaud4dDate: Wed, 16 Dec 2020 16:20:03 +0100 Subject: [PATCH 102/260] New translations onLoad.md (French) --- website/translated_docs/fr/Events/onLoad.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/translated_docs/fr/Events/onLoad.md b/website/translated_docs/fr/Events/onLoad.md index c9fe3362c0522f..0a803c759a9503 100644 --- a/website/translated_docs/fr/Events/onLoad.md +++ b/website/translated_docs/fr/Events/onLoad.md @@ -3,7 +3,7 @@ id: onLoad title: On Load --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | | 1 | [4D View Pro Area](FormObjects/viewProArea_overview.md) - [4D Write Pro area](FormObjects/writeProArea_overview) - [Button](FormObjects/button_overview.md) - [Button Grid](FormObjects/buttonGrid_overview.md) - [Check Box](FormObjects/checkbox_overview.md) - [Combo Box](FormObjects/comboBox_overview.md) - [Dropdown list](FormObjects/dropdownList_Overview.md) - Form - [Hierarchical List](FormObjects/list_overview.md#overview) - [Input](FormObjects/input_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox_overview.md#list-box-columns) - [Picture Button](FormObjects/pictureButton_overview.md) - [Picture Pop up menu](FormObjects/picturePopupMenu_overview.md) - [Plug-in Area](FormObjects/pluginArea_overview.md#overview) - [Progress Indicators](FormObjects/progressIndicator.md) - [Radio Button](FormObjects/radio_overview.md) - [Ruler](FormObjects/ruler.md) - [Spinner](FormObjects/spinner.md) - [Splitter](FormObjects/splitters.md) - [Stepper](FormObjects/stepper.md) - [Subform](FormObjects/subform_overview.md) - [Tab control](FormObjects/tabControl.md) - [Web Area](FormObjects/webArea_overview.md) | The form is about to be displayed or printed | @@ -17,11 +17,11 @@ All the objects of the form (from any page) whose `On Load` object event propert > The `On Load` and [`On Unload`](onUnload.md) events are generated for objects if they are enabled for both the objects and the form to which the objects belong. If the events are enabled for objects only, they will not occur; these two events must also be enabled at the form level. -### Sous-formulaire +### Subform The `On Load` event is generated when opening the subform (this event must also have been activated at the parent form level in order to be taken into account). The event is generated before those of the parent form. Also note that, in accordance with the operating principles of form events, if the subform is placed on a page other than page 0 or 1, this event will only be generated when that page is displayed (and not when the form is displayed). -### Voir également +### See also [`On Unload`](onUnload.md) \ No newline at end of file From cdcaa2a0579c58362ea489ac392481df6a52aca5 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:20:05 +0100 Subject: [PATCH 103/260] New translations onLoadRecord.md (French) --- website/translated_docs/fr/Events/onLoadRecord.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/translated_docs/fr/Events/onLoadRecord.md b/website/translated_docs/fr/Events/onLoadRecord.md index d3ecfc68df0f86..4adf64d7543572 100644 --- a/website/translated_docs/fr/Events/onLoadRecord.md +++ b/website/translated_docs/fr/Events/onLoadRecord.md @@ -3,9 +3,9 @@ id: onLoadRecord title: Sur chargement ligne --- -| Code | Peut être appelé par | Définition | -| ---- | -------------------- | ------------------------------------------------------------------- | -| 40 | Formulaire | During user entry in list, a record is loaded and a field is edited | +| Code | Can be called by | Definition | +| ---- | ---------------- | ------------------------------------------------------------------- | +| 40 | Form | During user entry in list, a record is loaded and a field is edited | ## Description From 4eb022a70816b758ff498e10c191b60b7e96e957 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:20:07 +0100 Subject: [PATCH 104/260] New translations onLongClick.md (French) --- .../translated_docs/fr/Events/onLongClick.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/website/translated_docs/fr/Events/onLongClick.md b/website/translated_docs/fr/Events/onLongClick.md index 24fa5a4818db50..46063597b2a71d 100644 --- a/website/translated_docs/fr/Events/onLongClick.md +++ b/website/translated_docs/fr/Events/onLongClick.md @@ -3,9 +3,9 @@ id: onLongClick title: Sur clic long --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | ---------------------------------------- | ------------------------------------------------------------------------------------ | -| 39 | [Bouton](FormObjects/button_overview.md) | A button is clicked and the mouse button remains pushed for a certain length of time | +| 39 | [Button](FormObjects/button_overview.md) | A button is clicked and the mouse button remains pushed for a certain length of time | ## Description @@ -14,17 +14,17 @@ This event is generated when a button receives a click and the mouse button is h This event can be generated for the following button styles: -- [Barre d’outils](FormObjects/button_overview.md#toolbar) +- [Toolbar](FormObjects/button_overview.md#toolbar) - [Bevel](FormObjects/button_overview.md#bevel) -- [Bevel arrondi](FormObjects/button_overview.md#rounded-bevel) +- [Rounded Bevel](FormObjects/button_overview.md#rounded-bevel) - [OS X Gradient](FormObjects/button_overview.md#os-x-gradient) -- [OS X Texture](FormObjects/button_overview.md#os-x-textured) +- [OS X Textured](FormObjects/button_overview.md#os-x-textured) - [Office XP](FormObjects/button_overview.md#office-xp) -- [Aide](FormObjects/button_overview.md#help) -- [Rond](FormObjects/button_overview.md#circle) -- [Personnalisé](FormObjects/button_overview.md#custom) +- [Help](FormObjects/button_overview.md#help) +- [Circle](FormObjects/button_overview.md#circle) +- [Custom](FormObjects/button_overview.md#custom) This event is generally used to display pop-up menus in case of long button clicks. The [`On Clicked`](onClicked.md) event, if enabled, is generated if the user releases the mouse button before the "long click" time limit. -### Voir également +### See also [`Sur clic alternatif`](onAlternativeClick.md) \ No newline at end of file From cbd6d7da252940242b849474649515f5dc91c1d5 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:20:09 +0100 Subject: [PATCH 105/260] New translations onLosingFocus.md (French) --- website/translated_docs/fr/Events/onLosingFocus.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/translated_docs/fr/Events/onLosingFocus.md b/website/translated_docs/fr/Events/onLosingFocus.md index 9d94b10ab7f84d..6c220efb0a9bd1 100644 --- a/website/translated_docs/fr/Events/onLosingFocus.md +++ b/website/translated_docs/fr/Events/onLosingFocus.md @@ -3,7 +3,7 @@ id: onLosingFocus title: Sur perte focus --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | | 14 | [4D View Pro Area](FormObjects/viewProArea_overview.md) - [4D Write Pro area](FormObjects/writeProArea_overview) - [Button](FormObjects/button_overview.md) - [Check Box](FormObjects/checkbox_overview.md) - [Combo Box](FormObjects/comboBox_overview.md) - Form - [Hierarchical List](FormObjects/list_overview.md#overview) - [Input](FormObjects/input_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox_overview.md#list-box-columns) - [Plug-in Area](FormObjects/pluginArea_overview.md#overview) - [Progress Indicators](FormObjects/progressIndicator.md) - [Radio Button](FormObjects/radio_overview.md) - [Ruler](FormObjects/ruler.md) - [Spinner](FormObjects/spinner.md) - [Stepper](FormObjects/stepper.md) - [Subform](FormObjects/subform_overview.md) - [Web area](FormObjects/webArea_overview.md) | A form object is losing the focus | From 38bd2953489432f8700464e6e9dbc3c4ce4e3142 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:20:11 +0100 Subject: [PATCH 106/260] New translations onMenuSelected.md (French) --- website/translated_docs/fr/Events/onMenuSelected.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/translated_docs/fr/Events/onMenuSelected.md b/website/translated_docs/fr/Events/onMenuSelected.md index 608e0183031cf5..cdcb510c49b3f0 100644 --- a/website/translated_docs/fr/Events/onMenuSelected.md +++ b/website/translated_docs/fr/Events/onMenuSelected.md @@ -3,9 +3,9 @@ id: onMenuSelected title: Sur menu sélectionné --- -| Code | Peut être appelé par | Définition | -| ---- | -------------------- | ------------------------------------------------------ | -| 18 | Formulaire | A menu item has been chosen in the associated menu bar | +| Code | Can be called by | Definition | +| ---- | ---------------- | ------------------------------------------------------ | +| 18 | Form | A menu item has been chosen in the associated menu bar | ## Description From 647c33a4bacf14f7f35c25725a13d7743a38c797 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:20:13 +0100 Subject: [PATCH 107/260] New translations onAfterSort.md (French) --- website/translated_docs/fr/Events/onAfterSort.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/translated_docs/fr/Events/onAfterSort.md b/website/translated_docs/fr/Events/onAfterSort.md index 42960efc05a02a..d125cb3fe934a5 100644 --- a/website/translated_docs/fr/Events/onAfterSort.md +++ b/website/translated_docs/fr/Events/onAfterSort.md @@ -3,7 +3,7 @@ id: onAfterSort title: Sur après tri --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | ----------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | | 30 | [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox_overview.md#list-box-columns) | A standard sort has just been carried out in a list box column. | From 484301dd8d4da9137bbe3173b3883ec8c0847c55 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:20:16 +0100 Subject: [PATCH 108/260] New translations onAfterEdit.md (French) --- .../translated_docs/fr/Events/onAfterEdit.md | 72 +++++++++---------- 1 file changed, 34 insertions(+), 38 deletions(-) diff --git a/website/translated_docs/fr/Events/onAfterEdit.md b/website/translated_docs/fr/Events/onAfterEdit.md index 8eda378ab28191..955d969bdbff4d 100644 --- a/website/translated_docs/fr/Events/onAfterEdit.md +++ b/website/translated_docs/fr/Events/onAfterEdit.md @@ -3,57 +3,57 @@ id: onAfterEdit title: Sur après modification --- -| Code | Peut être appelé par | Définition | -| ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| 45 | [Zone 4D View Pro](FormObjects/viewProArea_overview) - [Zone 4D Write Pro](FormObjects/writeProArea_overview) - [Combo Box](FormObjects/comboBox_overview.md) - Formulaire - [Zone de saisie](FormObjects/input_overview.md) - [Liste hiérarchique](FormObjects/list_overview.md) - [List Box](FormObjects/listbox_overview.md) - [Colonne List Box](FormObjects/listbox_overview.md#list-box-columns) | The contents of the enterable object that has the focus has just been modified | +| Code | Can be called by | Definition | +| ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | +| 45 | [4D View Pro area](FormObjects/viewProArea_overview) - [4D Write Pro area](FormObjects/writeProArea_overview) - [Combo Box](FormObjects/comboBox_overview.md) - Form - [Input](FormObjects/input_overview.md) - [Hierarchical List](FormObjects/list_overview.md) - [List Box](FormObjects/listbox_overview.md) - [List Box Column](FormObjects/listbox_overview.md#list-box-columns) | The contents of the enterable object that has the focus has just been modified | ## Description -### Cas général +### General case -Cet événement peut être utilisé pour filtrer la saisie de données dans les objets saisissables au clavier au niveau le plus bas. +This event can be used filter the data entry in keyboard enterable objects at the lowest level. When it is used, this event is generated after each change made to the contents of an enterable object, regardless of the action that caused the change, *i.e.*: -- Actions d'édition standard qui modifient le contenu comme les actions coller, couper, supprimer ou annuler; -- Déposer une valeur (action similaire à coller); -- Toute entrée au clavier effectuée par l'utilisateur; dans ce cas, l'événement `On After Edit` est généré après les événements [`On Before Keystroke`](onBeforeKeystroke.md) et [`On After Keystroke`](onAfterKeystroke.md), s'ils sont utilisés. -- Toute modification apportée à l'aide d'une commande de langage qui simule une action de l'utilisateur (c'est-à-dire `POST KEY`). +- Standard editing actions which modify content like paste, cut, delete or cancel; +- Dropping a value (action similar to paste); +- Any keyboard entry made by the user; in this case, the `On After Edit` event is generated after the [`On Before Keystroke`](onBeforeKeystroke.md) and [`On After Keystroke`](onAfterKeystroke.md) events, if they are used. +- Any modification made using a language command that simulates a user action (i.e., `POST KEY`). ### 4D View Pro The object returned by the `FORM Event` command contains: -| Propriété | Type | Description | -| ----------- | ----------- | --------------------------------------------------------------------------------------------------- | -| code | entier long | Sur après modification | -| description | Texte | "On After Edit" | -| objectName | Texte | 4D View Pro area name | -| sheetName | Texte | Name of the sheet of the event | -| action | Texte | "editChange", "valueChanged", "DragDropBlock", "DragFillBlock", "formulaChanged", "clipboardPasted" | +| Property | Type | Description | +| ----------- | ------- | --------------------------------------------------------------------------------------------------- | +| code | longint | Sur après modification | +| description | text | "On After Edit" | +| objectName | text | 4D View Pro area name | +| sheetName | text | Name of the sheet of the event | +| action | text | "editChange", "valueChanged", "DragDropBlock", "DragFillBlock", "formulaChanged", "clipboardPasted" | Depending on the `action` property value, the [event object](overview.md#event-object) will contain additional properties. #### action = editChange -| Propriété | Type | Description | +| Property | Type | Description | | ----------- | ------- | --------------------------------- | | range | object | Cell range | | editingText | variant | The value from the current editor | #### action = valueChanged -| Propriété | Type | Description | -| --------- | ------- | --------------------------- | -| range | object | Cell range | -| oldValue | variant | Value of cell before change | -| newValue | variant | Value of cell after change | +| Property | Type | Description | +| -------- | ------- | --------------------------- | +| range | object | Cell range | +| oldValue | variant | Value of cell before change | +| newValue | variant | Value of cell after change | #### action = DragDropBlock -| Propriété | Type | Description | +| Property | Type | Description | | --------- | ------- | --------------------------------------------------- | | fromRange | object | Range of source cell range (being dragged) | | toRange | object | Range of the destination cell range (drop location) | @@ -63,7 +63,7 @@ Depending on the `action` property value, the [event object](overview.md#event-o #### action = DragFillBlock -| Propriété | Type | Description | +| Property | Type | Description | | --------- | ------ | ------------------- | | fillRange | object | Range used for fill | autoFillType|longint|Value used for the fill. 0: Cells are filled with all data (values, formatting, and formulas) 1: Cells are filled with automatically sequential data 2: Cells are filled with formatting only 3: Cells are filled with values but not formatting 4: Values are removed from the cells 5: Cells are filled automatically| |fillDirection|longint|Direction of the fill. 0: The cells to the left are filled 1: The cells to the right are filled 2: The cells above are filled 3: The cells below are filled| @@ -71,21 +71,21 @@ Depending on the `action` property value, the [event object](overview.md#event-o #### action = formulaChanged -| Propriété | Type | Description | -| --------- | ------ | ------------------- | -| range | object | Cell range | -| formula | Texte | The formula entered | +| Property | Type | Description | +| -------- | ------ | ------------------- | +| range | object | Cell range | +| formula | text | The formula entered | #### action = clipboardPasted -| Propriété | Type | Description | -| ----------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| range | object | Cell range | -| pasteOption | entier long | Specifies what is pasted from the clipboard: 0: Everything is pasted (values, formatting, and formulas) 1: Only values are pasted 2: Only the formatting is pasted 3: Only formulas are pasted 4: Values and formatting are pasted (not formulas) 5: Formulas and formatting are pasted (not values) | -| pasteData | object | The data from the clipboard to be pasted "text" (text): The text from the clipboard "html" (text): The HTML from the clipboard | +| Property | Type | Description | +| ----------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| range | object | Cell range | +| pasteOption | longint | Specifies what is pasted from the clipboard: 0: Everything is pasted (values, formatting, and formulas) 1: Only values are pasted 2: Only the formatting is pasted 3: Only formulas are pasted 4: Values and formatting are pasted (not formulas) 5: Formulas and formatting are pasted (not values) | +| pasteData | object | The data from the clipboard to be pasted "text" (text): The text from the clipboard "html" (text): The HTML from the clipboard | -#### Exemple +#### Example Here is an example handling an `On After Edit` event: @@ -96,10 +96,6 @@ Here is an example handling an `On After Edit` event: from "+String(FORM Event.oldValue)+\ " to "+String(FORM Event.newValue)+"!") End if - End if - End if - End if - End if End if ``` From 4efbbb1198a2606b5d644b9d2e471edeb14a3c08 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:20:17 +0100 Subject: [PATCH 109/260] New translations onMouseLeave.md (French) --- website/translated_docs/fr/Events/onMouseLeave.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/translated_docs/fr/Events/onMouseLeave.md b/website/translated_docs/fr/Events/onMouseLeave.md index da9471aae28032..0e9c67c23752be 100644 --- a/website/translated_docs/fr/Events/onMouseLeave.md +++ b/website/translated_docs/fr/Events/onMouseLeave.md @@ -3,7 +3,7 @@ id: onMouseLeave title: Sur fin survol --- -| Code | Peut être appelé par | Définition | +| Code | Can be called by | Definition | | ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | | 36 | [4D Write Pro area](FormObjects/writeProArea_overview) - [Button](FormObjects/button_overview.md) - [Button Grid](FormObjects/buttonGrid_overview.md) - [Check Box](FormObjects/checkbox_overview.md) - [Combo Box](FormObjects/comboBox_overview.md) - [Dropdown list](FormObjects/dropdownList_Overview.md) - Form - [Hierarchical List](FormObjects/list_overview.md#overview) - [Input](FormObjects/input_overview.md) - [List Box](FormObjects/listbox_overview.md) - [Picture Button](FormObjects/pictureButton_overview.md) - [Picture Pop up menu](FormObjects/picturePopupMenu_overview.md) - [Plug-in Area](FormObjects/pluginArea_overview.md#overview) - [Progress Indicators](FormObjects/progressIndicator.md) - [Radio Button](FormObjects/radio_overview.md) - [Ruler](FormObjects/ruler.md) - [Spinner](FormObjects/spinner.md) - [Splitter](FormObjects/splitters.md) - [Stepper](FormObjects/stepper.md) - [Tab control](FormObjects/tabControl.md) | The mouse cursor leaves the graphic area of an object | @@ -21,7 +21,7 @@ Objects that are made invisible using the `OBJECT SET VISIBLE` command or the [V If the `On Mouse Leave` event has been checked for the form, it is generated for each form object. If it is checked for an object, it is generated only for that object. When there are superimposed objects, the event is generated by the first object capable of managing it that is found going in order from top level to bottom. -### Voir également +### See also - [`Sur survol`](onMouseMove.md) - [`Sur fin survol`](onMouseLeave.md) \ No newline at end of file From c53f457037762634dde39f5e7fd49517d0b8db08 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:20:20 +0100 Subject: [PATCH 110/260] New translations dt_null_undefined.md (French) --- .../fr/Concepts/dt_null_undefined.md | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/website/translated_docs/fr/Concepts/dt_null_undefined.md b/website/translated_docs/fr/Concepts/dt_null_undefined.md index 17f35329371edf..7d309c32bb55d4 100644 --- a/website/translated_docs/fr/Concepts/dt_null_undefined.md +++ b/website/translated_docs/fr/Concepts/dt_null_undefined.md @@ -5,21 +5,21 @@ title: Null et Indefinie ## Null -Null est un type de données particulier avec une seule valeur possible : **null**. Cette valeur est retournée par une expression qui ne contient aucune valeur. +Null is a special data type with only one possible value: **null**. This value is returned by an expression that does not contain any value. -Dans le langage de 4D et pour les attributs des champs objets, les valeurs null sont gérées via la commande `Null`. Cette commande peut être utilisée avec les expressions suivantes pour fixer ou comparer la valeur null : +In the 4D language and for object field attributes, null values are managed through the `Null` function. This function can be used with the following expressions for setting or comparing the null value: -- attributs d'objets -- éléments de collections -- variables de type objet, collection, pointeur, image ou variant. +- object attributes +- collection elements +- variables of the object, collection, pointer, picture, or variant type. -## Indéfini +## Undefined -Indéfinie n'est pas véritablement un type de données. Une variable dite "indéfinie" est une variable n'ayant pas encore été définie. Une fonction utilisateur (c'est-à-dire une méthode projet qui retourne une valeur) peut retourner une valeur indéfinie si, à l'intérieur de la méthode, le résultat de la fonction ($0) est assigné à une expression indéfinie (une expression issue d'un calcul effectué avec au moins une variable indéfinie). Un champ ne peut pas être indéfini (la commande `Indefinie` retourne toujours Faux pour un champ). Une variable variant porte la valeur par défaut **indéfini**. +Undefined is not actually a data type. It denotes a variable that has not yet been defined. A function (a project method that returns a result) can return an undefined value if, within the method, the function result ($0) is assigned an undefined expression (an expression calculated with at least one undefined variable). A field cannot be undefined (the `Undefined` command always returns False for a field). A variant variable has **undefined** as default value. -## Exemples +## Examples -Cet exemple compare les différents résultats de la commande `Indefinie` et de la commande `Null` appliquées aux propriétés d'objets, en fonction du contexte : +Here are the different results of the `Undefined` command as well as the `Null` command with object properties, depending on the context: ```4d C_OBJECT($vEmp) @@ -27,12 +27,12 @@ $vEmp:=New object $vEmp.name:="Smith" $vEmp.children:=Null -$undefined:=Undefined($vEmp.name) // Faux -$null:=($vEmp.name=Null) //Faux +$undefined:=Undefined($vEmp.name) // False +$null:=($vEmp.name=Null) //False -$undefined:=Undefined($vEmp.children) // Faux -$null:=($vEmp.children=Null) //Vrai +$undefined:=Undefined($vEmp.children) // False +$null:=($vEmp.children=Null) //True -$undefined:=Undefined($vEmp.parent) // Vrai -$null:=($vEmp.parent=Null) //Vrai +$undefined:=Undefined($vEmp.parent) // True +$null:=($vEmp.parent=Null) //True ``` From 524dcf8ae9132866f669b195cb6887315327e94c Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:20:22 +0100 Subject: [PATCH 111/260] New translations restore.md (French) --- website/translated_docs/fr/Backup/restore.md | 26 ++++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/website/translated_docs/fr/Backup/restore.md b/website/translated_docs/fr/Backup/restore.md index a3a0c6b59f8891..514e7ad8038938 100644 --- a/website/translated_docs/fr/Backup/restore.md +++ b/website/translated_docs/fr/Backup/restore.md @@ -3,28 +3,28 @@ id: restore title: Restitution --- -4D vous permet de récupérer l’intégralité des données d’une application en cas d’incident, quelles que soient ses causes. Deux catégories principales d’incidents peuvent se produire : +4D allows you to restore entire sets of application data in case of any incidents, regardless of the cause of the incident. Deux catégories principales d’incidents peuvent se produire : -- L’arrêt inopiné de l'application pendant son exploitation. Cet incident peut se produire à cause d’une coupure de courant, la panne d’un élément du système, etc. Dans ce cas, en fonction de l’état courant du cache de données au moment de l’incident, la récupération de l'application peut nécessiter différentes opérations : - - Si le cache était vide, l'application s’ouvre normalement. Toutes les modifications apportées à l'application ont été enregistrées. Ce cas ne nécessite aucune opération particulière. +- The unexpected stoppage of an application while in use. Cet incident peut se produire à cause d’une coupure de courant, la panne d’un élément du système, etc. In this case, depending on the current state of the data cache at the moment of the incident, the restore of the application can require different operations: + - If the cache was empty, the application opens normally. Any changes made in the application were recorded. Ce cas ne nécessite aucune opération particulière. - Si le cache contenait des opérations, le fichier de données est intact mais il est nécessaire d’intégrer le fichier d’historique courant. - Si le cache était en cours d’écriture, le fichier de données est probablement endommagé. Il est nécessaire de restituer la dernière sauvegarde et d’intégrer le fichier d’historique courant. -- La perte de fichier(s) de l'application. Cet incident peut être causé par des secteurs défectueux sur le disque contenant l'application, un virus, une erreur de manipulation, etc. Il est nécessaire de restituer la dernière sauvegarde puis d’intégrer éventuellement l’historique courant. Pour savoir si une application a été endommagée à la suite d’un incident, il suffit de la relancer avec 4D. Le programme effectue un auto-diagnostic et précise les opérations de réparation à effectuer. En mode automatique, ces opérations sont effectuées directement, sans intervention de l’utilisateur. Si une stratégie de sauvegarde régulière a été mise en place, les outils de récupération de 4D vous permettront (dans la plupart des cas) de retrouver l'application dans l’état exact où elle se trouvait avant l’incident. +- The loss of application file(s). This incident can occur because of defective sectors on the disk containing the application, a virus, manipulation error, etc. Il est nécessaire de restituer la dernière sauvegarde puis d’intégrer éventuellement l’historique courant. To find out if an application was damaged following an incident, simply relaunch the application using 4D. Le programme effectue un auto-diagnostic et précise les opérations de réparation à effectuer. En mode automatique, ces opérations sont effectuées directement, sans intervention de l’utilisateur. If a regular backup strategy was put into place, the 4D restore tools will allow you to recover (in most cases) the application in the exact state it was in before the incident. -> 4D peut lancer automatiquement des procédures de récupération des applications après incident. Ces mécanismes sont gérés à l’aide de deux options accessibles dans la Page **Sauvegarde/Sauvegarde & et Restitution** de la fenêtre des Propriétés. Pour plus d'informations, reportez-vous au paragraphe [Restitution automatique](settings.md#automatic-restore) -> . Si l'incident résulte d'une opération inappropriée sur effectuée sur les données (suppression d'un enregistrement par exemple), vous pouvez tenter de réparer le fichier de données en utilisant la fonction de "retour arrière" dans le fichier d'historique. Cette fonction est accessible dans la Page [Retour arrière](MSC/rollback.md) du CSM. +> 4D can launch procedures automatically to recover applications following incidents. These mechanisms are managed using two options available on the **Backup/Backup & Restore** page of the Settings. For more information, refer to the [Automatic Restore](settings.md#automatic-restore) paragraph. +> If the incident is the result of an inappropriate operation performed on the data (deletion of a record, for example), you can attempt to repair the data file using the "rollback" function in the log file. Cette fonction est accessible dans la Page [Retour arrière](MSC/rollback.md) du CSM. ## Restitution manuelle d’une sauvegarde (dialogue standard) Vous pouvez restituer manuellement le contenu d’une archive générée par le module de sauvegarde. Une restitution manuelle peut être nécessaire par exemple pour restituer la totalité du contenu d’une archive (fichiers de structure et/ou fichiers joints inclus) ou à des fins de recherche sur des archives. La restitution manuelle peut éventuellement s’accompagner de l’intégration de l’historique courant. -La restitution manuelle des sauvegardes peut être réalisée soit via une boîte de dialogue standard d’ouverture de document, soit via la page [“Restitution”](MSC/restore) du Centre de sécurité et de maintenance (CSM). La restitution via une boîte de dialogue standard permet de restituer n’importe quelle archive. En revanche, seules les archives associées à l'application ouverte peuvent être restituées. +La restitution manuelle des sauvegardes peut être réalisée soit via une boîte de dialogue standard d’ouverture de document, soit via la page [“Restitution”](MSC/restore) du Centre de sécurité et de maintenance (CSM). La restitution via une boîte de dialogue standard permet de restituer n’importe quelle archive. On the other hand, only archives associated with the open application can be restored. -Pour restituer manuellement une application via une boîte de dialogue standard : +To restore an application manually via a standard dialog box: -1. Lancez l’application 4D et choisissez la commande **Restituer...** dans le menu **Fichier**. Il n'est pas obligatoire qu'un projet d'application soit ouvert. OU BIEN Exécutez la commande `RESTORE` depuis une méthode de 4D. Une boîte de dialogue standard d’ouverture de fichiers apparaît. +1. Lancez l’application 4D et choisissez la commande **Restituer...** dans le menu **Fichier**. It is not mandatory that an application project be open. OR Execute the `RESTORE` command from a 4D method. Une boîte de dialogue standard d’ouverture de fichiers apparaît. 2. Désignez le fichier de sauvegarde (.4bk) ou le fichier de sauvegarde de l’historique (.4bl) à restituer et cliquez sur **Ouvrir**. Un boîte de dialogue apparaît, vous permettant de désigner l’emplacement auquel vous souhaitez que les fichiers soient restitués . Par défaut, 4D restitue les fichiers dans un dossier nommé *“Nomarchive”* (sans extension) placé à côté de l’archive. Vous pouvez afficher le chemin :  @@ -32,22 +32,22 @@ Pour restituer manuellement une application via une boîte de dialogue standard Vous pouvez également cliquer sur le bouton **[...]** et indiquer un autre emplacement. 3. Cliquez sur le bouton **Restituer**. 4D extrait tous les fichiers de la sauvegarde à l’emplacement défini. Si le fichier d’historique courant ou un fichier de sauvegarde d’historique ayant le même numéro que le fichier de sauvegarde est stocké dans le même dossier, 4D examine son contenu. S’il contient des opérations non présentes dans le fichier de données, le programme propose de l’intégrer. L’intégration est effectuée automatiquement si l’option **d’intégration automatique de l’historique** est cochée (cf. paragraphe [Restitution automatique](settings.md#automatic-restore)). -(Facultatif) Cliquez sur **OK** pour intégrer le fichier d’historique dans l'application restituée. Si la restitution et l’intégration se sont déroulées correctement, 4D affiche une boîte de dialogue indiquant que l’opération a réussi. +4.(Optional) Click **OK** to integrate the log file into the restored application. Si la restitution et l’intégration se sont déroulées correctement, 4D affiche une boîte de dialogue indiquant que l’opération a réussi. 5. Cliquez sur **OK**. Le dossier d’arrivée est affiché. Lors de la restitution, 4D place tous les fichiers sauvegardés dans ce dossier, quelle que soit la position des fichiers originaux sur le disque au moment de la sauvegarde. De cette façon, vous retrouverez plus facilement vos fichiers. -> Tout contenu lié au fichier de données (dossier files et `Settings`) est automatiquement restauré dans un sous-dossier `Data`du dossier de destination. +> Any content related to the data file (files and `Settings` folder) are automatically restored in a `Data` subfolder within the destination folder. ## Restitution manuelle d’une sauvegarde (CSM) -La [page Restitution](MSC/restore.md) du Centre de sécurité et de maintenance (CSM) vous permet de restituer manuellement une archive de l'application courante. +You can manually restore an archive of the current application using the [Restore page](MSC/restore.md) of the Maintenance and Security Center (MSC). ## Intégration manuelle de l’historique -Si vous n’avez pas coché l’option d’intégration automatique du fichier d’historique dans la page Restitution du CSM (cf. [Intégration successive de plusieurs fichiers d’historiques](MSC/restore.md#successive-intergration-of-several-data-log-files)), une boîte de dialogue d’alerte apparaît à l’ouverture de l'application lorsque 4D constate que le fichier d’historique contient plus d’opérations qu’il n’en a été effectué dans le fichier de données. +If you have not checked the option for the automatic integration of the log file on the Restore page of the MSC (see [Successive integration of several log files](MSC/restore.md#successive-intergration-of-several-data-log-files)), a warning dialog box appears during the opening of the application when 4D notices that the log file contains more operations than have been carried out in the data file.  From 295fb0a8b8fb3199f8ffbcb3c33629dafcaa52ef Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:20:24 +0100 Subject: [PATCH 112/260] New translations properties_Picture.md (French) --- .../fr/FormObjects/properties_Picture.md | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/website/translated_docs/fr/FormObjects/properties_Picture.md b/website/translated_docs/fr/FormObjects/properties_Picture.md index c4e0ad8ff16210..e985c41074808a 100644 --- a/website/translated_docs/fr/FormObjects/properties_Picture.md +++ b/website/translated_docs/fr/FormObjects/properties_Picture.md @@ -4,30 +4,30 @@ title: Image --- --- -## Chemin d'accès +## Pathname -Chemin d'une image source statique pour un [bouton image](pictureButton_overview.md), [un menu pop-up ](picturePopupMenu_overview.md) ou une [image ou une image statique](staticPicture.md). Vous devez utiliser la syntaxe POSIX. +Pathname of a static source picture for a [picture button](pictureButton_overview.md), [picture pop-up Menu](picturePopupMenu_overview.md), or [static picture](staticPicture.md). You must use the POSIX syntax. -Deux emplacements principaux peuvent être utilisés pour le chemin d'image statique : +Two main locations can be used for static picture path: -- in the **Resources** folder of the project. Appropriate when you want to share static pictures between several forms in the project. Dans ce cas, le chemin d'accès se trouve dans "/RESOURCES/\ ". -- dans un dossier d'images (nommé **Images** par exemple) dans le dossier du formulaire. Convient lorsque les images statiques sont utilisées uniquement dans le formulaire et/ou lorsque vous souhaitez pouvoir déplacer ou dupliquer le formulaire entier dans un ou plusieurs projets. Dans ce cas, le chemin d'accès est "\ " et est déterminé à la racine du dossier du formulaire. +- in the **Resources** folder of the project. Appropriate when you want to share static pictures between several forms in the project. In this case, the Pathname is "/RESOURCES/\ ". +- in an image folder (e.g. named **Images**) within the form folder. Appropriate when the static pictures are used only in the form and/or you want to be able to move or duplicate the whole form within the project or different projects. In this case, the Pathname is "\ " and is resolved from the root of the form folder. -#### Grammaire JSON +#### JSON Grammar -| Nom | Type de données | Valeurs possibles | -|:-------:|:---------------:| --------------------------------------------- | -| picture | Texte | Chemin relatif ou filesystem en syntaxe POSIX | +| Name | Data Type | Possible Values | +|:-------:|:---------:| ------------------------------------------- | +| picture | text | Relative or filesystem path in POSIX syntax | -#### Objets pris en charge +#### Objects Supported -[Bouton image](pictureButton_overview.md) - [Pop-up Menu image](picturePopupMenu_overview.md) - [Image statique](staticPicture.md) +[Picture button](pictureButton_overview.md) - [Picture Pop-up Menu](picturePopupMenu_overview.md) - [Static Picture](staticPicture.md) --- -## Affichage +## Display ### Scaled to fit @@ -50,11 +50,11 @@ If the field is reduced to a size smaller than that of the original picture, the -### Centre / Tronquée (non centrée) +### Center / Truncated (non-centered) `JSON grammar: "truncatedCenter" / "truncatedTopLeft"` -Le format **Centre** permet à 4D de centrer l'image dans la zone et de rogner toute partie qui ne rentre pas dans la zone. 4D crops equally from each edge and from the top and bottom. +The **Center** format causes 4D to center the picture in the area and crop any portion that does not fit within the area. 4D crops equally from each edge and from the top and bottom. The **Truncated (non-centered)** format causes 4D to place the upper-left corner of the picture in the upper-left corner of the area and crop any portion that does not fit within the area. 4D crops from the right and bottom. > When the picture format is **Truncated (non-centered)**, it is possible to add scroll bars to the input area. @@ -62,12 +62,12 @@ The **Truncated (non-centered)** format causes 4D to place the upper-left corner  -#### Grammaire JSON +#### JSON Grammar -| Nom | Type de données | Valeurs possibles | -| ------------- | --------------- | -------------------------------------------------------- | -| pictureFormat | string | "scaled", "tiled", "truncatedCenter", "truncatedTopLeft" | +| Name | Data Type | Possible Values | +| ------------- | --------- | -------------------------------------------------------- | +| pictureFormat | string | "scaled", "tiled", "truncatedCenter", "truncatedTopLeft" | -#### Objets pris en charge +#### Objects Supported -[Image statique](staticPicture.md) \ No newline at end of file +[Static Picture](staticPicture.md) \ No newline at end of file From eabb8fece09780611caca36ffd1cff29b2a551e9 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:20:26 +0100 Subject: [PATCH 113/260] New translations settings.md (French) --- website/translated_docs/fr/Backup/settings.md | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/website/translated_docs/fr/Backup/settings.md b/website/translated_docs/fr/Backup/settings.md index e3b84c8c35d39c..57361efe1abf01 100644 --- a/website/translated_docs/fr/Backup/settings.md +++ b/website/translated_docs/fr/Backup/settings.md @@ -3,7 +3,7 @@ id: settings title: Paramètres de sauvegarde --- -Les paramètres de sauvegarde sont définis sur trois pages dans la boîte de dialogue des Propriétés. Vous pouvez définir : +Backup settings are defined through three pages in the Settings dialog box. Vous pouvez définir : - la périodicité des sauvegardes automatiques - les fichiers à inclure dans chaque sauvegarde @@ -13,15 +13,15 @@ Les paramètres de sauvegarde sont définis sur trois pages dans la boîte de di ## Sauvegardes périodiques -Vous pouvez automatiser les sauvegardes de vos applications ouvertes avec 4D ou 4D Server (même lorsqu’aucun poste distant n’est connecté). Le principe consiste à définir une fréquence de sauvegarde (en heures, jours, semaines ou mois) ; à chaque échéance, 4D déclenche automatiquement une sauvegarde en tenant compte des paramètres de sauvegarde courants. +You can automate the backup of applications opened with 4D or 4D Server (even when no client machines are connected). Le principe consiste à définir une fréquence de sauvegarde (en heures, jours, semaines ou mois) ; à chaque échéance, 4D déclenche automatiquement une sauvegarde en tenant compte des paramètres de sauvegarde courants. -Si l’application n’était pas lancée au moment théorique de la sauvegarde, 4D considère au lancement suivant que la sauvegarde a échoué et applique les paramétrages adéquats, définis dans les Propriétés (cf. paragraphe [En cas de problème au cours de la sauvegarde](backup.md#handling-backup-issues)). +If this application was not launched at the theoretical moment of the backup, the next time 4D is launched, it considers the backup as having failed and proceeds as set in the Settings (refer to [Handling backup issues](backup.md#handling-backup-issues)). -Les paramètres des sauvegardes périodiques sont définis dans la Page **Sauvegarde/Périodicité** des Propriétés : +The scheduler backup settings are defined on the **Backup/Scheduler** page of the Structure Settings:  -Les options regroupées dans cet onglet permettent de définir et de paramétrer des sauvegardes périodiques automatiques de l'application. Vous pouvez choisir un paramétrage standard rapide ou personnaliser entièrement la périodicité. Diverses options apparaissent en fonction de la valeur définie dans le menu **Sauvegarde automatique** : +The options found on this tab let you set and configure scheduled automatic backups of the application. Vous pouvez choisir un paramétrage standard rapide ou personnaliser entièrement la périodicité. Diverses options apparaissent en fonction de la valeur définie dans le menu **Sauvegarde automatique** : - **Jamais** : la fonction de sauvegarde périodique est inactivée. - **Toutes les heures** : programme une sauvegarde automatique par heure, à partir de la prochaine heure. @@ -36,7 +36,7 @@ Les options regroupées dans cet onglet permettent de définir et de paramétrer ## Configuration -La Page Sauvegarde/Configuration des Propriétés permet de désigner les fichiers à sauvegarder, l’emplacement des fichiers de sauvegarde et le fichier d’historique. Ces paramères sont spécifiques à chaque application ouverte par 4D ou 4D Server. +The Backup/Configuration page of the Structure Settings lets you set the backup files and their location, as well as that of the log file. These parameters are specific to each application opened by 4D or 4D Server.  @@ -45,14 +45,14 @@ La Page Sauvegarde/Configuration des Propriétés permet de désigner les fichie ### Contenu Cette zone permet de désigner les fichiers et/ou dossiers à copier lors de la prochaine sauvegarde. -- **Data** : fichier de données de l'application. Lorsque cette option est cochée, les éléments suivants sont automatiquement sauvegardés en même temps que les données : - - le fichier journal courant de l'application (le cas échéant), - - le dossier `Settings` complet situé [à côté du fichier de données](Project/architecture.md#settings-folder) (le cas échéant), c'est-à-dire *les paramètres utilisateur pour les données*. -- **Structure** : fichiers et dossiers du projet d'application. Dans le cas de projets compilés, cette option permet de sauvegarder le fichier .4dz. Lorsque cette option est cochée, le dossier complet `Settings` situé [au même niveau que le dossier Project](Project/architecture.md#settings-folder-1), c'est-à-dire les *paramètres utilisateur*, est automatiquement sauvegardé. +- **Data**: Application data file. When this option is checked, the following elements are automatically backed up at the same time as the data: + - the current log file of the application (if it exists), + - the full `Settings` folder located [next to the data file](Project/architecture.md#settings-folder) (if it exists), i.e. the *user settings for data*. +- **Structure**: Application project folders and files. In cases where projects are compiled, this option allows you to backup the .4dz file. When this option is checked, the full `Settings` folder located [at the same level as the Project folder](Project/architecture.md#settings-folder-1), i.e. the *user settings*, is automatically backed up. - **Fichier de structure utilisateur (uniquement pour les bases binaires)** : *fonctionnalité obsolète*f -- **Attachments** : cette zone permet de désigner un ensemble de fichiers et/ou de dossiers à sauvegarder en même temps que l'application. Ces fichiers peuvent être de tout type (documents ou modèles de plug-ins, étiquettes, états, images, etc.). Vous pouvez désigner soit des fichiers individuels, soit des dossiers dont le contenu sera intégralement sauvegardé. Chaque élément joint est listé avec son chemin d’accès complet dans la zone “Fichiers joints”. +- **Attachments**: This area allows you to specify a set of files and/or folders to be backed up at the same time as the application. Ces fichiers peuvent être de tout type (documents ou modèles de plug-ins, étiquettes, états, images, etc.). Vous pouvez désigner soit des fichiers individuels, soit des dossiers dont le contenu sera intégralement sauvegardé. Chaque élément joint est listé avec son chemin d’accès complet dans la zone “Fichiers joints”. - **Supprimer** : retire de la liste des fichiers joints l’élément sélectionné. - - **Ajouter dossier...** : affiche une boîte de dialogue permettant de sélectionner un dossier à joindre à la sauvegarde. En cas de restitution, le dossier sera récupéré avec sa structure interne. Vous pouvez désigner tout dossier ou volume connecté au poste, à l’exception du dossier contenant les fichiers de l'application. + - **Ajouter dossier...** : affiche une boîte de dialogue permettant de sélectionner un dossier à joindre à la sauvegarde. En cas de restitution, le dossier sera récupéré avec sa structure interne. You can select any folder or volume connected to the machine, with the exception of the folder containing the application files. - **Ajouter fichier...** : affiche une boîte de dialogue permettant de sélectionner un fichier à joindre à la sauvegarde. @@ -66,11 +66,11 @@ Pour modifier l’emplacement auquel ces fichiers devront être enregistrés, cl ### Gestion du fichier d'historique -L’option **Utiliser le fichier d’historique** indique, lorsqu’elle est cochée, que l'application exploite un fichier d’historique. Son chemin d’accès est précisé au-dessous de l’option. Lorsque cette option est cochée, il n’est pas possible d’ouvrir l'application sans fichier d’historique. +The **Use Log** option, when checked, indicates that the application uses a log file. Son chemin d’accès est précisé au-dessous de l’option. When this option is checked, it is not possible to open the application without a log file. -Par défaut, tout projet créé avec 4D utilise un fichier d’historique (option cochée dans la **Page Général** des **Préférences** de 4D). Le fichier d’historique est nommé par défaut *data.journal* et est placé dans le dossier Data. +By default, any project created with 4D uses a log file (option **Use Log File** checked in the **General Page** of the **Preferences**). Le fichier d’historique est nommé par défaut *data.journal* et est placé dans le dossier Data. -> L’activation d’un nouveau fichier d’historique nécessite que les données de l'application soient préalablement sauvegardées. Lorsque vous cochez cette option, un message vous informe qu’une sauvegarde est nécessaire. La création du fichier d’historique est différée et ne sera effective qu’après la prochaine sauvegarde de l'application. +> Activating a new log file requires the data of the application to be backed up beforehand. Lorsque vous cochez cette option, un message vous informe qu’une sauvegarde est nécessaire. The creation of the log file is postponed and it will actually be created only after the next backup of the application. ## Sauvegarde et restitution @@ -82,10 +82,10 @@ La modification des options de sauvegarde et de restauration est facultative. Le ### Paramètres généraux - **Conserver uniquement les N derniers fichiers de sauvegarde** : ce paramètre permet d’activer et de configurer le mécanisme de suppression des fichiers de sauvegarde les plus anciens, afin d’éviter tout risque de saturation du volume. Le principe de fonctionnement est le suivant : après avoir terminé la sauvegarde courante, 4D efface l’archive la plus ancienne si celle-ci est localisée au même endroit que l’archive à sauvegarder et porte le même nom (vous pouvez, pour des raisons d’économie de place, demander que l’archive la plus ancienne soit effacée avant la sauvegarde). Si, par exemple, le nombre de jeux est fixé à 3, les trois premières sauvegardes créent successivement les archives MaBase-0001, MaBase-0002 et MaBase-0003. Lors de la quatrième sauvegarde, l’archive MaBase-0004 est créée alors que l’archive MaBase-0001 est supprimée. Par défaut, le mécanisme de suppression des jeux est activé et 4D conserve 3 jeux de sauvegarde. Pour ne pas activer le mécanisme, désélectionnez l’option. -> Ce paramètre concerne à la fois les sauvegardes de l'application et les sauvegardes de l’historique. +> This parameter concerns both application and log file backups. -- **Sauvegarder uniquement si le fichier de données a été modifié** : lorsque cette option est cochée, 4D déclenche les sauvegardes périodiques uniquement si des données ont été ajoutées, modifiées ou supprimées depuis la dernière sauvegarde. Dans le cas contraire, la sauvegarde prévue est annulée et reportée à l’échéance suivante. Aucune erreur n’est générée ; le report est toutefois indiqué dans le Journal des sauvegardes. Cette option permet notamment d’économiser du temps machine sur la sauvegarde d'applications principalement utilisées en consultation. A noter qu'elle ne prend pas en compte les éventuelles modifications apportées au fichier de structure ou aux fichiers joints. -> Ce paramètre concerne à la fois les sauvegardes de l'application et les sauvegardes de l’historique. +- **Backup only if the data file has been modified**: When this option is checked, 4D starts scheduled backups only if data has been added, changed or deleted since the last backup. Dans le cas contraire, la sauvegarde prévue est annulée et reportée à l’échéance suivante. Aucune erreur n’est générée ; le report est toutefois indiqué dans le Journal des sauvegardes. This option also allows saving machine time for the backup of applications principally used for viewing purposes. A noter qu'elle ne prend pas en compte les éventuelles modifications apportées au fichier de structure ou aux fichiers joints. +> This parameter concerns both application and log file backups. - **Effacer la sauvegarde la plus ancienne avant sauvegarde / après sauvegarde** : cette option n’est utilisée que si l’option “Conserver uniquement les N derniers fichiers de sauvegarde” est cochée. Elle vous permet de spécifier si 4D doit commencer par effacer l’archive la plus ancienne avant d’effectuer une sauvegarde (option **avant**) ou si l’effacement doit être effectué après la sauvegarde (option **après**). Pour que ce mécanisme fonctionne, l’archive la plus ancienne ne doit pas avoir été renommée ou déplacée. @@ -94,12 +94,12 @@ La modification des options de sauvegarde et de restauration est facultative. Le - **Réessayer dans N seconde(s), minute(s) ou heure(s)** : lorsque cette option est cochée, une nouvelle tentative de sauvegarde est effectuée à l’issue du délai défini. Ce mécanisme permet d’anticiper certaines circonstances bloquant la sauvegarde. Vous pouvez fixer un délai en secondes, minutes ou heures à l’aide du menu correspondant. Si la nouvelle tentative échoue également, une erreur est générée et l’échec est inscrit dans les zones de statut de la dernière sauvegarde et dans le Journal des sauvegardes. - **Annuler l’opération au bout de N tentatives** : ce paramètre permet de définir le nombre de fois que le module de sauvegarde réessaiera de lancer la sauvegarde en cas d’échec. Si, à l’issue du nombre d’essais défini, la sauvegarde n’a pas pu être effectuée, elle est annulée et l’erreur 1401 est générée (“Le nombre maximal de tentatives de sauvegarde est atteint, la sauvegarde automatique est temporairement désactivée”). Dans ce cas, aucune nouvelle sauvegarde automatique ne sera lancée tant que l’application n’aura pas été redémarrée ou qu’une sauvegarde manuelle n’aura été effectuée avec succès. Ce paramètre est utile notamment pour éviter qu’en cas d’impossibilité prolongée de la sauvegarde (nécessitant une intervention humaine), l’application n’effectue inutilement de nombreuses tentatives au détriment de ses performances. Par défaut, ce paramètre n’est pas coché. -> 4D considère qu’une sauvegarde a échoué si l'application n’était pas lancée au moment théorique de la sauvegarde automatique périodique. +> 4D considers a backup as failed if the application was not launched at the time when the scheduled automatic backup was set to be carried out. ### Archive Ces options s’appliquent aux fichiers de sauvegarde principaux et aux fichiers de sauvegarde de l’historique. -- **Taille du segment (Mo)** 4D vous permet de segmenter les archives, c’est-à-dire de les découper en morceaux de taille fixe. Ce fonctionnement permet par exemple de stocker une sauvegarde sur plusieurs volumes (DVDs, usb, etc.). Au moment de la restitution, 4D fusionnera automatiquement les segments. Chaque segment est appelé MonApplication[xxxx-yyyy].4BK, où xxxx représente le numéro de la sauvegarde et yyyy celui du segment. Par exemple, les trois segments de la sixième sauvegarde de la base MonApplication seront appelés MonApplication[0006-0001].4BK, MonApplication[0006-0002].4BK et MonApplication[0006-0003].4BK. Le menu **Taille du segment** est une combo box permettant de définir la taille en Mo de chaque segment de sauvegarde. Vous pouvez choisir une des tailles prédéfinies ou saisir une taille spécifique entre 0 et 2048. Si vous passez 0, aucune segmentation n’est effectuée (équivaut à la valeur **Aucune**). +- **Taille du segment (Mo)** 4D vous permet de segmenter les archives, c’est-à-dire de les découper en morceaux de taille fixe. Ce fonctionnement permet par exemple de stocker une sauvegarde sur plusieurs volumes (DVDs, usb, etc.). Au moment de la restitution, 4D fusionnera automatiquement les segments. Each segment is called MyApplication[xxxx-yyyy].4BK, where xxxx is the backup number and yyyy is the segment number. For example, the three segments of the MyApplication backup are called MyApplication[0006-0001].4BK, MyApplication[0006-0002].4BK and MyApplication[0006-0003].4BK. Le menu **Taille du segment** est une combo box permettant de définir la taille en Mo de chaque segment de sauvegarde. Vous pouvez choisir une des tailles prédéfinies ou saisir une taille spécifique entre 0 et 2048. Si vous passez 0, aucune segmentation n’est effectuée (équivaut à la valeur **Aucune**). - **Taux de compression** Par défaut, les sauvegardes sont compressées par 4D. En contrepartie, la phase de compression des fichiers peut ralentir sensiblement les sauvegardes dans le cas de la manipulation de gros volumes de données. L’option **Taux de compression** vous permet d’ajuster la compression : - **Aucun** : aucune compression n’est appliquée. La sauvegarde peut être sensiblement plus rapide mais les fichiers d’archives sont plus volumineux sur le disque. @@ -113,14 +113,14 @@ Ces options s’appliquent aux fichiers de sauvegarde principaux et aux fichiers ### Restitution automatique -- **Restituer la dernière sauvegarde si la base est endommagée** : lorsque cette option est cochée, le programme déclenche automatiquement la restitution du fichier de données de la dernière sauvegarde valide de l'application s’il détecte une anomalie (fichier corrompu par exemple) lors du lancement de l'application. Aucune intervention de l’utilisateur n’est requise ; l’opération est cependant consignée dans le Journal des sauvegardes. +- **Restore last backup if database is damaged**: When this option is checked, the program automatically starts the restore of the data file of the last valid backup of the application, if an anomaly is detected (corrupted file, for example) during application launch. Aucune intervention de l’utilisateur n’est requise ; l’opération est cependant consignée dans le Journal des sauvegardes. -- **Intégrer le dernier historique si la base est incomplète** : lorsque cette option est cochée, le programme intègre automatiquement l’historique lors de l’ouverture ou de la restitution de l'application. - - Lors de l’ouverture d'une application, l’historique courant est automatiquement intégré si 4D détecte que des opérations stockées dans l’historique ne sont pas présentes dans les données. Cette situation se produit par exemple lorsqu’une panne de courant a lieu alors que des opérations non encore écrites sur le disque se trouvaient dans le cache de données. - - Lors de la restitution de l'application, si le fichier d’historique courant ou un fichier de sauvegarde d’historique ayant le même numéro que le fichier de sauvegarde est stocké dans le même dossier, 4D examine son contenu. S’il contient des opérations non présentes dans le fichier de données, le programme l’intègre automatiquement. +- **Integrate last log file if database is incomplete**: When this option is checked, the program automatically integrates the log file when opening or restoring the application. + - When opening an application, the current log file is automatically integrated if 4D detects that there are operations stored in the log file that are not present in the data. Cette situation se produit par exemple lorsqu’une panne de courant a lieu alors que des opérations non encore écrites sur le disque se trouvaient dans le cache de données. + - When restoring an application, if the current log file or a log backup file having the same number as the backup file is stored in the same folder, 4D examines its contents. S’il contient des opérations non présentes dans le fichier de données, le programme l’intègre automatiquement. Aucune boîte de dialogue n’est présentée à l’utilisateur, l’opération est entièrement automatique. Le but est de faciliter au maximum la remise en route de l’exploitation. L’opération est consignée dans le Journal des sauvegardes. -> Dans le cas d'une restauration automatique, seuls les éléments suivants sont restaurés: - fichier .4DD - fichier .4DIndx - fichier .4DSyncData - fichier .4DSyncHeader - dossier External Data +> In the case of an automatic restore, only the following elements are restored: - .4DD file - .4DIndx file - .4DSyncData file - .4DSyncHeader file - External Data folder > -> Si vous souhaitez obtenir les fichiers joints ou les fichiers de projet, vous devez effectuer une [restauration manuelle](restore.md#manually-restoring-a-backup-standard-dialog). +> If you wish to get the attached files or the project files, you must perform a [manual restore](restore.md#manually-restoring-a-backup-standard-dialog). From 09da18171d8acf89f7f40bb331a05fc6664838eb Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:20:28 +0100 Subject: [PATCH 114/260] New translations about.md (French) --- website/translated_docs/fr/Concepts/about.md | 68 ++++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/website/translated_docs/fr/Concepts/about.md b/website/translated_docs/fr/Concepts/about.md index ca317b8b3f399f..1163d11a82d5d6 100644 --- a/website/translated_docs/fr/Concepts/about.md +++ b/website/translated_docs/fr/Concepts/about.md @@ -3,60 +3,60 @@ id: about title: À propos du Langage 4D --- -Grâce à son langage 4D intégré, qui comprend plus de 1300 commandes, 4D est un outil de développement puissant pour les applications web, mobile ou desktop. Ce langage peut être utilisé pour effectuer plusieurs types de tâches allant de la réalisation de simples calculs à la création d’interfaces utilisateur personnalisées et complexes. Vous pouvez par exemple : +The 4D built-in language, consisting of more than 1300 commands, makes 4D a powerful development tool for web, mobile, or desktop applications. You can use the 4D language for many different tasks—from performing simple calculations to creating complex custom user interfaces. For example, you can: -- Accéder par programmation à tous les éditeurs de gestion des enregistrements (tris, recherches, etc.), -- Créer et imprimer des états et des étiquettes complexes avec les données de la base, -- Communiquer avec d’autres systèmes d’information, -- Envoyer des e-mails, -- Gérer des documents et des pages web, -- Importer et exporter des données entre des applications 4D et d’autres applications, -- Incorporer des procédures écrites dans d’autres langages que celui de 4D. +- Programmatically access any of the record management editors (order by, query, and so on), +- Create and print complex reports and labels with the information from the database, +- Communicate with other devices, +- Send emails, +- Manage documents and web pages, +- Import and export data between 4D applications and other applications, +- Incorporate procedures written in other languages into the 4D programming language. -La flexibilité et la puissance du langage de 4D en font l’outil idéal pour exécuter toute une gamme de fonctions de gestion de l’information. Les utilisateurs novices peuvent exécuter des calculs rapidement, les utilisateurs plus expérimentés peuvent personnaliser leurs applications sans connaissances préalables en programmation et les développeurs chevronnés peuvent utiliser ce langage puissant pour ajouter à leurs applications des fonctions sophistiquées, allant jusqu'au transfert de fichiers, aux communications et au suivi. Quant aux développeurs ayant une maîtrise de la programmation dans d’autres langages, ils peuvent ajouter leurs propres commandes au langage de 4D. +The flexibility and power of the 4D programming language make it the ideal tool for all levels of users and developers to accomplish a complete range of information management tasks. Novice users can quickly perform calculations. Experienced users without programming experience can customize their applications. Experienced developers can use this powerful programming language to add sophisticated features and capabilities to their applications, including file transfer, communications, monitoring. Developers with programming experience in other languages can add their own commands to the 4D language. -## Qu'est-ce qu'un langage ? +## What is a Language? -Le langage de 4D n’est pas très différent de celui que nous utilisons tous les jours. C’est une forme de communication qui permet d'exprimer des idées, d'informer ou de donner des instructions. Tout comme un langage parlé, celui de 4D se compose d'un vocabulaire, d’une grammaire et d’une syntaxe, que vous employez pour indiquer au programme comment gérer votre application et vos données. +The 4D language is not very different from the spoken language we use every day. It is a form of communication used to express ideas, inform, and instruct. Like a spoken language, 4D has its own vocabulary, grammar, and syntax; you use it to tell 4D how to manage your application and data. -Il n’est pas nécessaire de connaître entièrement le langage. Pour pouvoir vous exprimer en anglais, vous n’êtes pas obligé de connaître la totalité de la langue anglaise ; en réalité, un peu de vocabulaire suffit. Il en va de même pour 4D — il vous suffit de connaître un minimum du langage pour être productif, et vous en apprendrez de plus en plus au fur et à mesure de vos besoins. +You do not need to know everything in the language in order to work effectively with 4D. In order to speak, you do not need to know the entire English language; in fact, you can have a small vocabulary and still be quite eloquent. The 4D language is much the same—you only need to know a small part of the language to become productive, and you can learn the rest as the need arises. -## Pourquoi utiliser un langage ? +## Why use a Language? -À première vue, un langage de programmation dans 4D peut sembler inutile. En effet, 4D propose des outils puissants et entièrement paramétrables en mode Développement, permettant d'exécuter une grande variété de tâches de gestion des données sans programmation. Les opérations fondamentales telles que la saisie de données, les requêtes, les tris et la création d’états s'effectuent facilement. Il existe aussi de nombreuses autres possibilités, telles que les filtres de validation des données, les aides à la saisie, la représentation graphique et la génération d’étiquettes. +At first it may seem that there is little need for a programming language in 4D. In the Design environment, 4D provides flexible tools that require no programming to perform a wide variety of data management tasks. Fundamental tasks, such as data entry, queries, sorting, and reporting are handled with ease. In fact, many extra capabilities are available, such as data validation, data entry aids, graphing, and label generation. -Alors, pourquoi avons-nous besoin d'un langage 4D ? Voici quelques-uns de ses principaux rôles : +Then why do we need a 4D language? Here are some of its uses: -- Automatiser les tâches répétitives : par exemple la modification de données, la génération d’états complexes et la réalisation de longues séries d’opérations ne nécessitant pas l’intervention d’un utilisateur. -- Contrôler l’interface utilisateur : vous pouvez gérer les fenêtres et les menus, contrôler les formulaires et les objets d’interface. -- Gérer les données de manière très fine : cette gestion inclut le traitement de transactions, les systèmes de validation complexes, la gestion multi-utilisateurs, l’utilisation des ensembles et des sélections temporaires. -- Contrôler l’ordinateur : vous pouvez contrôler les communications par le port série, la gestion des documents et des erreurs. -- Créer des applications : vous pouvez créer des applications simples, personnalisées et autonomes. -- Ajouter des fonctionnalités au serveur Web 4D intégré : par exemple, vous pouvez créer et mettre à jour des pages web dynamiques contenant vos données. +- Automate repetitive tasks: These tasks include data modification, generation of complex reports, and unattended completion of long series of operations. +- Control the user interface: You can manage windows and menus, and control forms and interface objects. +- Perform sophisticated data management: These tasks include transaction processing, complex data validation, multi-user management, sets, and named selection operations. +- Control the computer: You can control serial port communications, document management, and error management. +- Create applications: You can create easy-to-use, customized applications that run stand-alone. +- Add functionality to the built-in 4D Web server: build and update dynamic web pages filled with your data. -Le langage vous permet de contrôler totalement la structure et le fonctionnement de votre application. 4D propose de puissants éditeurs “génériques”, mais le langage vous offre la possibilité de personnaliser votre application autant que vous voulez. +The language lets you take complete control over the design and operation of your application. 4D provides powerful “generic” editors, but the language lets you customize your application to whatever degree you require. -## Prendre le contrôle de vos données +## Taking Control of Your Data -Le langage de 4D vous permet de prendre le contrôle total de vos données, d’une manière à la fois puissante et élégante. Il reste d’un abord facile pour un débutant, et est suffisamment riche pour un développeur d’applications. Il permet de passer par étapes d’une simple exploitation des fonctions intégrées de 4D à une application entièrement personnalisée. +The 4D language lets you take complete control of your data in a powerful and elegant manner. The language is easy enough for a beginner, and sophisticated enough for an experienced application developer. It provides smooth transitions from built-in database functions to a completely customized application. -Les commandes du langage de 4D vous donnent la possibilité d’accéder aux éditeurs standard de gestion des enregistrements. Par exemple, lorsque vous utilisez la commande `QUERY`, vous accédez à l’Editeur de quêtes (accessible en mode Développement via la commande Chercher... dans le menu Enregistrements). Vous pouvez, si vous le voulez, indiquer explicitement à la commande Query ce qu’elle doit rechercher. Par exemple, `QUERY([People];[People]Last Name="Dupont")` trouvera toutes les personnes nommées Dupont dans votre base. +The commands in the 4D language provide access to the standard record management editors. For example, when you use the `QUERY` command, you are presented with the Query Editor (which can be accessed in the Design mode using the Query command in the Records menu. You can tell the command to search for explicitly described data. For example, `QUERY([People];[People]Last Name="Smith")` will find all the people named Smith in your database. -Le langage 4D est très puissant — une commande remplace souvent des centaines, voire des milliers de lignes de code écrites dans les langages informatiques traditionnels. Et cette puissance s’accompagne d'une réelle simplicité : les commandes sont écrites en français. Par exemple, vous utilisez la commande `QUERY` pour effectuer une recherche ; pour ajouter un nouvel enregistrement, vous appelez la commande `ADD RECORD`. +The 4D language is very powerful—one command often replaces hundreds or even thousands of lines of code written in traditional computer languages. Surprisingly enough, with this power comes simplicity—commands have plain English names. For example, to perform a query, you use the `QUERY` command; to add a new record, you use the `ADD RECORD` command. -Le langage est conçu de telle manière que vous puissiez facilement accomplir n’importe quelle tâche. L’ajout d’un enregistrement, le tri des enregistrements, la recherche de valeurs et les autres opérations de même type sont définies par des commandes simples et directes. Mais les routines peuvent également contrôler les ports série, lire des documents sur le disque, traiter des systèmes de transactions complexes, et plus encore. +The language is designed for you to easily accomplish almost any task. Adding a record, sorting records, searching for data, and similar operations are specified with simple and direct commands. But the language can also control the serial ports, read disk documents, control sophisticated transaction processing, and much more. -Même les opérations les plus compliquées se définissent de manière relativement simple. Il serait inimaginable de les réaliser sans le langage de 4D. Cependant, même à l’aide de la puissance des commandes du langage, certaines tâches peuvent se révéler complexes et difficiles. Ce n’est pas l’outil lui-même qui fait le travail ; une tâche peut représenter en soi une difficulté, l’outil ne fait que faciliter son traitement. Par exemple, un logiciel de traitement de texte permet d’écrire un livre plus rapidement et plus facilement, mais il ne l’écrira pas à votre place. Le langage de 4D vous permet de gérer plus facilement vos données et d’appréhender les tâches ardues en toute confiance. +The 4D language accomplishes even the most sophisticated tasks with relative simplicity. Performing these tasks without using the language would be unimaginable for many. Even with the language’s powerful commands, some tasks can be complex and difficult. A tool by itself does not make a task possible; the task itself may be challenging and the tool can only ease the process. For example, a word processor makes writing a book faster and easier, but it will not write the book for you. Using the 4D language will make the process of managing your data easier and will allow you to approach complicated tasks with confidence. -## Est-ce un langage informatique “traditionnel” ? +## Is it a “Traditional” Computer Language? -Si vous êtes familier avec les langages informatiques traditionnels, ce paragraphe peut vous intéresser. Si ce n’est pas le cas, vous pouvez passer directement au paragraphe suivant. +If you are familiar with traditional computer languages, this section may be of interest. If not, you may want to skip it. -Le langage 4D n’est pas un langage informatique traditionnel. C’est un des langages les plus souples et les plus innovants que l’on puisse trouver aujourd’hui sur micro-ordinateur. Le langage a été conçu pour s’adapter à vous, et non l’inverse. +The 4D language is not a traditional computer language. It is one of the most innovative and flexible languages available on a computer today. It is designed to work the way you do, and not the other way around. -Pour utiliser les langages traditionnels, vous devez avant tout réaliser des maquettes détaillées. C’est même l'une des principales phases d’un développement. 4D vous permet de commencer à utiliser le langage à tout moment et dans n’importe quelle partie de votre projet. Vous pouvez commencer par ajouter une méthode objet dans un formulaire, puis plus tard une ou deux méthodes formulaires. Comme votre projet devient plus sophistiquée, vous pouvez ajouter une méthode projet contrôlée par un menu. Vous êtes totalement libre d’utiliser une petite partie du langage ou une partie plus étendue. Ce n’est pas “tout ou rien”, comme c’est le cas dans beaucoup d’autres bases de données. +To use traditional languages, you must do extensive planning. In fact, planning is one of the major steps in development. 4D allows you to start using the language at any time and in any part of your project. You may start by adding a method to a form, then later add a few more methods. As your application becomes more sophisticated, you might add a project method controlled by a menu. You can use as little or as much of the language as you want. It is not “all or nothing,” as is the case with many other databases. -Les langages traditionnels vous obligent à définir et à pré-déclarer vos objets d'interface sous une forme syntaxique rigide. Dans 4D, créez simplement un objet, tel qu'un bouton, et utilisez-le. 4D se charge de la gestion de l'objet. Par exemple, pour utiliser un bouton, il suffit de le dessiner dans un formulaire et de lui donner un nom. Lorsque l’utilisateur clique sur le bouton, le langage déclenche automatiquement vos méthodes. +Traditional languages force you to define and pre-declare interface objects in formal syntactic terms. In 4D, you simply create an object, such as a button, and use it. 4D automatically manages the object for you. For example, to use a button, you draw it on a form and name it. When the user clicks the button, the language automatically notifies your methods. -Les langages traditionnels sont souvent rigides et inflexibles, et exigent que les commandes soient saisies dans un style très formel et contraignant. Le langage de 4D rompt avec la tradition, au grand bénéfice de l’utilisateur. \ No newline at end of file +Traditional languages are often rigid and inflexible, requiring commands to be entered in a very formal and restrictive style. The 4D language breaks with tradition, and the benefits are yours. \ No newline at end of file From 23b7fa43752e7dd5d7c91cf85bdd9b99b551ad54 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:20:31 +0100 Subject: [PATCH 115/260] New translations arrays.md (French) --- website/translated_docs/fr/Concepts/arrays.md | 150 +++++++++--------- 1 file changed, 75 insertions(+), 75 deletions(-) diff --git a/website/translated_docs/fr/Concepts/arrays.md b/website/translated_docs/fr/Concepts/arrays.md index be6596c090aa53..bd827be6e8c781 100644 --- a/website/translated_docs/fr/Concepts/arrays.md +++ b/website/translated_docs/fr/Concepts/arrays.md @@ -3,33 +3,33 @@ id: arrays title: Tableaux --- -Un **tableau** est une série ordonnée de **variables** de même type. Chaque variable est appelée un **élément** du tableau. La taille du tableau doit être définie au moment de sa création ; vous pouvez ensuite la modifier aussi souvent que nécessaire en ajoutant, insérant, ou supprimant des éléments, ou en appelant de nouveau la commande que vous avez utilisée pour créer le tableau. Les éléments sont numérotés de 1 à N, où N est la taille du tableau. Un tableau a toujours un [élément zéro](#using-the-element-zero-of-an-array). Les tableaux sont des variables 4D. Comme toute variable, un tableau a une portée et suit les règles du langage 4D, bien qu'il existe quelques différences spécifiques. -> Généralement, il est recommandé d'utiliser des **collections** plutôt que des **tableaux**. Les collections sont plus souples et fournissent un large éventail de méthodes spécifiques. Pour plus d'informations, veuillez consutler la section [Collection](Concepts/dt_collection.md). +An **array** is an ordered series of **variables** of the same type. Each variable is called an **element** of the array. An array is given its size when it is created; you can then resize it as many times as needed by adding, inserting, or deleting elements, or by resizing the array using the same command used to create it. Array elements are numbered from 1 to N, where N is the size of the array. An array always has a special [element zero](#using-the-element-zero-of-an-array). Arrays are 4D variables. Like any variable, an array has a scope and follows the rules of the 4D language, though with some unique differences. +> In most cases, it is recommended to use **collections** instead of **arrays**. Collections are more flexible and provide a wide range of dedicated methods. For more information, please refer to the [Collection](Concepts/dt_collection.md) section. -## Créer des tableaux +## Creating Arrays -Vous créez un tableau au moyen de l'une des commandes de déclaration du thème "Tableaux". Chaque commande de déclaration de tableau peut créer ou redimensionner des tableaux à une ou à deux dimensions. Pour plus d'informations sur les tableaux à deux dimensions, reportez-vous à la section [Tableaux à deux dimensions](#two-dimensional-arrays). +You create an array with one of the array declaration commands from the "Array" theme. Each array declaration command can create or resize one-dimensional or two-dimensional arrays. For more information about two-dimensional arrays, see the [two dimensional arrays](#two-dimensional-arrays) section. -Cette ligne de code crée (déclare) un tableau d'entiers de 10 éléments : +The following line of code creates (declares) an Integer array of 10 elements: ```4d ARRAY INTEGER(aiAnArray;10) ``` -Ensuite, cette ligne de code redimensionne le même tableau à 20 éléments : +Then, the following code resizes that same array to 20 elements: ```4d ARRAY INTEGER(aiAnArray;20) ``` -Enfin, cette ligne de code redimensionne le même tableau à 0 élément : +Then, the following code resizes that same array to no elements: ```4d ARRAY INTEGER(aiAnArray;0) ``` -## Affecter des valeurs dans un tableau +## Assigning values in arrays -Vous référencez les éléments d'un tableau en utilisant des accolades ({…} ). Un nombre entre accolades donne accès à l'adresse d'un élément particulier. L'exemple ci-dessous place cinq noms dans le tableau nommé atNoms et les affiche ensuite dans une fenêtre d'alerte : +You reference the elements in an array by using curly braces ({…}). A number is used within the braces to address a particular element; this number is called the element number. The following lines put five names into the array called atNames and then display them in alert windows: ```4d ARRAY TEXT(atNames;5) @@ -42,84 +42,84 @@ Vous référencez les éléments d'un tableau en utilisant des accolades ({…} ALERT("The element #"+String($vlElem)+" is equal to: "+atNames{$vlElem}) End for ``` -Notez la syntaxe atNoms{$vlElem}. Au lieu de spécifier un nombre littéral comme atNoms{3}, vous pouvez utiliser une variable numérique indiquant à quel élément d'un tableau vous accédez. Si vous utilisez les itérations permises par les structures répétitives (`For...End for`, `Repeat...Until` or `While...End while`), vous pouvez accéder à tout ou partie des éléments d'un tableau avec très peu de code. +Note the syntax atNames{$vlElem}. Rather than specifying a numeric literal such as atNames{3}, you can use a numeric variable to indicate which element of an array you are addressing. Using the iteration provided by a loop structure (`For...End for`, `Repeat...Until` or `While...End while`), compact pieces of code can address all or part of the elements in an array. -**Important :** Veillez à ne pas confondre l'opérateur d'affectation (:=) avec l'opérateur de comparaison égal (=). L'affectation et la comparaison sont deux opérations totalement différentes. +**Important:** Be careful not to confuse the assignment operator (:=) with the comparison operator, equal (=). Assignment and comparison are very different operations. -### Affecter un tableau à un autre -Contrairement à ce que vous pouvez faire avec des variables de type Texte ou Chaîne, vous ne pouvez pas affecter un tableau à un autre tableau. Pour copier (affecter) un tableau à un autre, utilisez la fonction `COPY ARRAY`. +### Assigning an array to another array +Unlike text or string variables, you cannot assign one array to another. To copy (assign) an array to another one, use `COPY ARRAY`. -## Utiliser l'élément zéro d'un tableau +## Using the element zero of an array -Un tableau a toujours un élément zéro. Même si l'élément zéro n'est pas affiché lorsqu'un tableau est utilisé pour remplir un objet de formulaire, vous pouvez l'utiliser sans réserve(*) dans le langage. +An array always has an element zero. While element zero is not shown when an array supports a form object, there is no restriction(*) in using it with the language. -Voici un autre exemple : vous souhaitez initialiser un objet de formulaire avec une valeur texte mais sans définir de valeur par défaut. Vous pouvez utiliser l'élément zéro du tableau : +Here is another example: you want to initialize a form object with a text value but without setting a default value. You can use the element zero of the array: ```4d - // // méthode pour une combo box ou une liste déroulante - // liée au tableau de variables atName + // method for a combo box or drop-down list + // bound to atName variable array Case of - : Form event code=On Load) - // Initialise le tableau (comme indiqué ci-dessus) - // Mais utilise l'élément zéro + :(Form event code=On Load) + // Initialize the array (as shown further above) + // But use the element zero ARRAY TEXT(atName;5) - atName{0}:=Veuillez sélectionner un élément" + atName{0}:=Please select an item" atName{1}:="Text1" atName{2}:="Text2" atName{3}:="Text3" atName{4}:="Text4" atName{5}:="Text5" - // Positionne le tableau sur l'élément 0 - atName: = 0 + // Position the array to element 0 + atName:=0 End case ``` (*) However, there is one exception: in an array type List Box, the zero element is used internally to store the previous value of an element being edited, so it is not possible to use it in this particular context. -## Tableaux à deux dimensions +## Two-dimensional Arrays -Chaque commande de déclaration de tableau permet de créer ou de redimensionner des tableaux à une ou à deux dimensions. Exemple : +Each of the array declaration commands can create or resize one-dimensional or two-dimensional arrays. Example: ```4d - ARRAY TEXT(atTopics;100;50) // Créer un tableau texte composé de 100 lignes de 50 colonnes + ARRAY TEXT(atTopics;100;50) // Creates a text array composed of 100 rows of 50 columns ``` -Les tableaux à deux dimensions sont essentiellement des objets de langage ; vous ne pouvez ni les afficher ni les imprimer. +Two-dimensional arrays are essentially language objects; you can neither display nor print them. -Dans l'exemple prédédent : +In the previous example: -- atTopics est un tableau à deux dimensions -- atTopics{8}{5} est le 5e élément (5e colonne...) de la 8e ligne -- atTopics{20} est la 20e ligne et est elle-même un tableau à une dimension -- `Size of array(atTopics)` retourne 100, qui est le nombre de lignes -- `Size of array(atTopics{17})` retourne 50, qui est le nombre de colonnes de la 17e ligne +- atTopics is a two-dimensional array +- atTopics{8}{5} is the 5th element (5th column...) of the 8th row +- atTopics{20} is the 20th row and is itself a one-dimensional array +- `Size of array(atTopics)` returns 100, which is the number of rows +- `Size of array(atTopics{17})` returns 50, which the number of columns for the 17th row -Dans l'exemple suivant, un pointeur vers chaque champ de chaque table de la base est stocké dans un tableau à deux dimensions : +In the following example, a pointer to each field of each table in the database is stored in a two-dimensional array: ```4d C_LONGINT($vlLastTable;$vlLastField) C_LONGINT($vlFieldNumber) - // Créer autant de lignes (vides et sans colonnes) qu'il y a de tables - $vlLastTable:=Get last table number - ARRAY POINTER(<>apFields;$vlLastTable;0) //Tableau 2D avec N lignes et zéro colonnes - // Pour chaque table + // Create as many rows (empty and without columns) as there are tables + $vlLastTable:=Get last table number + ARRAY POINTER(<>apFields;$vlLastTable;0) //2D array with X rows and zero columns + // For each table For($vlTable;1;$vlLastTable) If(Is table number valid($vlTable)) $vlLastField:=Get last field number($vlTable) - // Donner la valeur des éléments - $vlColumnNumber:=0 + // Give value of elements + $vlColumnNumber:=0 For($vlField;1;$vlLastField) If(Is field number valid($vlTable;$vlField)) $vlColumnNumber:=$vlColumnNumber+1 - // Insérer une colonne dans la ligne de la table en cours - INSERT IN ARRAY(<>apFields{$vlTable};$vlColumnNumber;1) - // Affecter la "celulle" avec le pointeur + //Insert a column in a row of the table underway + INSERT IN ARRAY(<>apFields{$vlTable};$vlColumnNumber;1) + //Assign the "cell" with the pointer <>apFields{$vlTable}{$vlColumnNumber}:=Field($vlTable;$vlField) End if End for @@ -127,13 +127,13 @@ Dans l'exemple suivant, un pointeur vers chaque champ de chaque table de la base End for ``` -Dans la mesure où le tableau à deux dimensions a été initialisé, vous pouvez obtenir ainsi les pointeurs vers les champs d'une table de votre choix : +Provided that this two-dimensional array has been initialized, you can obtain the pointers to the fields for a particular table in the following way: ```4d - // Obtenir les pointeurs vers les champs pour la table affichée à l'écran: + // Get the pointers to the fields for the table currently displayed at the screen: COPY ARRAY(◊apFields{Table(Current form table)};$apTheFieldsIamWorkingOn) - // Initialiser les champs booléens et date -For($vlElem;1;Size of array($apTheFieldsIamWorkingOn)) + // Initialize Boolean and Date fields + For($vlElem;1;Size of array($apTheFieldsIamWorkingOn)) Case of :(Type($apTheFieldsIamWorkingOn{$vlElem}->)=Is date) $apTheFieldsIamWorkingOn{$vlElem}->:=Current date @@ -143,40 +143,40 @@ For($vlElem;1;Size of array($apTheFieldsIamWorkingOn)) End for ``` -**Note :** Comme le montre cet exemple, les lignes des tableaux à deux dimensions peuvent être ou non de la même taille. +**Note:** As this example suggests, rows of a two-dimensional arrays can be the same size or different sizes. -## Tableaux et mémoire +## Arrays and Memory -A la différence des données que vous stockez sur disque lorsque vous utilisez des tables ou des enregistrements, un tableau réside toujours en mémoire dans son intégralité. +Unlike the data you store on disk using tables and records, an array is always held in memory in its entirety. -Par exemple, si tous les codes postaux américains étaient saisis dans une table [Codes Postaux], celle-ci contiendrait environ 100 000 enregistrements. De plus, cette table comporterait plusieurs champs : le code postal lui-même ainsi que la ville, le comté et l'état correspondants. Si vous ne sélectionnez que les codes postaux de Californie, 4D crée la sélection d'enregistrements correspondante à l'intérieur de la table [Codes Postaux], et ensuite ne charge les enregistrements que lorsque vous en avez besoin (par exemple, pour les afficher ou les imprimer). En d'autres termes, vous travaillez avec une série ordonnée de valeurs (du même type pour chaque champ) partiellement chargée du disque en mémoire. +For example, if all US zip codes were entered in the [Zip Codes] table, it would contain about 100,000 records. In addition, that table would include several fields: the zip code itself and the corresponding city, county, and state. If you select only the zip codes from California, the 4D database engine creates the corresponding selection of records within the [Zip Codes] table, and then loads the records only when they are needed (i.e., when they are displayed or printed). In order words, you work with an ordered series of values (of the same type for each field) that is partially loaded from the disk into the memory by the database engine of 4D. -Procéder de la même manière avec les tableaux serait laborieux, pour les raisons suivantes : +Doing the same thing with arrays would be prohibitive for the following reasons: -- Pour maintenir les quatre types d'information (code postal, ville, comté, état), vous auriez besoin de quatre grands tableaux en mémoire. -- Comme un tableau réside en mémoire dans son intégralité, vous seriez obligé de garder tous les codes postaux en mémoire pendant toute la session de travail, même si les données n'étaient pas utilisées en permanence. -- Toujours parce qu'un tableau réside en mémoire dans son intégralité, les quatre tableaux devraient être chargés ou sauvegardés sur le disque à chaque fois que vous démarreriez ou quitteriez l'application, quand bien même les données ne seraient d'aucune utilité pour la session de travail. +- In order to maintain the four information types (zip code, city, county, state), you would have to maintain four large arrays in memory. +- Because an array is always held in memory in its entirety, you would have to keep all the zip codes information in memory throughout the whole working session, even though the data is not always in use. +- Again, because an array is always held in memory in its entirety, each time the application is started and then quit, the four arrays would have to be loaded and then saved on the disk, even though the data is not used or modified during the working session. -**Conclusion :** Les tableaux ont pour rôle de manipuler une certaine quantité de données pendant une période brève. En contrepartie, comme ils résident en mémoire, ils sont d'une utilisation rapide et facile. +**Conclusion:** Arrays are intended to hold reasonable amounts of data for a short period of time. On the other hand, because arrays are held in memory, they are easy to handle and quick to manipulate. -Cependant, dans certaines circonstances, vous pouvez avoir besoin de tableaux contenant des centaines ou des milliers d'éléments. Voici les formules à appliquer pour calculer la quantité de mémoire utilisée pour chaque type de tableau : +However, in some circumstances, you may need to work with arrays holding hundreds or thousands of elements. The following table lists the formulas used to calculate the amount of memory used for each array type: -| Type de Tableau | Calcul de la quantité de mémoire en octets | -| --------------- | ----------------------------------------------------------------------- | -| Blob | (1+nombre d'éléments) * 12 + somme de la taille de chaque blob | -| Booléen | (31+nombre d'éléments)/8 | -| Date | (1+nombre d'éléments) * 6 | -| Entier long | (1+nombre d'éléments) * 2 | -| Entier long | (1+nombre d'éléments) * 4 | -| Objet | (1+nombre d'éléments) * 8 + somme de la taille de chaque objet | -| Image | (1+nombre d'éléments) * 8 + somme de la taille de chaque image | -| Pointeur | (1+nombre d'éléments) * 8 + somme de la taille de chaque pointeur | -| Réel | (1+nombre d'éléments) * 8 | -| Texte | (1+nombre d'éléments) * 20 + (somme de la taille de chaque texte) * 2 | -| Heure | (1+nombre d'éléments) * 4 | -| Deux dimensions | (1+nombre d'éléments) * 16 + somme de la taille de chaque tableau | +| Array Type | Formula for determining Memory Usage in Bytes | +| --------------- | -------------------------------------------------------------------- | +| Blob | (1+number of elements) * 12 + Sum of the size of each blob | +| Booléen | (31+number of elements)\8 | +| Date | (1+number of elements) * 6 | +| Integer | (1+number of elements) * 2 | +| Long Integer | (1+number of elements) * 4 | +| Objet | (1+number of elements) * 8 + Sum of the size of each object | +| Image | (1+number of elements) * 8 + Sum of the size of each picture | +| Pointeur | (1+number of elements) * 8 + Sum of the size of each pointer | +| Real | (1+number of elements) * 8 | +| Text | (1+number of elements) * 20 + (Sum of the length of each text) * 2 | +| Heure | (1+number of elements) * 4 | +| Two-dimensional | (1+number of elements) * 16 + Sum of the size of each array | -**Notes :** +**Notes:** -- La taille d'un texte en mémoire se calcule par la formule ((Longueur + 1) * 2) -- Quelques octets supplémentaires sont requis pour le repérage de l'élément, le nombre d'éléments et le tableau lui-même. \ No newline at end of file +- The size of a text in memory is calculated using this formula: ((Length + 1) * 2) +- A few additional bytes are required to keep track of the selected element, the number of elements, and the array itself. \ No newline at end of file From 8e21808c3264b8ca44d2c4c71ce15da8371b1e58 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:20:33 +0100 Subject: [PATCH 116/260] New translations cf_branching.md (French) --- .../fr/Concepts/cf_branching.md | 182 ++++++++---------- 1 file changed, 85 insertions(+), 97 deletions(-) diff --git a/website/translated_docs/fr/Concepts/cf_branching.md b/website/translated_docs/fr/Concepts/cf_branching.md index 5f5e0eac3ada66..ab45f5f36ec6c8 100644 --- a/website/translated_docs/fr/Concepts/cf_branching.md +++ b/website/translated_docs/fr/Concepts/cf_branching.md @@ -5,26 +5,26 @@ title: Structures conditionnelles ## If...Else...End if -La syntaxe de la structure conditionnelle `If...Else...End if` est la suivante : +The formal syntax of the `If...Else...End if` control flow structure is: ```4d If(Boolean_Expression) - instruction(s) + statement(s) Else - instruction(s) -End if + statement(s) + End if ``` -A noter que l'élément `Else` est optionnel, vous pouvez écrire : +Note that the `Else` part is optional; you can write: ```4d If(Boolean_Expression) - instruction(s) + statement(s) End if ``` -La structure `If...Else...End if` permet à votre méthode de choisir dans une alternative, en fonction du résultat, TRUE ou FALSE, d’un test (une expression booléenne). Si l’expression booléenne est TRUE, les instructions qui suivent immédiatement le test sont exécutées. Si l’expression booléenne est FALSE, les instructions suivant la ligne Else sont exécutées. Le `Else` est optionnel ; lorsqu’il est omis, c’est la première ligne d’instructions suivant le `End if` (s’il y en a une) qui est exécutée. +The `If...Else...End if` structure lets your method choose between two actions, depending on whether a test (a Boolean expression) is TRUE or FALSE. When the Boolean expression is TRUE, the statements immediately following the test are executed. If the Boolean expression is FALSE, the statements following the Else statement are executed. The `Else` statement is optional; if you omit Else, execution continues with the first statement (if any) following the `End if`. -A noter que l'expression booléenne est toujours évaluée en totalité. Examinons en particulier le test suivant : +Note that the Boolean expression is always fully evaluated. Consider in particular the following test: ```4d If(MethodA & MethodB) @@ -32,7 +32,7 @@ A noter que l'expression booléenne est toujours évaluée en totalité. Examino End if ``` -L'expression n'est TRUE que si les deux méthodes sont TRUE. Or, même si _MethodA_ retourne FALSE, 4D évaluera quand même _MethodB_, ce qui représente une perte de temps inutile. Dans ce cas, il est préférable d'utiliser une structure du type : +he expression is TRUE only if both methods are TRUE. However, even if _MethodA_ returns FALSE, 4D will still evaluate _MethodB_, which is a useless waste of time. In this case, it is more interesting to use a structure like: ```4d If(MethodA) @@ -42,189 +42,177 @@ L'expression n'est TRUE que si les deux méthodes sont TRUE. Or, même si _Metho End if ``` -Le résultat est équivalent et _MethodB_ n'est évaluée que si nécessaire. +The result is similar and _MethodB_ is evaluated only if necessary. -### Exemple +### Example ```4d - // Demander à l'utilisateur de saisir un nom + // Ask the user to enter a name $Find:=Request(Type a name) If(OK=1) QUERY([People];[People]LastName=$Find) Else ALERT("You did not enter a name.") - End if End if ``` -**Astuce :** Il n'est pas obligatoire que des instructions soient exécutées dans chaque branche de l'alternative. Lorsque vous développez un algorithme, ou lorsque vous poursuivez un but précis, rien ne vous empêche d'écrire : +**Tip:** Branching can be performed without statements to be executed in one case or the other. When developing an algorithm or a specialized application, nothing prevents you from writing: ```4d - If(Expression_booléenne) + If(Boolean_Expression) Else - instruction(s) + statement(s) End if ``` -ou : +or: ```4d - If(Expression_booléenne) - instruction(s) + If(Boolean_Expression) + statement(s) Else End if ``` -## Au cas ou...Sinon...Fin de cas +## Case of...Else...End case -La syntaxe de la structure conditionnelle `Case of...Else...End case` est la suivante : +The formal syntax of the `Case of...Else...End case` control flow structure is: ```4d Case of - :(Expression_booléenne) - instruction(s) - :(Expression_booléenne) + :(Boolean_Expression) + statement(s) + :(Boolean_Expression) statement(s) . . . - :(Expression_booléenne) - instruction(s) + :(Boolean_Expression) + statement(s) Else - instruction(s) + statement(s) End case ``` -A noter que l'élément `Else` est optionnel, vous pouvez écrire : +Note that the `Else` part is optional; you can write: ```4d Case of - :(Expression_booléenne) - instruction(s) - :(Expression_booléenne) + :(Boolean_Expression) + statement(s) + :(Boolean_Expression) statement(s) . . . - :(Expression_booléenne) - instruction(s) + :(Boolean_Expression) + statement(s) End case ``` -Tout comme la structure `If...Else...End if`, la structure `Case of...Else...End case` permet également à votre méthode de choisir parmi plusieurs séquences d’instructions. A la différence de la structure `If...Else...End`, la structure `Case of...Else...End case` peut tester un nombre illimité d’expressions booléennes et exécuter la séquence d’instructions correspondant à la valeur TRUE. +As with the `If...Else...End if` structure, the `Case of...Else...End case` structure also lets your method choose between alternative actions. Unlike the `If...Else...End` if structure, the `Case of...Else...End case` structure can test a reasonable unlimited number of Boolean expressions and take action depending on which one is TRUE. -Chaque expression booléenne débute par le caractère deux points (`:`). La combinaison de deux points et d’une expression booléenne est appelée un cas. Par exemple, la ligne suivante est un cas : +Each Boolean expression is prefaced by a colon (`:`). This combination of the colon and the Boolean expression is called a case. For example, the following line is a case: ```4d :(bValidate=1) ``` -Seules les instructions suivant le premier cas TRUE (et ce, jusqu’au cas suivant) seront exécutées. Si aucun des cas n’est TRUE, aucune instruction n’est exécutée (s'il n'y a pas d'élément `Else`). +Only the statements following the first TRUE case (and up to the next case) will be executed. If none of the cases are TRUE, none of the statements will be executed (if no `Else` part is included). -Vous pouvez placer une instruction Else après le dernier cas. Si tous les cas sont FALSE, les instructions suivant le `Else` seront exécutées. +You can include an Else statement after the last case. If all of the cases are FALSE, the statements following the `Else` will be executed. -### Exemple +### Example -Cet exemple teste une variable numérique et affiche une boîte de dialogue d’alerte comportant un simple mot : +This example tests a numeric variable and displays an alert box with a word in it: ```4d Case of - :(vResult=1) //Tester si le chiffre est 1 - ALERT("One.") //Si le chiffre est 1, afficher une alerte - :(vResult=2) //Tester si le chiffre est 2 - ALERT("Two.") //Si le chiffre est 2, afficher une alerte - :(vResult=3) //Tester si le chiffre est 3 - ALERT("Three.") //Si le chiffre est 3, afficher une alerte - Else //Si le chiffre n'est pas 1, 2 ou 3, afficher une alerte + :(vResult=1) //Test if the number is 1 + ALERT("One.") //If it is 1, display an alert + :(vResult=2) //Test if the number is 2 + ALERT("Two.") //If it is 2, display an alert + :(vResult=3) //Test if the number is 3 + ALERT("Three.") //If it is 3, display an alert + Else //If it is not 1, 2, or 3, display an alert ALERT("It was not one, two, or three.") - //déclaration(s) End case ``` -A titre de comparaison, voici la version avec `If...Else...End if` de la même méthode : +For comparison, here is the `If...Else...End if` version of the same method: ```4d - If(vResult=1) //Tester si le chiffre est 1 - ALERT("One.") //Si le chiffre est 1, afficher une alerte + If(vResult=1) //Test if the number is 1 + ALERT("One.") //If it is 1, display an alert Else - If(vResult=2) //Tester si le chiffre est 2 - ALERT("Two.") //Si le chiffre est 2, afficher une alerte + If(vResult=2) //Test if the number is 2 + ALERT("Two.") //If it is 2, display an alert Else - If(vResult=3) //Tester si le chiffre est 3 - ALERT("Three.") //Si le chiffre est 3, afficher une alerte - Else //Si le chiffre n'est pas 1, 2 ou 3, afficher une alerte - ALERT("It was not one, two, or three.") + If(vResult=3) //Test if the number is 3 + ALERT("Three.") //If it is 3, display an alert + Else //If it is not 1, 2, or 3, display an alert + ALERT("It was not one, two, or three.") End if End if End if ``` -Rappelez-vous qu’avec une structure de type `Case of...Else...End case`, seul le premier cas TRUE rencontré est exécuté. Même si d’autres cas sont TRUE, seules les instructions suivant le premier cas TRUE seront prises en compte. +Remember that with a `Case of...Else...End case` structure, only the first TRUE case is executed. Even if two or more cases are TRUE, only the statements following the first TRUE case will be executed. -Par conséquent, lorsque vous testez dans la même méthode des cas simples et des cas complexes, vous devez placer les cas complexes avant les cas simples, sinon ils ne seront jamais exécutés. Par exemple, si vous souhaitez traiter le cas simple (vResult=1) et le cas complexe (vResult=1) & (vCondition#2) et que vous structurez la méthode de la manière suivante : +Consequently, when you want to implement hierarchical tests, you should make sure the condition statements that are lower in the hierarchical scheme appear first in the test sequence. For example, the test for the presence of condition1 covers the test for the presence of condition1&condition2 and should therefore be located last in the test sequence. For example, the following code will never see its last condition detected: ```4d Case of - :(vResult=1) //Tester si le chiffre est 1 - ALERT("One.") //Si le chiffre est 1, afficher une alerte - :(vResult=2) //Tester si le chiffre est 2 - ALERT("Two.") //Si le chiffre est 2, afficher une alerte - :(vResult=3) //Tester si le chiffre est 3 - ALERT("Three.") //Si le chiffre est 3, afficher une alerte - Else //Si le chiffre n'est pas 1, 2 ou 3, afficher une alerte - ALERT("It was not one, two, or three.") + :(vResult=1) + ... //statement(s) + :((vResult=1) & (vCondition#2)) //this case will never be detected + ... //statement(s) End case ``` -... les instructions associées au cas complexe ne seront jamais exécutées. En effet, pour que ce cas soit TRUE, ses deux conditions booléennes doivent l’être. Or, la première condition est celle du cas simple situé précédemment. Lorsqu'elle est TRUE, le cas simple est exécuté et 4D sort de la structure conditionnelle, sans évaluer le cas complexe. Pour que ce type de méthode fonctionne, vous devez écrire : +In the code above, the presence of the second condition is not detected since the test "vResult=1" branches off the code before any further testing. For the code to operate properly, you can write it as follows: ```4d - If(vResult=1) //Tester si le chiffre est 1 - ALERT("One.") //Si le chiffre est 1, afficher une alerte - Else - If(vResult=2) //Tester si le chiffre est 2 - ALERT("Two.") //Si le chiffre est 2, afficher une alerte - Else - If(vResult=3) //Tester si le chiffre est 3 - ALERT("Three.") //Si le chiffre est 3, afficher une alerte - Else //Si le chiffre n'est pas 1, 2 ou 3, afficher une alerte - ALERT("It was not one, two, or three.") - End if - End if - End if + Case of + :((vResult=1) & (vCondition#2)) //this case will be detected first + ... //statement(s) + :(vResult=1) + ... //statement(s) + End case ``` -**Astuce :** Il n'est pas obligatoire que des instructions soient exécutées dans toutes les alternatives. Lorsque vous développez un algorithme, ou lorsque vous poursuivez un but précis, rien ne vous empêche d'écrire : +Also, if you want to implement hierarchical testing, you may consider using hierarchical code. + +**Tip:** Branching can be performed without statements to be executed in one case or another. When developing an algorithm or a specialized application, nothing prevents you from writing: ```4d Case of - :(Expression_booléenne) - :(Expression_booléenne) - instruction(s) - ... + :(Boolean_Expression) + :(Boolean_Expression) + ... - :(Expression_booléenne) - instruction(s) + :(Boolean_Expression) + statement(s) Else - instruction(s) + statement(s) End case ``` -ou : +or: ```4d Case of - :(Expression_booléenne) - :(Expression_booléenne) - ... + :(Boolean_Expression) + :(Boolean_Expression) + statement(s) + ... - :(Expression_booléenne) - instruction(s) + :(Boolean_Expression) + statement(s) Else - instruction(s) End case ``` -ou : +or: ```4d Case of Else - instruction(s) + statement(s) End case ``` From 316229dd1707db9da76dc98596d264435663b0df Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:20:35 +0100 Subject: [PATCH 117/260] New translations cf_looping.md (French) --- .../translated_docs/fr/Concepts/cf_looping.md | 292 +++++++++--------- 1 file changed, 146 insertions(+), 146 deletions(-) diff --git a/website/translated_docs/fr/Concepts/cf_looping.md b/website/translated_docs/fr/Concepts/cf_looping.md index e54a8c0fd06f7a..9df71c97178b9b 100644 --- a/website/translated_docs/fr/Concepts/cf_looping.md +++ b/website/translated_docs/fr/Concepts/cf_looping.md @@ -4,50 +4,50 @@ title: Structures répétitives (ou "boucles") --- ## While...End while -La syntaxe de la structure répétitive (ou boucle) `While...End while` est la suivante : +The formal syntax of the `While...End while` control flow structure is: ```4d - While(Expression_booléenne) - instruction(s) + While(Boolean_Expression) + statement(s) End while ``` -Une boucle `While...End while` exécute les instructions comprises entre `While` et `End while` aussi longtemps que l’expression booléenne est TRUE. Elle teste l’expression booléenne initiale et n’entre pas dans la boucle (et donc n'exécute aucune instruction) si l’expression est à FALSE. +A `While...End while` loop executes the statements inside the loop as long as the Boolean expression is TRUE. It tests the Boolean expression at the beginning of the loop and does not enter the loop at all if the expression is FALSE. -Il est utile d’initialiser la valeur testée dans l’expression booléenne juste avant d’entrer dans la boucle `While...End while`. Initialiser la valeur signifie lui affecter un contenu approprié, généralement pour que l’expression booléenne soit TRUE et que le programme entre dans la boucle. +It is common to initialize the value tested in the Boolean expression immediately before entering the `While...End while` loop. Initializing the value means setting it to something appropriate, usually so that the Boolean expression will be TRUE and `While...End while` executes the loop. -La valeur de l'expression booléenne doit pouvoir être modifiée par un élément situé à l'intérieur de la boucle, sinon elle s'exécutera indéfiniment. La boucle suivante est sans fin car _NeverStop_ est toujours TRUE : +The Boolean expression must be set by something inside the loop or else the loop will continue forever. The following loop continues forever because _NeverStop_ is always TRUE: ```4d NeverStop:=True While(NeverStop) End while ``` -Si vous vous retrouvez dans une telle situation (où une méthode s'exécute de manière incontrôlée), vous pouvez utiliser les fonctions de débogage de 4D et remonter à la source du problème. Pour plus d'informations sur ce point, reportez-vous à la section [Débogueur](error-handling.md). +If you find yourself in such a situation, where a method is executing uncontrolled, you can use the trace facilities to stop the loop and track down the problem. For more information about tracing a method, see the [Error handling](error-handling.md) page. -### Exemple +### Example ```4d - CONFIRM("Add a new record?") //L'utilisateur souhaite-t-il ajouter un enregistrement ? //L'utilisateur souhaite-t-il ajouter un enregistrement ? - While(OK=1) // Tant que l'utilisateur accepte - ADD RECORD([aTable]) // Ajouter un nouvel enregistrement -End while // Une boucle While se termine toujours par End while + CONFIRM("Add a new record?") //The user wants to add a record? + While(OK=1) //Loop as long as the user wants to + ADD RECORD([aTable]) //Add a new record + End while //The loop always ends with End while ``` -Dans cet exemple, la valeur de la variable système `OK` est définie par la commande `CONFIRM` avant que le programme n’entre dans la boucle. Si l’utilisateur clique sur le bouton **OK** dans la boîte de dialogue de confirmation, la variable `OK` prend la valeur 1 et la boucle est exécutée. Dans le cas contraire, la variable `OK` prend la valeur 0 et la boucle est ignorée. Une fois que le programme entre dans la boucle, la commande `ADD RECORD` permet de continuer à l’exécuter car elle met la variable système `OK` à 1 lorsque l’utilisateur sauvegarde l’enregistrement. Lorsque l’utilisateur annule (ne valide pas) le dernier enregistrement, la variable système `OK` prend la valeur 0 et la boucle s’arrête. +In this example, the `OK` system variable is set by the `CONFIRM` command before the loop starts. If the user clicks the **OK** button in the confirmation dialog box, the `OK` system variable is set to 1 and the loop starts. Otherwise, the `OK` system variable is set to 0 and the loop is skipped. Once the loop starts, the `ADD RECORD` command keeps the loop going because it sets the `OK` system variable to 1 when the user saves the record. When the user cancels (does not save) the last record, the `OK` system variable is set to 0 and the loop stops. ## Repeat...Until -La syntaxe de la structure répétitive (ou boucle) `Repeat...Until` est la suivante : +The formal syntax of the `Repeat...Until` control flow structure is: ```4d Repeat - instruction(s) + statement(s) Until(Boolean_Expression) ``` -La boucle `Repeat...Until` est semblable à la boucle [While...End while](flow-control#whileend-while), à la différence qu’elle teste la valeur de l’expression booléenne après l’exécution de la boucle et non avant. Ainsi, la boucle est toujours exécutée au moins une fois, tandis que si l’expression booléenne est initialement à Faux, la boucle `While...End while` ne s’exécute pas du tout. +A `Repeat...Until` loop is similar to a [While...End while](flow-control#whileend-while) loop, except that it tests the Boolean expression after the loop rather than before. Thus, a `Repeat...Until` loop always executes the loop once, whereas if the Boolean expression is initially False, a `While...End while` loop does not execute the loop at all. -L'autre particularité de la boucle `Repeat...Until` est qu’elle se poursuit jusqu’à ce que l’expression booléenne soit à TRUE. +The other difference with a `Repeat...Until` loop is that the loop continues until the Boolean expression is TRUE. -### Exemple -Comparez l’exemple suivant avec celui de la boucle `While...End while`. Vous constatez qu’il n’est pas nécessaire d’initialiser l’expression booléenne — il n’y a pas de commande `CONFIRM` pour initialiser la variable `OK`. +### Example +Compare the following example with the example for the `While...End while` loop. Note that the Boolean expression does not need to be initialized—there is no `CONFIRM` command to initialize the `OK` variable. ```4d Repeat @@ -56,193 +56,193 @@ Comparez l’exemple suivant avec celui de la boucle `While...End while`. Vous c ``` ## For...End for -La syntaxe de la structure répétitive `For...End for` est la suivante : +The formal syntax of the `For...End for` control flow structure is: ```4d For(Counter_Variable;Start_Expression;End_Expression{;Increment_Expression}) - instruction(s) + statement(s) End for ``` -La structure `For...End for` est une boucle contrôlée par un compteur : +The `For...End for` loop is a loop controlled by a counter variable: -- La variable compteur *Counter_Variable* est une variable numérique (Réel ou Entier long) initialisée par `For...End for` à la valeur spécifiée par *Start_Expression*. -- La variable Variable_Compteur est incrémentée de la valeur spécifiée par le paramètre optionnel *Increment_Expression* à chaque fois que la boucle est exécutée. Si vous ne passez pas de valeur dans *Increment_Expression*, la variable compteur est incrémentée par défaut de un (1). -- Lorsque le compteur atteint la valeur définie par *End_Expression*, la boucle s'arrête. +- The counter variable *Counter_Variable* is a numeric variable (Real or Long Integer) that the `For...End for` loop initializes to the value specified by *Start_Expression*. +- Each time the loop is executed, the counter variable is incremented by the value specified in the optional value *Increment_Expression*. If you do not specify *Increment_Expression*, the counter variable is incremented by one (1), which is the default. +- When the counter variable passes the *End_Expression* value, the loop stops. -**Important :** Les expressions numériques *Start_Expression*, *End_Expression* et *Increment_Expression* sont évaluées une seule fois, au début de la boucle. Si ces expressions sont des variables, leur modification depuis l'intérieur de la boucle n'affectera pas l'exécution de la boucle. +**Important:** The numeric expressions *Start_Expression*, *End_Expression* and *Increment_Expression* are evaluated once at the beginning of the loop. If these expressions are variables, changing one of these variables within the loop will not affect the loop. -**Astuce :** En revanche, vous pouvez, si vous le souhaitez, modifier la valeur de la variable *Counter_Variable* depuis l'intérieur de la boucle et cela affectera l'exécution de la boucle. +**Tip:** However, for special purposes, you can change the value of the counter variable *Counter_Variable* within the loop; this will affect the loop. -- Généralement, *Start_Expression* est inférieure à *End_Expression*. -- Si les deux expressions sont égales, la boucle ne sera exécutée qu'une fois. -- Si *Start_Expression* est supérieure à *End_Expression*, la boucle ne s'exécutera pas du tout, à moins que vous ne spécifiiez une *Increment_Expression* négative. Reportez-vous ci-dessous au paragraphe décrivant ce point. +- Usually *Start_Expression* is less than *End_Expression*. +- If *Start_Expression* and *End_Expression* are equal, the loop will execute only once. +- If *Start_Expression* is greater than *End_Expression*, the loop will not execute at all unless you specify a negative *Increment_Expression*. See the examples. -### Exemples élémentaires -1. La boucle suivante s'exécute 100 fois : +### Basic examples +1. The following example executes 100 iterations: ```4d For(vCounter;1;100) - //Faire quelque chose + //Do something End for ``` -2. L'exemple suivant permet de traiter tous les éléments du tableau anArray : +2. The following example goes through all elements of the array anArray: ```4d For($vlElem;1;Size of array(anArray)) - //Faire quelque chose avec l'élément + //Do something with the element anArray{$vlElem}:=... End for ``` -3. L'exemple suivant permet d'examiner chaque caractère du texte vtSomeText : +3. The following example goes through all the characters of the text vtSomeText: ```4d For($vlChar;1;Length(vtSomeText)) - //Faire quelque chose avec le caractère si c'est une tabulation + //Do something with the character if it is a TAB If(Character code(vtSomeText[[$vlChar]])=Tab) //... End if End for ``` -4. L'exemple suivant permet de traiter tous les enregistrements de la sélection de la table [aTable] : +4. The following example goes through the selected records for the table [aTable]: ```4d FIRST RECORD([aTable]) For($vlRecord;1;Records in selection([aTable])) - //Faire quelque chose avec chaque enregistrement + //Do something with the record SEND RECORD([aTable]) //... - // Passer à l'enregistrement suivant + //Go to the next record NEXT RECORD([aTable]) End for ``` -La plupart des structures `For...End for` que vous écrirez dans vos projets ressembleront à celles présentées ci-dessus. +Most of the `For...End for` loops you will write in your projects will look like the ones listed in these examples. -### Décrémenter la variable Compteur +### Decrementing variable counter -Dans certains cas, vous pouvez souhaiter disposer d'une boucle dont la valeur de la variable compteur décroît au lieu de croître. Pour cela, *Start_Expression* doit être supérieure à *End_Expression* et *Increment_Expression* doit être négative. Les exemples suivants effectuent les mêmes tâches que les précédents, mais en sens inverse : +In some cases, you may want to have a loop whose counter variable is decreasing rather than increasing. To do so, you must specify *Start_Expression* greater than *End_Expression* and a negative *Increment_Expression*. The following examples do the same thing as the previous examples, but in reverse order: -5. La boucle suivante s'exécute 100 fois : +5. The following example executes 100 iterations: ```4d For(vCounter;100;1;-1) - //Faire quelque chose + //Do something End for ``` -6. L'exemple suivant permet de traiter tous les éléments du tableau anArray : +6. The following example goes through all elements of the array anArray: ```4d For($vlElem;Size of array(anArray);1;-1) - //Faire quelque chose avec l'élément + //Do something with the element anArray{$vlElem}:=... End for ``` -7. L'exemple suivant permet d'examiner chaque caractère du texte vtSomeText : +7. The following example goes through all the characters of the text vtSomeText: ```4d For($vlChar;Length(vtSomeText);1;-1) - //Faire quelque chose avec le caractère si c'est une tabulation + //Do something with the character if it is a TAB If(Character code(vtSomeText[[$vlChar]])=Tab) //... End if End for ``` -8. L'exemple suivant permet de traiter tous les enregistrements de la sélection de la table [aTable] : +8. The following example goes through the selected records for the table [aTable]: ```4d LAST RECORD([aTable]) For($vlRecord;Records in selection([aTable]);1;-1) - //Faire quelque chose avec chaque enregistrement + //Do something with the record SEND RECORD([aTable]) //... - //Passer à l'enregistrement précédent + //Go to the previous record PREVIOUS RECORD([aTable]) End for ``` -### Incrementer la variable compteur de plus de 1 +### Incrementing the counter variable by more than one -Si vous le souhaitez, vous pouvez passer dans *Increment_Expression* une valeur (positive ou négative) dont la valeur absolue est supérieure à un. +If you need to, you can use an *Increment_Expression* (positive or negative) whose absolute value is greater than one. -9. La boucle suivante ne traite que les éléments pairs du tableau anArray : +9. The following loop addresses only the even elements of the array anArray: ```4d For($vlElem;2;Size of array(anArray);2) - //Faire quelque chose avec l'élément 2,4...2n + //Do something with the element #2,#4...#2n anArray{$vlElem}:=... End for ``` -### Comparaison des structures répétitives +### Comparing looping structures -Revenons au premier exemple `For...End for`. La boucle suivante s'exécute 100 fois : +Let's go back to the first `For...End for` example. The following example executes 100 iterations: ```4d For(vCounter;1;100) - //Faire quelque chose + //Do something End for ``` -Il est intéressant d'examiner la manière dont les boucles `While...End while` et `Repeat...Until` effectuent la même action. Voici la boucle `While...End while` équivalente : +It is interesting to see how the `While...End while` loop and `Repeat...Until` loop would perform the same action. Here is the equivalent `While...End while` loop: ```4d - $i :=1 // Initialisation du compteur -While ($i<=100) // Boucle 100 fois - // Faire quelque chose - $i :=$i +1 // Il faut incrémenter le compteur + $i:=1 //Initialize the counter + While($i<=100) //Loop 100 times + //Do something + $i:=$i+1 //Need to increment the counter End while ``` -Voici la boucle `Repeat...Until` équivalente : +Here is the equivalent `Repeat...Until` loop: ```4d - $i :=1 // Initialisation du compteur + $i:=1 //Initialize the counter Repeat - // Faire quelque chose - $i :=$i +1 // Il faut incrémenter le compteur -Until($i=100) // Boucle 100 fois + //Do something + $i:=$i+1 //Need to increment the counter + Until($i=100) //Loop 100 times ``` -**Astuce :** La boucle `For...End for` est généralement plus rapide que les boucles `While...End while` et `Repeat...Until` car 4D teste la condition en interne pour chaque cycle de la boucle et incrémente lui-même le compteur. Par conséquent, nous vous conseillons de préférer à chaque fois que c'est possible la structure `For...End for`. +**Tip:** The `For...End for` loop is usually faster than the `While...End while` and `Repeat...Until` loops, because 4D tests the condition internally for each cycle of the loop and increments the counter. Therefore, use the `For...End for` loop whenever possible. -### Optimiser l'exécution de For...End for +### Optimizing the execution of the For...End for loops -Vous pouvez utiliser comme compteur une variable interprocess, process ou locale, et lui attribuer le type Réel, Entier ou Entier long. Pour des boucles longues, et particulièrement en mode compilé, nous vous conseillons d'employer des variables locales de type Entier long. +You can use Real and Long Integer variables as well as interprocess, process, and local variable counters. For lengthy repetitive loops, especially in compiled mode, use local Long Integer variables. -10. Voici un exemple : +10. Here is an example: ```4d - C_LONGINT($vlCounter) // Utilisons une variable locale de type Entier long -For($vlCounter;1;10000) - // Faire quelque chose - End for + C_LONGINT($vlCounter) //use local Long Integer variables + For($vlCounter;1;10000) + //Do something + End for ``` -### Structures For...End emboîtées +### Nested For...End for looping structures -Vous pouvez emboîter autant de structures répétitives que vous voulez (dans les limites du raisonnable). Cela s'applique aux structures de type `For...End for`. Il y a dans ce cas une erreur courante à éviter : assurez-vous d'utiliser une variable compteur différente par structure de boucle. +You can nest as many control structures as you (reasonably) need. This includes nesting `For...End for` loops. To avoid mistakes, make sure to use different counter variables for each looping structure. -Voici deux exemples : +Here are two examples: -11. L'exemple suivant permet de traiter tous les éléments d'un tableau à deux dimensions : +11. The following example goes through all the elements of a two-dimensional array: ```4d For($vlElem;1;Size of array(anArray)) //... - // Faire quelque chose avec la ligne - // ... + //Do something with the row + //... For($vlSubElem;1;Size of array(anArray{$vlElem})) - //Faire quelque chose avec l'élément + //Do something with the element anArray{$vlElem}{$vlSubElem}:=... End for End for ``` -12. L'exemple suivant construit un tableau de pointeurs vers tous les champs de type Date présents dans la base : +12. The following example builds an array of pointers to all the date fields present in the database: ```4d ARRAY POINTER($apDateFields;0) @@ -264,51 +264,51 @@ Voici deux exemples : ``` ## For each...End for each -La syntaxe de la structure répétitive (ou boucle) `For each...End for each` est la suivante : +The formal syntax of the `For each...End for each` control flow structure is: ```4d - For each(Element_courant;Expression{;debut{;fin}}){Until|While}(Expression_booléenne)} - instruction(s) + For each(Current_Item;Expression{;begin{;end}}){Until|While}(Boolean_Expression)} + statement(s) End for each ``` -La structure `For each...End for each` exécute le cycle d'instructions définies pour chaque *Elément_courant* de *Expression*. Le type de *Elément_courant* dépend du type de *Expression*. La boucle `For each...End for each` peut itérer parmi trois types d'*Expression* : +The `For each...End for each` structure iterates a specified *Current_item* over all values of the *Expression*. The *Current_item* type depends on the *Expression* type. The `For each...End for each` loop can iterate through three *Expression* types: -- collections : boucle sur chaque élément de la collection, -- entity selections : boucle sur chaque entity, -- objets : boucle sur chaque propriété d'objet. +- collections: loop through each element of the collection, +- entity selections: loop through each entity, +- objects: loop through each object property. -Le tableau suivant compare les trois types de `Pour chaque...Fin de chaque` : +The following table compares the three types of `For each...End for each`: -| | Boucle sur collections | Boucle sur entity selections | Boucle sur objets | -| ----------------------------------------- | ------------------------------------------------------- | ---------------------------------- | ----------------------------- | -| Type Elément_courant | Variable du même type que les éléments de la collection | Entity | Variable texte | -| Types d’expressions | Collection (avec des éléments du même type) | Entity selection | Objet | -| Nombre de boucles (par défaut) | Nombre d'éléments de la collection | Nombre d'entités dans la sélection | Nombre de propriétés d'objets | -| Prise en charge de Paramètres début / fin | Oui | Oui | Non | +| | Loop through collections | Loop through entity selections | Loop through objects | +| --------------------------------- | ------------------------------------------------ | ----------------------------------- | --------------------------- | +| Current_Item type | Variable of the same type as collection elements | Entity | Text variable | +| Expression type | Collection (with elements of the same type) | Entity selection | Objet | +| Number of loops (by default) | Number of collection elements | Number of entities in the selection | Number of object properties | +| Support of begin / end parameters | Yes | Yes | No | -- Le nombre de boucles est évalué au démarrage et ne changera pas en cours de traitement. L'ajout ou la suppression d'éléments pendant la boucle est donc déconseillé car il pourra en résulter une redondance ou un manque d'itérations. -- Par défaut, les _instructions_ incluses sont exécutées pour chaque valeur de *Expression*. Il est toutefois possible de sortir de la boucle en testant une condition soit au début de chaque itération (`While`) ou à la fin de chaque itération (`Until`). -- Les paramètres optionnels *début* et *fin* peuvent être utilisés avec les collections et les entity selections afin de définir des bornes pour la boucle. -- La boucle `For each...End for each` peut être utilisée sur une **collection partagée** ou un **objet partagé**. Si vous souhaitez modifier un ou plusieurs éléments des propriétés d'objets ou de la collection dans le code, vous devez utiliser les mots-clés `Use...End use`. Vous pouvez, si vous le souhaitez, appeler les mots-clés `Use...End use` : - - avant de saisir la boucle, si les éléments doivent être modifiés ensemble pour des raisons d'intégrité, ou bien - - dans la boucle, lorsque quelques éléments/propriétés seulement doivent être modifiés et qu'aucune gestion de l'intégrité n'est requise. +- The number of loops is evaluated at startup and will not change during the processing. Adding or removing items during the loop is usually not recommended since it may result in missing or redundant iterations. +- By default, the enclosed _statement(s)_ are executed for each value in *Expression*. It is, however, possible to exit the loop by testing a condition either at the begining of the loop (`While`) or at the end of the loop (`Until`). +- The *begin* and *end* optional parameters can be used with collections and entity selections to define boundaries for the loop. +- The `For each...End for each` loop can be used on a **shared collection** or a **shared object**. If your code needs to modify one or more element(s) of the collection or object properties, you need to use the `Use...End use` keywords. Depending on your needs, you can call the `Use...End use` keywords: + - before entering the loop, if items should be modified together for integrity reasons, or + - within the loop when only some elements/properties need to be modified and no integrity management is required. -### Boucle sur collections +### Loop through collections -Lorsque `For each...End for each` est utilisée avec une _Expression_ de type _Collection_, le paramètre _Elément_courant_ est une variable du même type que les éléments de la collection. Par défaut, le nombre de boucles est basé sur le nombre d'éléments de la collection. +When `For each...End for each` is used with an _Expression_ of the _Collection_ type, the _Current_Item_ parameter is a variable of the same type as the collection elements. By default, the number of loops is based on the number of items of the collection. -La collection doit contenir uniquement des éléments du même type. Dans le cas contraire, une erreur sera retournée dès que la première valeur de type différent sera assignée à la variable _Elément_courant_. +The collection must contain only elements of the same type, otherwise an error will be returned as soon as the _Current_Item_ variable is assigned the first mismatched value type. -A chaque itération de la boucle, la variable _Elément_courant_ reçoit automatiquement l'élément correspondant de la collection. Vous devez tenir compte des points suivants : +At each loop iteration, the _Current_Item_ variable is automatically filled with the matching element of the collection. The following points must be taken into account: -- La variable _Elément_courant_ doit être du même type que les éléments de la collection. Si un seul élément de la collection n'est pas du même type que la variable, une erreur est générée et la boucle s'arrête. -- Si la variable _Elément_courant_ est de type objet ou collection (i.e. Si un seul élément de la collection n'est pas du même type que la variable, une erreur est générée et la boucle s'arrête. -- Si la collection contient des éléments de valeur **Null**, une erreur sera générée si le type de la variable _Elément_courant_ ne prend pas en charge la valeur **Null** (comme par exemple les variables entier long). +- If the _Current_Item_ variable is of the object type or collection type (i.e. if _Expression_ is a collection of objects or of collections), modifying this variable will automatically modify the matching element of the collection (because objects and collections share the same references). If the variable is of a scalar type, only the variable will be modified. +- The _Current_Item_ variable must be of the same type as the collection elements. If any collection item is not of the same type as the variable, an error is generated and the loop stops. +- If the collection contains elements with a **Null** value, an error will be generated if the _Current_Item_ variable type does not support **Null** values (such as longint variables). -#### Exemple +#### Example -Vous souhaitez calculer quelques statistiques sur une collection de nombres : +You want to compute some statistics for a collection of numbers: ```4d C_COLLECTION($nums) $nums:=New collection(10;5001;6665;33;1;42;7850) @@ -330,19 +330,19 @@ Vous souhaitez calculer quelques statistiques sur une collection de nombres : //$vUnder=4,$vOver=2 ``` -### Boucle sur entity selections +### Loop through entity selections -Lorsque `For each...End for each` est utilisée avec une _Expression_ de type _Entity selection_, le paramètre _Elément_courant_ contient l'entity en cours de traitement. +When `For each...End for each` is used with an _Expression_ of the _Entity selection_ type, the _Current_Item_ parameter is the entity that is currently processed. -Le nombre de boucles est basé sur le nombre d'entities présentes dans l'entity selection. A chaque itération de la boucle, le paramètre *Elément_courant* reçoit automatiquement l'entity qui est en cours de traitement. +The number of loops is based on the number of entities in the entity selection. On each loop iteration, the *Current_Item* parameter is automatically filled with the entity of the entity selection that is currently processed. -**Note :** Si l'entity selection contient une entity qui a été supprimée entre-temps par un autre process, elle est automatiquement ignorée durant la boucle. +**Note:** If the entity selection contains an entity that was removed meanwhile by another process, it is automatically skipped during the loop. -N'oubliez pas que toute modification effectuée sur l'entity en cours de traitement doit être explicitement sauvegardée (si nécessaire) à l'aide de la méthode `entity.save( )`. +Keep in mind that any modifications applied on the current entity must be saved explicitly using `entity.save( )`. -#### Exemple +#### Example -Vous souhaitez augmenter le salaire de tous les employés britanniques dans une entity selection : +You want to raise the salary of all British employees in an entity selection: ```4d C_OBJECT(emp) For each(emp;ds.Employees.query("country='UK'")) @@ -351,15 +351,15 @@ Vous souhaitez augmenter le salaire de tous les employés britanniques dans une End for each ``` -### Boucles sur des propriétés d'objets +### Loop through object properties -Lorsque `For each...End for each` est utilisée avec une *Expression* de type Objet, le paramètre *Elément_courant* est une variable texte qui reçoit automatiquement le nom de la propriété en cours de traitement. +When `For each...End for each` is used with an *Expression* of the Object type, the *Current_Item* parameter is a text variable automatically filled with the name of the currently processed property. -Les propriétés de l'objet sont itérées en fonction de leur ordre de création. Pendant la boucle, il est possible d'ajouter ou de supprimer des propriétés dans l'objet, sans pour autant modifier le nombre de boucles qui reste basé sur le nombre de propriétés initial de l'objet. +The properties of the object are processed according to their order of creation. During the loop, properties can be added to or removed from the object, without modifying the number of loops that will remain based on the original number of properties of the object. -#### Exemple +#### Example -Vous souhaitez passer en majuscules les propriétés contenant des noms dans l'objet suivant : +You want to switch the names to uppercase in the following object: ```4d { "firstname": "gregory", @@ -367,7 +367,7 @@ Vous souhaitez passer en majuscules les propriétés contenant des noms dans l'o "age": 20 } ``` -Vous pouvez écrire : +You can write: ```4d For each(property;vObject) If(Value type(vObject[property])=Is text) @@ -382,23 +382,23 @@ Vous pouvez écrire : "age": 20 } ``` -### Paramètres début / fin +### begin / end parameters -Vous pouvez définir des bornes pour l'itération à l'aide des paramètres optionnels début et fin. +You can define bounds to the iteration using the optional begin and end parameters. -**Note :** Les paramètres *début* et *fin* sont utilisables uniquement avec les boucles sur des collections et des entity selections (ils sont ignorés avec les boucles sur des propriétés d'objets). +**Note:** The *begin* and *end* parameters can only be used in iterations through collections and entity selections (they are ignored on object properties). -- Dans le paramètre *début*, passez la position de l'élément de *Expression* auquel démarrer l'itération (*début* est inclus). -- Dans le paramètre *fin*, vous pouvez passer la position de l'élément de *Expression* auquel stopper l'itération (*fin* est exclus). +- In the *begin* parameter, pass the element position in *Expression* at which to start the iteration (*begin* is included). +- In the *end* parameter, you can also pass the element position in *Expression* at which to stop the iteration (*end* is excluded). -Si *fin* est omis ou si *fin* est plus grand que le nombre d'éléments de *Expression*, les éléments sont itérés depuis *début* jusqu'au dernier inclus. Si les paramètres *début* et *fin* sont des valeurs positives, ils représentent des positions d'éléments dans *Expression*. Si *begin* est une valeur négative, elle est recalculée comme `begin:=begin+Taille expression` (elle est considérée comme un décalage à partir de la fin de *Expression*). Si la valeur calculée est négative, *begin* prend la valeur 0. **Note :** Même si début est une valeur négative, l'itération est toujours effectuée dans le même ordre. Si *fin* est une valeur négative, elle est recalculée comme `fin:=fin+Taille expression` +If *end* is omitted or if *end* is greater than the number of elements in *Expression*, elements are iterated from *begin* until the last one (included). If the *begin* and *end* parameters are positive values, they represent actual positions of elements in *Expression*. If *begin* is a negative value, it is recalculed as `begin:=begin+Expression size` (it is considered as the offset from the end of *Expression*). If the calculated value is negative, *begin* is set to 0. **Note:** Even if begin is negative, the iteration is still performed in the standard order. If *end* is a negative value, it is recalculed as `end:=end+Expression size` -Par exemple: -- une collection contient 10 éléments (numérotés de 0 à 9) -- début=-4 > début=-4+10=6 > l'itération démarre au 6e élément (numéro 5) -- fin=-2 > fin=-2+10=8 > l'itération stoppe avant le 8e élément (numéro 7), i.e. +For example: +- a collection contains 10 elements (numbered from 0 to 9) +- begin=-4 -> begin=-4+10=6 -> iteration starts at the 6th element (#5) +- end=-2 -> end=-2+10=8 -> iteration stops before the 8th element (#7), i.e. at the 7th element. -#### Exemple +#### Example ```4d C_COLLECTION($col;$col2) @@ -414,27 +414,27 @@ Par exemple: End for each //$col2=[1,2,3,"a","b","c","d"] ``` -### Conditions Until et While -Vous pouvez contrôler l'exécution de `For each...End for each` en ajoutant une condition `Jusque` ou `Tant que` à la boucle. When an `Until(condition)` statement is associated to the loop, the iteration will stop as soon as the condition is evaluated to `True`, whereas when is case of a `While(condition)` statement, the iteration will stop when the condition is first evaluated to `False`. +### Until and While conditions +You can control the `For each...End for each` execution by adding an `Until` or a `While` condition to the loop. When an `Until(condition)` statement is associated to the loop, the iteration will stop as soon as the condition is evaluated to `True`, whereas when is case of a `While(condition)` statement, the iteration will stop when the condition is first evaluated to `False`. -Vous pouvez passer un mot-clé ou l'autre en fonction de vos besoins : +You can pass either keyword depending on your needs: -- La condition `Until` est testée à la fin de chaque itération, donc si *Expression* n'est ni vide ni Null, la boucle sera exécutée au moins une fois. -- La condition `While` est testée au début de chaque itération, donc en fonction du résultat de la condition, la boucle peut ne pas être exécutée du tout. +- The `Until` condition is tested at the end of each iteration, so if the *Expression* is not empty or null, the loop will be executed at least once. +- The `While` condition is tested at the beginning of each iteration, so according to the condition result, the loop may not be executed at all. -#### Exemple +#### Example ```4d $colNum:=New collection(1;2;3;4;5;6;7;8;9;10) $total:=0 - For each($num;$colNum)While($total<30) //testé au début + For each($num;$colNum)While($total<30) //tested at the beginning $total:=$total+$num End for each ALERT(String($total)) //$total = 36 (1+2+3+4+5+6+7+8) $total:=1000 - For each($num;$colNum)Until($total>30) //testé à la fin + For each($num;$colNum)Until($total>30) //tested at the end $total:=$total+$num End for each ALERT(String($total)) //$total = 1001 (1000+1) From fe2ea8f7d5f19a7e42c7e148016017fd6f4dc0e9 Mon Sep 17 00:00:00 2001 From: arnaud4d Date: Wed, 16 Dec 2020 16:20:38 +0100 Subject: [PATCH 118/260] New translations classes.md (French) --- .../translated_docs/fr/Concepts/classes.md | 326 ++++++++---------- 1 file changed, 151 insertions(+), 175 deletions(-) diff --git a/website/translated_docs/fr/Concepts/classes.md b/website/translated_docs/fr/Concepts/classes.md index 834f2ab787d07a..3a705997e2ede4 100644 --- a/website/translated_docs/fr/Concepts/classes.md +++ b/website/translated_docs/fr/Concepts/classes.md @@ -6,32 +6,32 @@ title: Classes ## Aperçu -Le langage 4D prend en charge le concept de **classes**. Dans un langage de programmation, l'utilisation d'une classe vous permet de définir le comportement d'un objet avec des propriétés et des fonctions associées. +The 4D language supports the concept of **classes**. In a programming language, using a class allows you to define an object behaviour with associated properties and functions. -Une fois qu'une classe est définie, vous pouvez **instancier** des objets de cette classe n'importe où dans votre code. Chaque objet est une instance de sa classe. Une classe peut `s'étendre` à une autre classe, puis hériter de ses fonctions. +Once a class is defined, you can **instantiate** objects of this class anywhere in your code. Each object is an instance of its class. A class can `extend` another class, and then inherits from its functions. -Les modèles de classe 4D et de classe JavaScript sont similaires, et sont basés sur une chaîne de prototypes. +The class model in 4D is similar to classes in JavaScript, and based on a chain of prototypes. -### L'objet classe +### Class object -Une classe est un objet de classe "Class". Un objet de classe a les propriétés et méthodes suivantes : +A class is an object itself, of "Class" class. A class object has the following properties and methods: -- `name` qui doit être conforme à ECMAScript -- un objet `superclass` (facultatif, nul s'il n'y en a aucun) -- une méthode `new()` permettant d'instancier des objets de classe. +- `name` which must be ECMAScript compliant +- `superclass` object (optional, null if none) +- `new()` method, allowing to instantiate class objects. -De plus, un objet de classe peut référencer : -- un objet `constructeur` (facultatif) -- un objet `prototype`, contenant des objets de fonction nommés (facultatif). +In addition, a class object can reference: +- a `constructor` object (optional) +- a `prototype` object, containing named function objects (optional). -Un objet de classe est un objet partagé et est donc accessible simultanément à partir de différents processus 4D. +A class object is a shared object and can therefore be accessed from different 4D processes simultaneously. -### Recherche et prototype des propriétés +### Property lookup and prototype -Tous les objets de 4D sont liés en interne à un objet de classe. Lorsque 4D ne trouve pas de propriété dans un objet, il effectue un recherche dans l'objet prototype de sa classe; s'il ne la trouve pas, 4D poursuit sa recherche dans l'objet prototype de sa classe mère (superclass), et ainsi de suite jusqu'à ce qu'il n'y ait plus de superclass. +All objects in 4D are internally linked to a class object. When 4D does not find a property in an object, it searches in the prototype object of its class; if not found, 4D continues searching in the prototype object of its superclass, and so on until there is no more superclass. -Tous les objets héritent de la classe "Object" comme classe supérieure d'arbre d'héritage. +All objects inherit from the class "Object" as their inheritance tree top class. ```4d //Class: Polygon @@ -49,13 +49,13 @@ $instance:=OB Instance of($poly;4D.Object) // true ``` -Lors de l'énumération des propriétés d'un objet, son prototype de classe n'est pas énuméré. Par conséquent, l'instruction `For each` et la commande `JSON Stringify` ne retournent pas les propriétés de l'objet du prototype de classe. La propriété d'objet prototype d'une classe est une propriété cachée interne. +When enumerating properties of an object, its class prototype is not enumerated. As a consequence, `For each` statement and `JSON Stringify` command do not return properties of the class prototype object. The prototype object property of a class is an internal hidden property. -### Définition d'une classe +### Class definition -Un fichier de classe utilisateur définit un modèle d'objet qui peut être instancié dans le code de la base de données en appelant la méthode membre de la classe `new()`. Vous utiliserez généralement des [mots-clés de classe](#class-keywords) et des [commandes de classe](#class-commands) spécifiques dans le fichier de classe. +A user class file defines a model of object that can be instantiated in the database code by calling the `new()` class member method. You will usually use specific [class keywords](#class-keywords) and [class commands](#class-commands) in the class file. -Par exemple : +For example: ```4d //Class: Person.4dm @@ -66,7 +66,7 @@ Class constructor This.lastName:=$2 ``` -Dans une méthode, créons une "Personne" : +In a method, creating a "Person": ``` C_OBJECT($o) @@ -74,14 +74,14 @@ $o:=cs.Person.new("John";"Doe") // $o: {firstName: "John";lastName: "Doe" } ``` -A noter que vous pouvez créer un fichier de classe vide et instancier des objets vides. Par exemple, si vous créez le fichier de classe `Empty.4dm suivant` : +Note that you could create an empty class file, and instantiate empty objects. For example, if you create the following `Empty.4dm` class file: ```4d -//Fichier classe Empty.4dm -//Rien +//Empty.4dm class file +//Nothing ``` -Vous pouvez saisir dans une méthode : +You could write in a method: ```4d @@ -93,103 +93,103 @@ $cName:=OB Class($o).name //"Empty" ## Class stores -Les classes disponibles sont accessibles depuis leurs class stores. Les class stores suivants sont disponibles : +Available classes are accessible from their class stores. The following class stores are available: -- un class store pour les classes 4D intégrées. Il est retourné par la commande `4D`. -- un class store pour chaque base de données ou composant ouvert(e). Il est retourné par la commande `cs`. Ce sont des "classes d'utilisateurs" (user classes). +- a class store for built-in 4D classes. It is returned by the `4D` command. +- a class store for each opened database or component. It is returned by the `cs` command. These are "user classes". -Par exemple, vous créez une nouvelle instance d'un objet de myClass à l'aide de l'instruction `cs.myClass.new()` (`cs` signifie *classtore*). +For example, you create a new instance of an object of myClass using the `cs.myClass.new()` statement (`cs` means *classtore*). -## Gestion des classes utilisateur +## Handling user classes -### Fichiers de classe (class files) +### Class files -Une classe utilisateur dans 4D est définie par un fichier de méthode spécifique (.4dm), stocké dans le dossier `/Project/Sources/Classes/`. Le nom du fichier est le nom de la classe. +A user class in 4D is defined by a specific method file (.4dm), stored in the `/Project/Sources/Classes/` folder. The name of the file is the class name. -Par exemple, si vous souhaitez définir une classe nommée "Polygon", vous devez créer le fichier suivant : +For example, if you want to define a class named "Polygon", you need to create the following file: -- Dossier Project +- Project folder + Project * Sources - Classes + Polygon.4dm -### Noms de classe +### Class names -Lorsque vous nommez des classes, gardez à l'esprit les règles suivantes : +When naming classes, you should keep in mind the following rules: -- Un nom de classe doit être conforme à ECMAScript. -- Les noms de classe sont sensibles à la casse. -- Il n'est pas recommandé de donner le même nom à une classe et à une table de base de données, afin d'éviter tout conflit. +- A class name must be ECMAScript compliant. +- Class names are case sensitive. +- Giving the same name to a class and a database table is not recommended, in order to prevent any conflict. -### Interface 4D Developer +### 4D Developer interface -Les fichiers de classe sont automatiquement stockés à l'emplacement approprié lorsqu'ils sont créés via l'interface de 4D Developer, soit via le menu **Fichier**, soit via l'Explorateur. +Class files are automatically stored at the appropriate location when created through the 4D Developer interface, either via the **File** menu or the Explorer. -#### Menu Fichier et barre d'outils +#### File menu and toolbar -Vous pouvez créer un nouveau fichier de classe pour le projet en sélectionnant **Nouveau> Classe...** dans le menu **Fichier** de 4D Developer ou dans la barre d'outils. +You can create a new class file for the project by selecting **New > Class...** in the 4D Developer **File** menu or from the toolbar. -Vous pouvez également utiliser le raccourci **Ctrl+Maj+Alt+k**. +You can also use the **Ctrl+Shift+Alt+k** shortcut. -#### Explorateur +#### Explorer -Dans la page **Méthodes** de l'Explorateur, les classes sont regroupées dans la catégorie **Classes**. +In the **Methods** page of the Explorer, classes are grouped in the **Classes** category. -Pour créer une nouvelle classe, vous pouvez : +To create a new class, you can: -- sélectionnez la catégorie **Classes** et cliquez sur le bouton . -- sélectionnez **Nouvelle classe...** dans le menu d'actions en bas de la fenêtre de l'Explorateur ou dans le menu contextuel du groupe Classes.  -- sélectionnez **Nouveau> Classe...** dans le menu contextuel de la page d'accueil de l'Explorateur. +- select the **Classes** category and click on the  button. +- select **New Class...** from the action menu at the bottom of the Explorer window, or from the contexual menu of the Classes group.  +- select **New > Class...** from the contexual menu of the Explorer's Home page. -#### Prise en charge du code de classe +#### Class code support -Dans les différentes fenêtres de 4D Developer (éditeur de code, compilateur, débogueur, explorateur d'exécution), le code de classe est essentiellement géré comme une méthode projet avec quelques spécificités : +In the various 4D Developer windows (code editor, compiler, debugger, runtime explorer), class code is basically handled like a project method with some specificities: -- Dans l'éditeur de code : - - une classe ne peut pas être exécutée - - une fonction de classe est un bloc de code - - **Goto definition** sur un objet membre recherche des déclarations de fonction de classe; par exemple, "$o.f()" donnera comme résultat de recherche "Fonction f". - - **Search references** sur la déclaration de fonction de classe recherche la fonction utilisée comme membre d'objet; par exemple, "Fonction f" donnera comme résultat "$o.f()". -- Dans l'explorateur d'exécution et le Débogueur, les fonctions de classe sont affichées avec le format \ constructor ou \ . \ . +- In the code editor: + - a class cannot be run + - a class function is a code block + - **Goto definition** on an object member searches for class Function declarations; for example, "$o.f()" will find "Function f". + - **Search references** on class function declaration searches for the function used as object member; for example, "Function f" will find "$o.f()". +- In the Runtime explorer and Debugger, class functions are displayed with the \ constructor or \ .\ format. -### Supprimer une classe +### Deleting a class -Pour supprimer une classe existante, vous pouvez : +To delete an existing class, you can: -- sur votre disque, supprimer le fichier de classe .4dm du dossier "Classes", -- dans l'Explorateur, sélectionner la classe et cliquer sur  ou choisir **Déplacer vers la corbeille** dans le menu contextuel. +- on your disk, remove the .4dm class file from the "Classes" folder, +- in the Explorer, select the class and click  or choose **Move to Trash** from the contextual menu. -## Mots-clés de classe +## Class keywords -Des mots-clés 4D spécifiques peuvent être utilisés dans les définitions de classe : +Specific 4D keywords can be used in class definitions: -- `Fonction ` pour définir les méthodes membres des objets. -- `Class constructor` (constructeur de classe) pour définir les propriétés des objets (c'est-à-dire le prototype). -- `Class extends ` pour définir l'héritage. +- `Function ` to define member methods of the objects. +- `Class constructor` to define the properties of the objects (i.e. the prototype). +- `Class extends ` to define inheritance. -### Fonction de classe (class function) +### Class Function -#### Syntaxe +#### Syntax ```js -Fonction +Function // code ``` -Les fonctions de classe sont des propriétés de l'objet prototype de la classe propriétaire. Ce sont des objets de la classe "Function". +Class functions are properties of the prototype object of the owner class. They are objects of the "Function" class. -Dans le fichier de définition de classe, les déclarations de fonction utilisent le mot-clé `Function`, et le nom de la fonction. Le nom de la fonction doit être conforme à ECMAScript. +In the class definition file, function declarations use the `Function` keyword, and the name of the function. The function name must be ECMAScript compliant. -Dans une fonction de classe, `This` est utilisé comme instance d'objet. Par exemple : +Within a class function, the `This` is used as the object instance. For example: ```4d -Fonction getFullName +Function getFullName C_TEXT($0) $0:=This.firstName+" "+Uppercase(This.lastName) @@ -198,11 +198,11 @@ Function getAge $0:=(Current date-This.birthdate)/365.25 ``` -Pour une fonction de classe, la commande `Current method name` retourne: "*\ .\ *", par exemple "MyClass.myMethod". +For a class function, the `Current method name` command returns: "*\ .\ *", for example "MyClass.myMethod". -Dans le code de l'application, les fonctions de classe sont appelées en tant que méthodes membres de l'instance d'objet et peuvent recevoir des paramètres le cas échéant. Les syntaxes suivantes sont prises en charge : +In the application code, class functions are called as member methods of the object instance and can receive parameters if any. The following syntaxes are supported: -- utilisation de l'opérateur `()`. For example `myObject.methodName("hello")`. +- use of the `()` operator. For example `myObject.methodName("hello")`. - use of a "Function" class member methods - `apply()` - `call()` @@ -286,58 +286,54 @@ $o:=cs.MyClass.new("HelloWorld") Class extends ``` -The `Class extends` keyword is used in class declaration to create a user class which is a child of another user class. La classe enfant hérite de toutes les fonctions de la classe parente. +The `Class extends` keyword is used in class declaration to create a user class which is a child of another user class. The child class inherits all functions of the parent class. -L'extension de classe doit respecter les règles suivantes : +Class extension must respect the following rules: -- Une classe utilisateurs ne peut pas étendre une classe intégrée (sauf 4D.Object qui est étendu par défaut pour les classes d'utilisateurs) -- Une classe utilisateurs ne peut pas étendre une classe utilisateurs à partir d'un autre projet ou composant. -- Une classe utilisateurs ne peut pas s'étendre. -- Il n'est pas possible d'étendre les classes de manière circulaire (c'est-à-dire "a" étend "b" qui étend "a"). +- A user class cannot extend a built-in class (except 4D.Object which is extended by default for user classes) +- A user class cannot extend a user class from another project or component. +- A user class cannot extend itself. +- It is not possible to extend classes in a circular way (i.e. "a" extends "b" that extends "a"). -Briser cette règle n'est pas détecté par l'éditeur de code ou l'interpréteur, seuls le compilateur et la `syntaxe de contrôle` généreront une erreur dans ce cas. +Breaking such a rule is not detected by the code editor or the interpreter, only the compiler and `check syntax` will throw an error in this case. -Une classe étendue peut appeler le constructeur de sa classe parente à l'aide de la commande [`Super`](#super). +An extended class can call the constructor of its parent class using the [`Super`](#super) command. -#### Exemple +#### Example -Cet exemple crée une classe appelée `Square` à partir d'une classe appelée `Polygon`. +This example creates a class called `Square` from a class called `Polygon`. ```4d - // Classe: Square - // chemin: Classes/Square.4dm + //Class: Square + //path: Classes/Square.4dm - La classe étend Polygon + Class extends Polygon Class constructor - C_LONGINT (1 $) + C_LONGINT($1) - // Il appelle le constructeur de la classe parente avec des longueurs - // fourni pour la largeur et la hauteur de Polygon + // It calls the parent class's constructor with lengths + // provided for the Polygon's width and height Super($1;$1) - // Dans les classes dérivées, Super doit être appelé avant que vous - // ne puissiez utiliser 'This' - This.name:="Square " + // In derived classes, Super must be called before you + // can use 'This' + This.name:="Square" -Fonction getArea +Function getArea C_LONGINT($0) $0:=This.height*This.width ``` ### Super -#### Super {(param {; ...; paramN})} {-> Object} - -| Paramètre | Type | | Description | -| --------- | ------ | -- | -------------------------------------------- | -| param | mixed | -> | Paramètre(s) à passer au constructeur parent | -| Résultat | object | < | Parent de l'objet | - -Le mot-clé `Super` autorise les appels à la `superclasse`, c'est-à-dire la classe parente. +#### Super {( param{;...;paramN} )} {-> Object} -`Super` a deux objectifs différents : +| Parameter | Type | | Description | +| --------- | ------ | -- | ---------------------------------------------- | +| param | mixed | -> | Parameter(s) to pass to the parent constructor | +| Result | object | <- | Object's parent | -- à l'intérieur d'un [code constructeur](#class-constructor), `Super` est une commande qui permet d'appeler le constructeur de la superclasse. the parent class. +The `Super` keyword allows calls to the `superclass`, i.e. the parent class. `Super` serves two different purposes: @@ -400,27 +396,6 @@ This example illustrates the use of `Super` in a class constructor. The command #### Example 2 -This example illustrates the use of `Super` in a class member method. Function getArea C_LONGINT($0) $0:=This.height*This.width
Voici la table du ET logique :
En d'autres termes, le bit résultant est 1 si les deux bits d'opérande sont 1; sinon, le bit résultant est 0. | -| OU (inclusif) | Chaque bit retourné est le résultat de l'opération OU logique appliquée aux deux bits opérandes.
Voici la table du OU inclusif logique :
En d'autres termes, le bit résultant est 1 si au moins l'un des deux bits d'opérande est 1; sinon, le bit résultant est 0. | -| OU (exclusif) | Chaque bit retourné est le résultat de l'opération OU logique appliquée aux deux bits opérandes.
Voici la table du OU exclusif logique :
En d'autres termes, le bit résultant est 1 si seul l'un des deux bits d'opérande est 1; sinon, le bit résultant est 0. | -| Décaler bits à gauche | La valeur résultante est définie sur la première valeur d'opérande, puis les bits résultants sont décalés vers la gauche du nombre de positions indiqué par le deuxième opérande. Les bits auparavant situés à gauche sont perdus et les nouveaux bits situés à droite ont la valeur 0.
**Note:** en ne tenant compte que des valeurs positives, le décalage vers la gauche de N bits équivaut à multiplier par 2 ^ N. | -| Décaler bits à droite | La valeur résultante est définie sur la première valeur d'opérande, puis les bits résultants sont décalés vers la droite du nombre de positions indiqué par le deuxième opérande. Les bits auparavant situés à droite sont perdus et les nouveaux bits situés à gauche ont la valeur 0.
**Note:** en ne tenant compte que des valeurs positives, le décalage vers la droite de N bits équivaut à diviser par 2^N. | -| Mettre bit à 1 | La valeur retournée est la valeur du premier opérande dans lequel le bit dont le numéro est spécifié par le second opérande est positionné à 0. Les autres bits demeurent inchangés. | -| Mettre bit à 0 | La valeur retournée est la valeur du premier opérande dans lequel le bit dont le numéro est spécifié par le second opérande est positionné à 0. Les autres bits demeurent inchangés. | -| Tester bit | Retourne Vrai si, dans le premier opérande, le bit dont le numéro est indiqué par le second opérande vaut 1. Retourne Faux si, dans le premier opérande, le bit dont le numéro est indiqué par le second opérande vaut 0. | +| Operation | Description | +| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Bitwise AND | Each resulting bit is the logical AND of the bits in the two operands.
Here is the logical AND table:
In other words, the resulting bit is 1 if the two operand bits are 1; otherwise the resulting bit is 0. | +| Bitwise OR (inclusive) | Each resulting bit is the logical OR of the bits in the two operands.
Here is the logical OR table:
In other words, the resulting bit is 1 if at least one of the two operand bits is 1; otherwise the resulting bit is 0. | +| Bitwise OR (exclusive) | Each resulting bit is the logical XOR of the bits in the two operands.
Here is the logical XOR table:
In other words, the resulting bit is 1 if only one of the two operand bits is 1; otherwise the resulting bit is 0. | +| Left Bit Shift | The resulting value is set to the first operand value, then the resulting bits are shifted to the left by the number of positions indicated by the second operand. The bits on the left are lost and the new bits on the right are set to 0.
**Note:** Taking into account only positive values, shifting to the left by N bits is the same as multiplying by 2^N. | +| Right Bit Shift | The resulting value is set to the first operand value, then the resulting bits are shifted to the right by the number of position indicated by the second operand. The bits on the right are lost and the new bits on the left are set to 0.
**Note:** Taking into account only positive values, shifting to the right by N bits is the same as dividing by 2^N. |
+| Bit Set | The resulting value is set to the first operand value, then the resulting bit, whose number is indicated by the second operand, is set to 1. The other bits are left unchanged. |
+| Bit Clear | The resulting value is set to the first operand value, then the resulting bit, whose number is indicated by the second operand, is set to 0. The other bits are left unchanged. |
+| Bit Test | Returns True if, in the first operand, the bit whose number is indicated by the second operand is equal to 1. Returns False if, in the first operand, the bit whose number is indicated by the second operand is equal to 0. |
-### Exemples
+### Examples
-| Opération | Exemple | Résultat |
-| --------------------- | ------------------------------- | ---------- |
-| ET | 0x0000FFFF & 0xFF00FF00 | 0x0000FF00 |
-| OU (inclusif) | 0x0000FFFF | 0xFF00FF00 | 0xFF00FFFF |
-| OU (exclusif) | 0x0000FFFF \^| 0xFF00FF00 | 0xFF0000FF |
-| Décaler bits à gauche | 0x0000FFFF << 8 | 0x00FFFF00 |
-| Décaler bits à droite | 0x0000FFFF >> 8 | 0x000000FF |
-| Mettre bit à 1 | 0x00000000 ?+ 16 | 0x00010000 |
-| Mettre bit à 0 | 0x00010000 ?- 16 | 0x00000000 |
-| Tester bit | 0x00010000 ?? 16 | Vrai |
+| Operation | Example | Result |
+| ---------------------- | ------------------------------- | ---------- |
+| Bitwise AND | 0x0000FFFF & 0xFF00FF00 | 0x0000FF00 |
+| Bitwise OR (inclusive) | 0x0000FFFF | 0xFF00FF00 | 0xFF00FFFF |
+| Bitwise OR (exclusive) | 0x0000FFFF \^| 0xFF00FF00 | 0xFF0000FF |
+| Left Bit Shift | 0x0000FFFF << 8 | 0x00FFFF00 |
+| Right Bit Shift | 0x0000FFFF >> 8 | 0x000000FF |
+| Bit Set | 0x00000000 ?+ 16 | 0x00010000 |
+| Bit Clear | 0x00010000 ?- 16 | 0x00000000 |
+| Bit Test | 0x00010000 ?? 16 | True |
From a4fb56faac4fadf81270ce85b10ad2699dfc6427 Mon Sep 17 00:00:00 2001
From: arnaud4d
(ex : This.firstName + This.lastName)* |
-| Sur clic alternatif |
(e.g., This.firstName + This.lastName)* |
+| Sur clic alternatif |
(ex : This.firstName + This.lastName)* |
-| Sur clic alternatif |
(e.g., This.firstName + This.lastName)* |
+| Sur clic alternatif |
2=intermédiaire, 1=cochée, 0=non cochée, -1=invisible, -2=non cochée désactivée, -3=cochée désactivée, -4=intermédiaire désactivée |
+| Attribute | Available value(s) | valueType(s) | Description |
+| --------- | ------------------ | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| behavior | threeStates | integer | Represents a numeric value as a three-states check box.
2=semi-checked, 1=checked, 0=unchecked, -1=invisible, -2=unchecked disabled, -3=checked disabled, -4=semi-checked disabled |
```4d
C_OBJECT($ob3)
@@ -977,19 +977,19 @@ L'attribut behavior propose des variations de la représentation standard des va

-#### requiredList et choiceList
+#### requiredList and choiceList
-Lorsqu'un attribut "choiceList" ou "requiredList" est présent dans l'objet, la zone de saisie de texte est remplacée par une liste déroulante ou une combo box, en fonction de l'attribut :
+When a "choiceList" or a "requiredList" attribute is present inside the object, the text input is replaced by a drop-down list or a combo box, depending of the attribute:
-* Si l'attribut est "choiceList", la cellule est affichée sous forme de combo box. Cela signifie que l'utilisateur peut sélectionner ou saisir une valeur.
-* Si l'attribut est "requiredList", la cellule est affichée sous forme de liste déroulante. Cela signifie que l'utilisateur peut uniquement sélectionner une des valeurs de la liste.
+* If the attribute is "choiceList", the cell is displayed as a combo box. This means that the user can select or type a value.
+* If the attribute is "requiredList" then the cell is displayed as a drop-down list and the user can only select one of the values provided in the list.
-Dans les deux cas, vous pouvez utiliser un attribut "value" pour présélectionner une valeur dans le widget.
-> Les valeurs du widget sont définies via un tableau. Si vous souhaitez associer le widget à une énumération 4D existante, vous devez utiliser les attributs "requiredListReference", "requiredListName", "choiceListReference" ou "choiceListName".
+In both cases, a "value" attribute can be used to preselect a value in the widget.
+> The widget values are defined through an array. If you want to assign an existing 4D list to the widget, you need to use the "requiredListReference", "requiredListName", "choiceListReference", or "choiceListName" attributes.
-Voici quelques exemples :
+Examples:
-* Vous voulez afficher une liste déroulante avec juste deux options, "Open" ou "Closed". "Closed" doit être présélectionné :
+* You want to display a drop-down list with only two options: "Open" or "Closed". "Closed" must be preselected:
```4d
ARRAY TEXT($RequiredList;0)
@@ -1002,7 +1002,7 @@ Voici quelques exemples :
```

-* Vous voulez accepter toute valeur entière, mais afficher une combo box contenant les valeurs les plus communes :
+* You want to accept any integer value, but display a combo box to suggest the most common values:
```4d
ARRAY LONGINT($ChoiceList;0)
@@ -1013,35 +1013,35 @@ Voici quelques exemples :
APPEND TO ARRAY($ChoiceList;100)
C_OBJECT($ob)
OB SET($ob;"valueType";"integer")
- OB SET($ob;"value";10) //10 comme valeur par défaut
+ OB SET($ob;"value";10) //10 as default value
OB SET ARRAY($ob;"choiceList";$ChoiceList)
```

-#### requiredListName et requiredListReference
+#### requiredListName and requiredListReference
-Les attributs "requiredListName" et "requiredListReference" vous permettent d'utiliser, dans une cellule de list box, une énumération définie dans 4D soit en mode Développement (via l'éditeur d'Enumérations de la Boîte à outils) soit par programmation (à l'aide de la commande New list). La cellule sera alors affichée sous forme de liste déroulante. Cela signifie que l'utilisateur pourra uniquement choisir une des valeurs fournies dans la liste.
+The "requiredListName" and "requiredListReference" attributes allow you to use, in a list box cell, a list defined in 4D either in Design mode (in the Lists editor of the Tool box) or by programming (using the New list command). The cell will then be displayed as a drop-down list. This means that the user can only select one of the values provided in the list.
-Utilisez "requiredListName" ou "requiredListReference" en fonction de la provenance de la liste : si la liste provient de la Boîte à outils, utilisez son nom ; sinon, si la liste a été définie par programmation, passez sa référence. Dans les deux cas, vous pouvez utiliser un attribut "value" pour présélectionner une valeur dans le widget.
-> * Si vous souhaitez définir des valeurs d'énumération via un simple tableau, vous pouvez utiliser l'attribut "requiredList".
-> * Si la liste contient du texte représentant des valeurs réelles, le séparateur décimal doit être le point ("."), quels que soient les paramètres locaux, ex : "17.6" "1234.456".
+Use "requiredListName" or "requiredListReference" depending on the origin of the list: if the list comes from the Tool box, you pass a name; otherwise, if the list has been defined by programming, you pass a reference. In both cases, a "value" attribute can be used to preselect a value in the widget.
+> * If you want to define these values through a simple array, you need to use the "requiredList" attribute.
+> * If the list contains text items representing real values, the decimal separator must be a period ("."), regardless of the local settings, e.g.: "17.6" "1234.456".
-Voici quelques exemples :
+Examples:
-* Vous voulez afficher une liste déroulante basée sur une énumération nommée "colors" définie dans la Boîte à outils (contenant les valeurs "bleu", "jaune" et "vert"), la stocker en tant que valeur et afficher "bleu" par défaut :
+* You want to display a drop-down list based on a "colors" list defined in the Tool box (containing the values "blue", "yellow", and "green"), save it as a value and display "blue" by default:
-
+
```4d
C_OBJECT($ob)
OB SET($ob;"valueType";"text")
OB SET($ob;"saveAs";"value")
- OB SET($ob;"value";"bleu")
+ OB SET($ob;"value";"blue")
OB SET($ob;"requiredListName";"colors")
```

-* Vous voulez afficher une liste déroulante basée sur une liste créée par programmation, et la stocker en tant que référence :
+* You want to display a drop-down list based on a list defined by programming and save it as a reference:
```4d
<>List:=New list
@@ -1052,75 +1052,75 @@ Voici quelques exemples :
C_OBJECT($ob)
OB SET($ob;"valueType";"integer")
OB SET($ob;"saveAs";"reference")
- OB SET($ob;"value";2) //affiche London par défaut
+ OB SET($ob;"value";2) //displays London by default
OB SET($ob;"requiredListReference";<>List)
```

-#### choiceListName et choiceListReference
+#### choiceListName and choiceListReference
-Les attributs "choiceListName" et "choiceListReference" permettent d'utiliser, dans une cellule de list box, une énumération définie dans 4D soit en mode Développement (via l'éditeur de la Boîte à outils) soit par programmation (à l'aide de la commande New list). La cellule sera alors affichée sous forme de combo box, ce qui signifie que l'utilisateur pourra choisir une des valeurs de la liste ou en saisir une.
+The "choiceListName" and "choiceListReference" attributes allow you to use, in a list box cell, a list defined in 4D either in Design mode (in the Tool box) or by programming (using the New list command). The cell is then displayed as a combo box, which means that the user can select or type a value.
-Utilisez "choiceListName" ou "choiceListReference" en fonction de la provenance de la liste : si la liste provient de la Boîte à outils, utilisez son nom ; sinon, si la liste a été définie par programmation, passez sa référence. Dans les deux cas, vous pouvez utiliser un attribut "value" pour présélectionner une valeur dans le widget.
-> * Si vous souhaitez définir des valeurs d'énumération via un simple tableau, vous pouvez utiliser l'attribut "choiceList".
-> * Si la liste contient du texte représentant des valeurs réelles, le séparateur décimal doit être le point ("."), quels que soient les paramètres locaux, ex : "17.6" "1234.456".
+Use "choiceListName" or "choiceListReference" depending on the origin of the list: if the list comes from the Tool box, you pass a name; otherwise, if the list has been defined by programming, you pass a reference. In both cases, a "value" attribute can be used to preselect a value in the widget.
+> * If you want to define these values through a simple array, you need to use the "choiceList" attribute.
+> * If the list contains text items representing real values, the decimal separator must be a period ("."), regardless of the local settings, e.g.: "17.6" "1234.456".
-Exemple :
+Example:
-Vous voulez afficher une combo box basée sur une énumération nommée "colors" définie dans la Boîte à outils (contenant les valeurs "bleu", "jaune" et "vert") et afficher "vert" par défaut :
+You want to display a combo box based on a "colors" list defined in the Tool box (containing the values "blue", "yellow", and "green") and display "green" by default:
-
+
````4d
C_OBJECT($ob)
OB SET($ob;"valueType";"text")
- OB SET($ob;"value";"vert")
+ OB SET($ob;"value";"blue")
OB SET($ob;"choiceListName";"colors")
````

-#### unitsList, unitsListName, unitsListReference et unitReference
+#### unitsList, unitsListName, unitsListReference and unitReference
-Vous pouvez utiliser des attributs spécifiques afin d'associer des unités aux valeurs des cellules (par exemple "10 cm", "20 pixels", etc.). Pour définir une liste d'unités, vous pouvez utiliser l'un des attributs suivants :
+You can use specific attributes to add units associated with cell values (*e.g.*: "10 cm", "20 pixels", etc.). To define the unit list, you can use one of the following attributes:
-* "unitsList" : un tableau contenant les x éléments définissant les unités disponibles (ex : "cm", "pouces", "km", "miles", etc.). Utilisez cet attribut pour définir des unités dans l'objet.
-* "unitsListReference" : une référence de liste 4D contenant les unités disponibles. Utilisez cet attribut pour définir des unités à l'aide d'une liste 4D créée avec la commande [New list](https://doc.4d.com/4Dv15/4D/15.6/New-list.301-3818474.en.html).
-* "unitsListName" : un nom d'énumération 4D créée en mode Développement contenant les unités disponibles. Utilisez cet attribut pour définir des unités à l'aide d'une énumération 4D créée dans la Boîte à outils.
+* "unitsList": an array containing the x elements used to define the available units (e.g.: "cm", "inches", "km", "miles", etc.). Use this attribute to define units within the object.
+* "unitsListReference": a reference to a 4D list containing available units. Use this attribute to define units with a 4D list created with the [New list](https://doc.4d.com/4Dv15/4D/15.6/New-list.301-3818474.en.html) command.
+* "unitsListName": a name of a design-based 4D list that contains available units. Use this attribute to define units with a 4D list created in the Tool box.
-Quel que soit son mode de définition, la liste d'unités peut être associée à l'attribut suivant :
+Regardless of the way the unit list is defined, it can be associated with the following attribute:
-* "unitReference" : une valeur simple contenant l'indice (de 1 à x) de l'élément sélectionné dans la liste de valeurs "unitList", "unitsListReference" ou "unitsListName".
+* "unitReference": a single value that contains the index (from 1 to x) of the selected item in the "unitList", "unitsListReference" or "unitsListName" values list.
-L'unité courante est affichée sous forme de bouton affichant successivement les valeurs de "unitList", "unitsListReference" ou "unitsListName" à chaque clic (par exemple "pixels" -> "lignes" -> "cm" -> "pixels" -> etc.)
+The current unit is displayed as a button that cycles through the "unitList", "unitsListReference" or "unitsListName" values each time it is clicked (e.g., "pixels" -> "rows" -> "cm" -> "pixels" -> etc.)
-Exemple :
+Example:
-Vous souhaitez définir une valeur de saisie numérique suivie d'une unité parmi deux possibles : "cm" ou "pixels". La valeur courante est "2" + "cm". Vous utilisez des valeurs définies directement dans l'objet (attribut "unitsList") :
+We want to set up a numeric input followed by two possible units: "rows" or "pixels". The current value is "2" + "lines". We use values defined directly in the object ("unitsList" attribute):
````4d
ARRAY TEXT($_units;0)
-APPEND TO ARRAY($_units;"cm")
+APPEND TO ARRAY($_units;"lines")
APPEND TO ARRAY($_units;"pixels")
C_OBJECT($ob)
OB SET($ob;"valueType";"integer")
OB SET($ob;"value";2) // 2 "units"
-OB SET($ob;"unitReference";1) //"cm"
+OB SET($ob;"unitReference";1) //"lines"
OB SET ARRAY($ob;"unitsList";$_units)
````
-
+
#### alternateButton
-Si vous souhaitez ajouter un bouton d'ellipse [...] dans une cellule, il suffit de passer l'attribut "alternateButton" avec la valeur vrai dans l'objet. Le bouton sera automatiquement affiché dans la cellule.
+If you want to add an ellipsis button [...] to a cell, you just need to pass the "alternateButton" with the True value in the object. The button will be displayed in the cell automatically.
-Lorsque l'utilisateur clique sur ce bouton, un événement `On Alternative Click` est généré, vous permettant de traiter cette action comme vous le souhaitez (reportez-vous ci-dessous au paragraphe "Gestion des événements" pour plus d'informations).
+When this button is clicked by a user, an `On Alternate Click` event will be generated, and you will be able to handle it however you want (see the "Event management" paragraph for more information).
-Exemple :
+Example:
```4d
C_OBJECT($ob1)
@@ -1133,11 +1133,11 @@ OB SET($ob;"value";$entry)

-#### valueType color
+#### color valueType
-L'attribut "valueType" de valeur "color" vous permet d'afficher soit une couleur, soit un texte.
+The "color" valueType allows you to display either a color or a text.
-* Si la valeur est un nombre, un rectangle de couleur est dessiné à l'intérieur de la cellule. Exemple :
+* If the value is a number, a colored rectangle is drawn inside the cell. Example:
````4d
C_OBJECT($ob4)
@@ -1147,16 +1147,16 @@ L'attribut "valueType" de valeur "color" vous permet d'afficher soit une couleur

-* Si la valeur est un texte, le texte est simplement affiché (par exemple : "value";"Automatic").
+* If the value is a text, then the text is displayed (*e.g.*: "value";"Automatic").
-#### valueType event
+#### event valueType
-L'attribut "valueType" de valeur "event" affiche un bouton qui génère simplement un événement `On Clicked` lorsque l'utilisateur clique dessus. Aucune donnée ou valeur ne peut être passée ou retournée.
+The "event" valueType displays a simple button that generates an `On Clicked` event when clicked. No data or value can be passed or returned.
-Optionnellement, il est possible de passer un attribut "label".
+Optionally, you can pass a "label" attribute.
-Exemple :
+Example:
````4d
C_OBJECT($ob)
@@ -1167,17 +1167,17 @@ OB SET($ob;"label";"Edit...")

-### Gestion des événements
-Plusieurs événements peuvent être gérés dans les colonnes de list box de type tableau d'objets. Voici une synthèse des événements spécifiques :
+### Event management
+Several events can be handled while using an object list box array:
* **On Data Change**: An `On Data Change` event is triggered when any value has been modified either:
- * zone de saisie de texte
- * listes déroulante
- * zone de combo box
- * bouton d'unité (passage valeur x à valeur x+1)
- * case à cocher (passage cochée/non cochée)
-* **On Clicked**: When the user clicks on a button installed using the "event" *valueType* attribute, an `On Clicked` event will be generated. Cet événement doit être ensuite géré par le programmeur.
-* **On Alternative Click**: When the user clicks on an ellipsis button ("alternateButton" attribute), an `On Alternative Click` event will be generated. Cet événement doit être ensuite géré par le programmeur.
+ * in a text input zone
+ * in a drop-down list
+ * in a combo box area
+ * in a unit button (switch from value x to value x+1)
+ * in a check box (switch between checked/unchecked)
+* **On Clicked**: When the user clicks on a button installed using the "event" *valueType* attribute, an `On Clicked` event will be generated. This event is managed by the programmer.
+* **On Alternative Click**: When the user clicks on an ellipsis button ("alternateButton" attribute), an `On Alternative Click` event will be generated. This event is managed by the programmer.
From 73ceeeed106973a888ae0b32d7d34900f41a6c9a Mon Sep 17 00:00:00 2001
From: arnaud4d
You can use the Footer area to print graphics, page numbers, the current date, or any text you want at the bottom of each page of a report. For output forms designed for use on screen, the Footer area typically contains buttons that give the user options such as doing a search or sort, printing records, or putting away the current report. Active objects are accepted.
-#### Grammaire JSON
+#### JSON Grammar
-| Nom | Type de données | Valeurs possibles |
-| ------------ | --------------- | ----------------- |
-| markerFooter | integer | minimum : 0 |
+| Name | Data Type | Possible Values |
+| ------------ | --------- | --------------- |
+| markerFooter | integer | minimum: 0 |
---
@@ -78,9 +78,9 @@ The form can contains [additional header areas](#additional-areas) to be associa
-#### Grammaire JSON
+#### JSON Grammar
-| Nom | Type de données | Valeurs possibles |
+| Name | Data Type | Possible Values |
| ------------ | --------------------------------- | ---------------------------------------------------------------------------------------------------- |
| markerHeader | integer | integer collection | Header marker position or collection of header marker positions in pixels. |
@@ -75,10 +75,10 @@ While 4D automatically prioritizes the highest resolution, there are, however,
-## Coordonnées de la souris dans une image
+## Mouse Coordinates in a Picture
-4D vous permet de récupérer les coordonnées locales de la souris dans un [objet de saisie](FormObjects/input_overview.md) associé à une [expression d'image](FormObjects/properties_Object.md#expression-type), en cas de clic ou de survol, même si un défilement ou un zoom a été appliqué à l'image. Ce mécanisme, proche de celui d'une image map, peut être utilisé par exemple pour gérer les barres de bouton défilables ou bien l'interface de logiciels de cartographie.
+4D lets you retrieve the local coordinates of the mouse in an [input object](FormObjects/input_overview.md) associated with a [picture expression](FormObjects/properties_Object.md#expression-type), in case of a click or a hovering, even if a scroll or zoom has been applied to the picture. This mechanism, similar to that of a picture map, can be used, for example, to handle scrollable button bars or the interface of cartography software.
-Les coordonnées sont retournées dans les [Variables système](https://doc.4d.com/4Dv18/4D/18/System-Variables.300-4505547.en.html) *MouseX* et *MouseY*. Les coordonnées sont exprimées en pixels par rapport à l'angle supérieur gauche de l'image (0,0). Lorsque la souris se trouve en dehors du système de coordonnées de l'image, la valeur -1 est retournée dans *MouseX* et *MouseY*.
+The coordinates are returned in the *MouseX* and *MouseY* [System Variables](https://doc.4d.com/4Dv18/4D/18/System-Variables.300-4505547.en.html). The coordinates are expressed in pixels with respect to the top left corner of the picture (0,0). If the mouse is outside of the picture coordinates system, -1 is returned in *MouseX* and *MouseY*.
You can get the value of these variables as part of the [`On Clicked`](Events/onClicked.md), [`On Double Clicked`](Events/onDoubleClicked.md), [`On Mouse up`](Events/onMouseUp.md), [`On Mouse Enter`](Events/onMouseEnter.md), or [`On Mouse Move`](Events/onMouseMove.md) form events.
From 673b3e90e997eee83e8ba11af9dc6463e9bcdbd4 Mon Sep 17 00:00:00 2001
From: arnaud4d
Minimum value: 0 |
From 54880accd923d8450f594869e2055f7575a0ba6a Mon Sep 17 00:00:00 2001
From: arnaud4d
 *circle.png* |
-| Haute résolution | Pixel density increased by a factor of 2 or 3. |
|
+| Standard Resolution | 1:1 pixel density. | **1x**2x 3x *circle@2x.png* 
*circle@3x.png*
 *circle.png* |
+| High Resolution | Pixel density increased by a factor of 2 or 3. |
|
@@ -50,7 +50,7 @@ High resolution pictures with the @nx convention can be used in the following ob
* [Buttons](FormObjects/button_overview.md)/[radio](FormObjects/radio_overview.md)/[check boxes](FormObjects/checkbox_overview.md)
* [Picture buttons](FormObjects/pictureButton_overview.md)/[Picture pop-ups](FormObjects/picturePopupMenu_overview.md)
* [Tab controls](FormObjects/tabControl.md)
-* [En-têtes de list box](FormObjects/listbox_overview.md#list-box-headers)
+* [List box headers](FormObjects/listbox_overview.md#list-box-headers)
* [Menu icons](Menus/properties.md#item-icon)
@@ -64,7 +64,7 @@ High resolution pictures with the @nx convention can be used in the following ob
While 4D automatically prioritizes the highest resolution, there are, however, some behavioral differences depending on screen and image dpi*(\*)*, and picture format:
-| Opération | Behavior |
+| Operation | Behavior |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| Drop or Paste | If the picture has:2x 3x *circle@2x.png* 
*circle@3x.png*Historique
+History
-| Version | Modifications |
-| ------- | ------------- |
-| v18 R4 | Ajoutées |
+| Version | Changes |
+| ------- | ------- |
+| v18 R4 | Added |
Historique
+History
-| Version | Modifications |
-| ------- | ------------- |
-| v18 R4 | Ajoutées |
+| Version | Changes |
+| ------- | ------- |
+| v18 R4 | Added |
Historique
+History
-| Version | Modifications |
-| ------- | ------------- |
-| v18 R4 | Ajoutées |
+| Version | Changes |
+| ------- | ------- |
+| v18 R4 | Added |
Historique
+History
-| Version | Modifications |
-| ------- | ------------- |
-| v18 R4 | Ajoutées |
+| Version | Changes |
+| ------- | ------- |
+| v18 R4 | Added |
Historique
+History
-| Version | Modifications |
-| ------- | ------------- |
-| v18 R4 | Ajoutées |
+| Version | Changes |
+| ------- | ------- |
+| v18 R4 | Added |
Historique
+History
-| Version | Modifications |
-| ------- | ------------- |
-| v18 R4 | Ajoutées |
+| Version | Changes |
+| ------- | ------- |
+| v18 R4 | Added |
Historique
+History
-| Version | Modifications |
-| ------- | ------------- |
-| v18 R4 | Ajoutées |
+| Version | Changes |
+| ------- | ------- |
+| v18 R4 | Added |

+1. Two processes load the same entity.

-2. Le premier process modifie l'entité et valide le changement. La méthode `entity.save()` est appelée. Le moteur 4D compare automatiquement la valeur du marqueur interne de l'entité modifiée avec celle de l'entité stockée dans les données. Puisqu'ils correspondent, l'entité est enregistrée et la valeur de son marqueur est incrémentée.

+2. The first process modifies the entity and validates the change. The `entity.save( )` method is called. The 4D engine automatically compares the internal stamp value of the modified entity with that of the entity stored in the data. Since they match, the entity is saved and its stamp value is incremented.

-3. Le deuxième process modifie également l'entité chargée et valide ses modifications. La méthode `entity.save()` est appelée. Etant donné que la valeur de marqueur de l'entité modifiée ne correspond pas à celle de l'entité stockée dans les données, la sauvegarde n'est pas effectuée et une erreur est retournée.

+3. The second process also modifies the loaded entity and validates its changes. The `entity.save( )` method is called. Since the stamp value of the modified entity does not match the one of the entity stored in the data, the save is not performed and an error is returned.

-Cela peut également être illustré par le code suivant :
+This can also be illustrated by the following code:
```4d
- $person1:=ds.Person.get(1) //Référence à l'entité
- $person2:=ds.Person.get(1) //Autre référence à la même entité
+ $person1:=ds.Person.get(1) //Reference to entity
+ $person2:=ds.Person.get(1) //Other reference to same entity
$person1.name:="Bill"
- $result:=$person1.save() //$result.success=true, modification enregistrée
+ $result:=$person1.save() //$result.success=true, change saved
$person2.name:="William"
+ $result:=$person2.save() //$result.success=false, change not saved
```
-Dans cet exemple, nous attribuons à $person1 une référence à l'entité "person" avec une clé de 1. Nous attribuons ensuite une autre référence de la même entité à la variable $person2. Avec $person1, nous modifions le prénom de la personne et sauvegardons l'entité. Lorsque nous essayons de faire de même avec $person2, 4D vérifie que l'entité sur le disque est la même que lors de la première attribution de la référence dans $person1. Puisqu'elles ne sont pas identiques, 4D retourne "faux" dans la propriété "success" et ne sauvegarde pas la deuxième modification.
+In this example, we assign to $person1 a reference to the person entity with a key of 1. Then, we assign another reference of the same entity to variable $person2. Using $person1, we change the first name of the person and save the entity. When we attempt to do the same thing with $person2, 4D checks to make sure the entity on disk is the same as when the reference in $person1 was first assigned. Since it isn't the same, it returns false in the success property and doesn’t save the second modification.
-Lorsque cette situation se produit, vous pouvez, par exemple, recharger l'entité à partir du disque à l'aide de la méthode `entity.reload()` afin de réessayer d'effectuer la modification. La méthode `entity.save()` propose également une option «auto-fusion» ("automerge") pour enregistrer l'entité au cas où les process auraient modifié des attributs non identiques.
+When this situation occurs, you can, for example, reload the entity from the disk using the `entity.reload( )` method so that you can try to make the modification again. The `entity.save( )` method also proposes an "automerge" option to save the entity in case processes modified attributes that were not the same.
-### Verrouillage pessimiste
+### Pessimistic lock
-Vous pouvez verrouiller et déverrouiller des entités à la demande lorsque vous accédez aux données. Lorsqu'une entité est verrouillée par un process, elle est chargée en lecture/écriture dans ce process mais elle est verrouillée pour tous les autres process. L'entité peut être chargée uniquement en mode lecture seule dans ces process; ses valeurs ne peuvent pas être modifiées ou enregistrées.
+You can lock and unlock entities on demand when accessing data. When an entity is getting locked by a process, it is loaded in read/write in this process but it is locked for all other processes. The entity can only be loaded in read-only mode in these processes; its values cannot be edited or saved.
This feature is based upon two methods of the `Entity` class:
* `entity.lock()`
* `entity.unlock()`
-Pour plus d'informations, reportez-vous aux descriptions de ces méthodes.
+For more information, please refer to the descriptions for these methods.
-### Utilisation simultanée des verrouillages classiques 4D et des verrouillages pessimistes ORDA
+### Concurrent use of 4D classic locks and ORDA pessimistic locks
-L'utilisation des commandes classiques et ORDA pour le verrouillage des enregistrements est basé sur les principes suivants :
+Using both classic and ORDA commands to lock records is based upon the following principles:
-* Un verrouillage défini avec une commande 4D classique sur un enregistrement empêche ORDA de verrouiller l'entité correspondant à l'enregistrement.
-* Un verrouillage défini avec ORDA sur une entité empêche les commandes 4D classiques de verrouiller l'enregistrement correspondant à l'entité.
+* A lock set with a classic 4D command on a record prevents ORDA to lock the entity matching the record.
+* A lock set with ORDA on an entity prevents classic 4D commands to lock the record matching the entity.
-Ces principes sont illustrés dans le diagramme suivant :
+These principles are shown in the following diagram:

-Les **verrouillages de transaction** s'appliquent également aux commandes classiques et aux commandes ORDA. Dans une application multiprocess ou multi-utilisateurs, un verrouillage défini dans une transaction sur un enregistrement par une commande classique aura pour effet d'empêcher tout autre process de verrouiller les entités liées à cet enregistrement (ou inversement), jusqu'à ce que la transaction soit validée ou annulée.
+**Transaction locks** also apply to both classic and ORDA commands. In a multiprocess or a multi-user application, a lock set within a transaction on a record by a classic command will result in preventing any other processes to lock entities related to this record (or conversely), until the transaction is validated or canceled.
-* Exemple avec un verrouillage défini par une commande classique :

-* Exemple avec un verrouillage défini par une méthode ORDA :

+* Example with a lock set by a classic command:

+* Example with a lock set by an ORDA method:

-## Optimisation client/serveur
+## Client/server optimization
-4D optimise automatiquement les requêtes ORDA qui utilisent des sélections d'entités ou qui chargent des entités en configuration client/serveur. Cette optimisation accélère l'exécution de votre application 4D en réduisant drastiquement le volume d'informations transmises sur le réseau.
+4D provides an automatic optimization for ORDA requests that use entity selections or load entities in client/server configurations. This optimization speeds up the execution of your 4D application by reducing drastically the volume of information transmitted over the network.
-Les mécanismes d'optimisation suivants sont mis en œuvre :
+The following optimization mechanisms are implemented:
-* Lorsqu'un client demande une sélection d'entité au serveur, 4D "apprend" automatiquement attributs de la sélection d'entité sont réellement utilisés côté client lors de l'exécution du code, et génère un "contexte d'optimisation" correspondant. Ce contexte est relié à la sélection d'entité et stocke les attributs utilisés. Il sera mis à jour dynamiquement si d'autres attributs sont utilisés par la suite.
+* When a client requests an entity selection from the server, 4D automatically "learns" which attributes of the entity selection are actually used on the client side during the code execution, and builds a corresponding "optimization context". This context is attached to the entity selection and stores the used attributes. It will be dynamically updated if other attributes are used afterwards.
-* Les requêtes ultérieures envoyées au serveur sur la même sélection d'entité réutilisent automatiquement le contexte d'optimisation et lisent uniquement les attributs nécessaires depuis le serveur, ce qui accélère le traitement. Par exemple, dans une list box basée sur une sélection d'entités, la phase d'apprentissage a lieu durant l'affichage des premières lignes et l'affichage des lignes suivantes est fortement optimisé.
+* Subsequent requests sent to the server on the same entity selection automatically reuse the optimization context and only get necessary attributes from the server, which accelerates the processing. For example in an entity selection-based list box, the learning phase takes place during the display of the first rows, next rows display is very optimized.
-* Un contexte d'optimisation existant peut être passé en tant que propriété à une autre sélection d'entité de la même dataclass, ce qui permet d'éviter la phase d'apprentissage et d'accélérer l'application (voir [Utilisation de la propriété context](#using-the-context-property) ci-dessous).
+* An existing optimization context can be passed as a property to another entity selection of the same dataclass, thus bypassing the learning phase and accelerating the application (see [Using the context property](#using-the-context-property) below).
-Les méthodes suivantes associent automatiquement le contexte d'optimisation de la sélection d'entité d'origine à la sélection d'entité retournée :
+The following methods automatically associate the optimization context of the source entity selection to the returned entity selection:
* `entitySelection.and()`
* `entitySelection.minus()`
@@ -308,14 +309,14 @@ Les méthodes suivantes associent automatiquement le contexte d'optimisation de
* `entitySelection.drop()`
-**Exemple**
+**Example**
-Considérons le code suivant :
+Given the following code:
```4d
$sel:=$ds.Employee.query("firstname = ab@")
For each($e;$sel)
- $s:=$e.firstname+" "+$e.lastname+" works for "+$e.employer.name // $e.employer renvoie à la table Company
+ $s:=$e.firstname+" "+$e.lastname+" works for "+$e.employer.name // $e.employer refers to Company table
End for each
```
@@ -323,16 +324,16 @@ Thanks to the optimization, this request will only get data from used attributes
-### Utilisation de la propriété context
+### Using the context property
-Vous pouvez tirer un meilleur parti de l'optimisation en utilisant la propriété **context**. Cette propriété référence un contexte d'optimisation "appris" pour une sélection d'entités. Elle peut être passée comme paramètre aux méthodes ORDA qui retournent de nouvelles sélections d'entités, afin que les sélections d'entités demandent directement au serveur les attributs utilisés, sans passer par la phase d'apprentissage.
+You can increase the benefits of the optimization by using the **context** property. This property references an optimization context "learned" for an entity selection. It can be passed as parameter to ORDA methods that return new entity selections, so that entity selections directly request used attributes to the server and bypass the learning phase.
-Une même propriété de contexte d'optimisation peut être passée à un nombre illimité de sélections d'entités de la même dataclass. Toutes les méthodes ORDA qui gèrent les sélections d'entités prennent en charge la propriété **context** (par exemple les méthodes `dataClass.query( )` ou `dataClass.all( )`). Il est toutefois important de garder à l'esprit qu'un contexte est automatiquement mis à jour lorsque de nouveaux attributs sont utilisés dans d'autres parties du code. Si le même contexte est réutilisé dans différents codes, il risque d'être surchargé et de perdre en efficacité.
-> Un mécanisme similaire est mis en place pour des entités qui sont chargées, afin que seuls les attributs utilisés soient demandés (voir la méthode `dataClass.get( )`).
+A same optimization context property can be passed to unlimited number of entity selections on the same dataclass. All ORDA methods that handle entity selections support the **context** property (for example `dataClass.query( )` or `dataClass.all( )` method). Keep in mind, however, that a context is automatically updated when new attributes are used in other parts of the code. Reusing the same context in different codes could result in overloading the context and then, reduce its efficiency.
+> A similar mechanism is implemented for entities that are loaded, so that only used attributes are requested (see the `dataClass.get( )` method).
-**Exemple avec la méthode `dataClass.query( )` :**
+**Example with `dataClass.query( )` method:**
```4d
var $sel1; $sel2; $sel3; $sel4; $querysettings; $querysettings2 : Object
@@ -353,23 +354,23 @@ Une même propriété de contexte d'optimisation peut être passée à un nombre
$data:=extractDetailedData($sel4) // In extractDetailedData method the optimization associated to context "longList" is applied
```
-### Listbox basée sur une sélection d'entités
+### Entity selection-based list box
-L'optimisation d'une sélection d'entités s'applique automatiquement aux listbox basées sur une sélection d'entités dans les configurations client/serveur, au moment d'afficher et de dérouler le contenu d'une listbox : seuls les attributs affichés dans la listbox sont demandés depuis le serveur.
+Entity selection optimization is automatically applied to entity selection-based list boxes in client/server configurations, when displaying and scrolling a list box content: only the attributes displayed in the list box are requested from the server.
-Un contexte spécifique nommé "mode page" est également proposé lorsque l'entité courante de la sélection est chargée à l'aide de l'expression **élément courant** de la listbox (voir [List box de type collection ou entity selection](FormObjects/listbox_overview.md#list-box-types)). Cette fonctionnalité vous permet de ne pas surcharger le contexte initial de la listbox dans ce cas précis, notamment si la "page" requiert des attributs supplémentaires. A noter que seule l'utilisation de l'expression **Élément courant** permettra de créer/utiliser le contexte de la page (l'accès via `entitySelection[index]` modifiera le contexte de la sélection d'entité).
+A specific "page mode" context is also provided when loading the current entity through the **Current item** property expression of the list box (see [Collection or entity selection type list boxes](FormObjects/listbox_overview.md#list-box-types)). This feature allows you to not overload the list box initial context in this case, especially if the "page" requests additional attributes. Note that only the use of **Current item** expression will create/use the page context (access through `entitySelection\[index]` will alter the entity selection context).
-Cette optimisation sera également prise en charge par les requêtes ultérieures envoyées au serveur via les méthodes de navigation des entités. Les méthodes suivantes associeront automatiquement le contexte d'optimisation de l'entité source à l'entité retournée :
+Subsequent requests to server sent by entity browsing methods will also support this optimization. The following methods automatically associate the optimization context of the source entity to the returned entity:
* `entity.next( )`
* `entity.first( )`
* `entity.last( )`
* `entity.previous( )`
-Par exemple, le code suivant charge l'entité sélectionnée et permet de naviguer dans la sélection d'entités. Les entités sont chargées dans un contexte séparé et le contexte initial de la listbox demeure inchangé :
+For example, the following code loads the selected entity and allows browsing in the entity selection. Entities are loaded in a separate context and the list box initial context is left untouched:
```4d
- $myEntity:=Form.currentElement //expression de l'élément courant
- //... faire quelque chose
- $myEntity:=$myEntity.next() //charge la prochaine entité à l'aide du même contexte
+ $myEntity:=Form.currentElement //current item expression
+ //... do something
+ $myEntity:=$myEntity.next() //loads the next entity using the same context
```
From b26136ea8b786a6ef2bc1d58117f6c93d36c9cfe Mon Sep 17 00:00:00 2001
From: arnaud4d
_n!>olZ}u`*9-%&xIMH!%!Uj>atr0a5XhGUB!z=sef!$TjpHFGU#avvyn*1zTul< zPENIycu5Pgt(_fqUX(+IMIO)Gz^eoya&mIiogXgAUA;U)OTWZ^Zi3V%J-@9dU+rCs zI`tImg_+py3>JeawMHk#W{jf!b4CeDAY^xat){s-{UsU%r)isi{#g0=7(pu#h?$|; zM9G8=AL(&;Lu2Dg{TU3J5%BP!-wER96chxVcg#95wNE4@CDK(Ku^(C7YMge@(wT=( z>T{W!m<)?*Oxa<%MOTPie(g!NH1vp|tES9<+`f>EPq*Qpi>t$ADv~&Une0E60pC*bfJZ)TEQ(e+EztLEj2Sc$`1Jv7=-x3WTQ1TN8` zp-MHDsbCWgf2sal@8~_>cfLXSo#v0M8@H(m@)=`)JRx=S;n~$X1b^`Ofh;MO$M+c- z;XS0`@t?O6h*#<%VXvz6z4%O`Ex&VN!7#J?EwUo1%0h4I?C)=;>Mfa7;iAb|*6Puv zezcM1mJsF|UXj5UL1!PXC(o0E*m;I=C*{&5%(be~OE8)!XrFlkGPEiZ@{cG)4d)+n;@x7-9q(lx6 z=Cfv)7-xOOEg`$f*V1XSUupTUCG&C+0c3)xQhTP Z@=qlKAjxc5k22LhIwd0Em3nAC#*!n*e4LVRe^0Us4&1&>DV&Y$YRMX>m zxGA8~_QcoQdvCoUrnfzchRJ`ix8&2OZPt1*?T99m+>6xTwu@9*9db@?Vh*`C04qgx z44FChhevixF6@B0mt*g_$J=Xn*9>_;G2|ppQMQ-PF4fp_{n#-rRnpc(lf|9d-ptZ6 zC1x7i5L74rCowJtMD=wcbPj{ltFjD)o}Bc#gZLXXsA@W*3_k9gtem50+M jA5tC(qYW%+JmH5SwDu`FSAHc>Ef({cACYWjwy2lOLHE;S*pu^emC^P7|(g;=T(- z-J{%bM-}tYqTlw4@D=pOP>qxs+$fZS=>hudF3L xLi29aYrOo C3tUCbsho0*>~9 zp>GQB3tORISq7|Jhi~rsgJ871{nYR-WLur5!JtzLkfqf@7~*&!NUnw%>^2sgc6)iG zh6 EEF_rCvjr<+NU4!{{9hcdt*fgmz+RBLe87R<_B31* z2bG9xbK5Qg0J~e@B~6JG8m;vWwEO`eu_v+W8?jJXCvg+_f(Z%d$Zlldcbd-*lyU{? zJy$mGNih?1ycLv(NH8L*s;UqOt^BZ}qN0@*TcqENh(@VOsH4*SN9GBM2$GK+dei0K ze~OO8st@@ !8X3{h&>U2D z*Ssb0 UY%glO}%Z&SRoev}ARqnBkTk&(3iP?LHv&9$2$NRJNEW7HCY=x5i&fs$> z2W!Bc)I<|YOY!l(k#JW!y%Keil?3`f6;X*P=}WbnQ<3SeJsgARRQ=TzBPavxWii|Q z&>x-zNb5S=K w>u%>;ew>YrR_@ zfQZOL!zs7nXbWTrbh{Z#50VqDRgmTm>335hWdshsllr D`^_)6T|%3$p;w%|j+U(^Y{>~4%jtWs=RtQ5ITfOtdSpwd z$v)xfm@qr)EM{bANI^kCMrVH?Nq`njinz1HBBlB}{=OZ1ZJwE8-_G{7>W^0DVY#$8 zYZd?a fQN|6k+}+k^sD7_fTLP0U zcI2m2Hc!yfNP(Wz$NI76d$r6JGORpFQvM?B;0{*Z)p7FIEci5Gdh%h!4%R61cgg0f z9O8S&&01TS;xC+blXR4Q^|K#o`D@>HUGk{ZY7uf6W } z1pOWvOyy}O=O@i@)^gNiX7(A$H71q+_+lR9?Ab~0)T{@7Uyj`m(e0%=0Ch(es&$7K z3-MsF(KXg$2K9F4?75^ivC-!dZ19`UbVFJKj`zT<`i=qlLwVx+VByrL_`}U~)sBQl z&BobZyahkn;FotD+(z7s+Y%QRH`$kMg0V*mL~|3zP0GB+^4pu9eC8c9HZ`x{5I zOMGgf)k)`roRhzkVF}SKTjQW*lMjkeyC9#fvgL{TS*PWA{9max68$u7ax92pr+dFm zlk9ycRMtLU&t)Zu= m4R0Ti1KG&0b7eb`8FPf3PHS@^+W%_G9lZA)+0&;qRAq zS&z;odfQGsQs;v$iagL K z-Q9PaaeEdPr(n}-;KU<@iN%;p#MP_!ao!Hs1ybqcAvcU7jJ21fz5qZh1E|FD7QO&d zIg>uZL3}&sI(ff38T?5}Iml+S{Ubs-I=p$cGOMer%a{2xZ+hc*n%CKKX@dibOs)WQ zna!AoGK%4J-&iL%K&~22L=pDdDJG+Gpr%6HjNsNd^F~sM45h8?G!gLaPaC{6FB0tx z0?6wAe}Okh%b{D!r<}KUb~ZitWqD5tDui_UUM& A5!5f~V>oF?!t9;UG( mNa_iQbq+y)m8>Ni7qM^VS%6h}j^b3F^P0ozD2 zk2U;@;$W3_x{x%Xk +S9rx4f(iB9zFEe&LZc?bL JGtCVy(7R+xTIqBVky&>fagZ1M;^iH!cZT Dk$H1?XP0JI z$eVRRi@VN5o5%ZJZnKaQC@3+1S7_PHjJnQ(Rk +SiL|>(;I#cVD2P*?b@e&)LY~fTfH9ISE zeHAR?pcD|!HkiA7a?+eABA4t>G@Kiy27UDyOjwPG-x`l=f7alHj7?nIHVuRg^51(A zAH2`TrxdJ$H&H1ysZgQc7jiN!Nm8iZLiP*zTLow_?85E=OGy$NE-o%AZgEUjD!lOe zveqPl5^=M*uLUUuif^GJe!NVWK*fP?+k1O8`uQaY(TqWnwere}3T3Miv(le$mR&v> zxYV0sxQ7)T7r+@n5Fz0Ut1HHqR-Tz$Au3Thi5(JLveyT<<%oTCU5<-_*SkO?Q#*cy ze5uld%!#IpFby(%I-S-pL4!8w$*WItd|TN0cDQ&5lNq%mP_Q$=c{o%-sd#F1xjJ8R zHVBOU-je2J#t^ |qHrcar$XFdQDPvIo^&ebBrzK#==x1I$v1ICDuXB}mr!`}^Bf z&
I=*1AVjr2xwWZnl|cljKE0J)9 i z0c|6B$hV|KJlGoG%%uZE)^>-_^UcV>ehYm6M+W{%s!aG^GQ2wsa@&m5bLv{PQLcnQ zuK5Reh~-l;FsjX)aqs+2XXejlIc3EE+?a;<*kIKH!&im%eoOf$3OHsu+y+9L!4c8- zxy`qXj*gl&qOmy#LnzIi`SWEoJJVV@J7;VWr!$N|Sg_4Dvx#ip69~z_br4b~E!q0| zw1Dy?{@~<1VX0s=;blq4T(v#BM2Q-|?N5fTyVM|=a1CroC%#AfNPj(sUe=BtoU9G? z#|*K;R9a{TGaA*8GR)~SIvxYSiqaU7?iJ7c-_YJOQewETRU>#ZsrpY9HvlM%$=TlZ zZ@z-`E3UmjNZ-QuSKsQUjMQwnGNo7TOs@gC-Rt8--2>Nc&;isrwC#0bN(-{AS6mnZ zOuDiz!{y;z*E6doHxD9RAB6Ot>|7qb2OW9(lpwP;>{t(G%i?E3kokjw=F{GA1#yB> zMzFU5U42pi;b%c==tfL106c{J$MOfFZ|xg9wf(-ibgDo7CM Hr3jJ~5sccp4&ANs zWJE7}A_`>{hRaD4O^fq3nm;)exGg`;ZTAQ z#q{+9I5 dzaDW1*+we-m^7U0KdX}|ai=hhtL)U*lqy0ww|5_zM z5z{eauw@f$9qy#q0$sn}Z9F}BW44l)8K3=UZ4O36l||n%4uX!Kp-@P!vZqQu*9nnM zRo28inHG|r&LdBNIp2tqqae@XVT12v?p)<_((Ay05J=~0B@EW5aM4+BnGw-zYS)tg z#tfQ0Y^}&QqA}<~5$V%_&Wx ic;qHL~VK&NZ$`@OGY0 ziu0Xyvsr-Lck7@C-+I>PG>%M6V&(v>+&_Regv>g7OITb%_C_%@aVnE_vlYcx2}4p9 z+{On3P;gDU{&u$%HlpNDNArY7oIVV*Vigu1h|YI@$fBm@hW~371)o3t&x@}B(D@(h zXp{$-W026Hvl#f2S+>diQTHUck^h?o7P=%VE&9K+sSxPa42Co)1^mZ*s?9z7i5vhJ zK(!$(=>JVQpirXZuM!D_q(1^b{$B}4LPzWN4giQMUa5)M*{^c4q@DMV)`Nz5!2|+; z^z-QMZX8SNt6K-3Vz$v2e+5=P;!CUiw%}H(xUQgQ`*CTsIS+u4GVrq5D3m6j1-zs6 z919D|))!(#Z8e@aJX{#O=}VrG(cY;>2nam5x*`UHsWjWc51oJ-{NYZJ`%Xekf-1Z= zC2jqtpM!793COF0Yq)_a_`%R9bCSz%f|!?)kd}l 5=cm|WOH!I)o%F#@cn0Pu6)7&lR>Vm#EUgI9wsqe;G%QR z7kTX$L6HI*$fI;t_6h**f)Z8XV~HLA2ZxH3^HWE|U$eiF0N+@ylI>Lmc+qg;JF`@9 zinc!KG?N6&jjimJ$RjNs|BmKnKKegJpg2?KM-H3J{&e;_Z$Ty@T4;feXp{h`@3Ezm zHMO^AkC8q}J!|pZt!B>-*jQhO>h|g^CiVu%F=ufuSv02!nm+<^(O@FI5|5Bxn{yW? zms?x7i#e_Bz`fV4A0HHUy!<*{U1FQb*v9cFHahzu0Z CIM?>wq)ab!Nja%G)4V|UtX zeU7U6&=H{+zhtOd)~hbwuXDx$6@IKhn-8&}pZXuhNc~gwc@shzQhwrLWsCSWcvt zCq=b4>wRWHhpw%c9&1rhSS}o#e^susA!cb}j@ZMP=ntVrxgy}y32qTB{CaC`CD1Q* zM66C)M!_KidU09e={`qglIj!cP?kO&t?tRA(MzbSt)?Qh1%VB zbBz-S0n=vbQ*ehoyiW90cI8S|QUSMF1QcQ9NhQD !N z`$tvw6T`z-v#w9M_TTd7|Mk#!fu=6ORv+cwz?r-LihhHlO{s*Z4%Bw@9(}16g3u=p z)>e`s_anE)K`jF0ITc``1E2$*nwol9eE8xbXj@e>OY`3310eBuvxCC#oV4yE6(+L- z9kGi66cc4OdbO5TSM4U6SlH7hL1ra|-;xhbZZiS0A4WziKED nF z8K$088w1-&+DR%I30Z40cO^lg`vSHS1=)-jwRTyk5Wkl8cFU$xcJ3fwUr^2wf e zy2@U+38|Z$ne3?`vYHlarC3Lw<})fY2Tc&fzz9@r3rkb#E&I0nB=476k7Y2?7TtMp zT-n)dRC-vwu~^3K;LBb97oc;XEcltYaYRJKA%9V7FIfaiD$7bn?lT}~aY5T3b;N`9 zHe1~|013XAu!r
2)=sEAVo%fIyUySoa*o z$}`Y_*gx$relpJs?5(f4AMdRgmKPx=Cnwj|)@=K_yTjTJ4E;gsEsgJTb7p+ppjT2T zCDCVfdU`s3GIZKzSO{TQk3 cPuC<)0J6rNzlel zO14ye^>gu{esrmp)yz|=jqa1L-EQvk?AwzqE@rEA_H9CcCbZ1iPfD8VN3 Xkh+jI3K} b?! z56R`)yYWY|Bpow;Z?!B@WpW&3qo+m>Tmq_G8@Z`iZ>ZEuT73@v0jh9gP(lCvf%=*n zYc@tk#%bO}z$n dTTK2C)etw%kuxWm>emx=miKVr`Ief@XUsDFuYdKD;o z(id(K-pMOeZ&OI65Ge6Lz2NVFnmkabKi$amN}07IaT^s8{Q?FBTcy{ZO*Q&TzC5lA ztZNW}&5>U#896Q3IKS-;^=DTE-55{gd{*<`pW-$MnwF0h5Lu2V(-IODO!pT>Mu|N9 z5;FB-vJLR>$G@zO^s&lF*or(~F@C4=6!pzD)93c|vsc|MqWqF2qY~Kb;{V U*X1D(!=Dm;MbYM*!QdYW8*dB#NZflYka9MU^&Si {g3IR z!# `U2Df=KnJK99pXqa3#=GsU@O>Kk!X3oICpeqYw ze!Q|o$&^4Sgh0p1*Thj9gF=t0XCz+V;ha8$nq;{ipM2Be-5A?zRhmaR8%bn39grMk zRBY0CMqX;_y0f5)g>DnibN6hD4<#_ik-o5$%}TDbgDFds^apSEy#RoNfiVi|GF@%- znSZzt>Cmt-U5>akiU~HxeI`n+C^u@4D?7V9YCi)ZE|jBrT=qL7S2F=^ggmkaVl~Lp z%4sj{aa%B?SyHkY%*!Dgk2Va<(sGJ6ZQ69bARq=~c9*8T$+`du{Njuwd+6Fm41B{4 zmm9g9-1w-<;b=u8>yjzeGao5yCl66)NCP>sGP-?WyQAX`dQU@yK3cORp~meIsAd($ z5sO)s24uWiPv*bw;nSn~5qt5s1QuYwq=b@5TfdtTb$!g_qMiiMpL^nefWx=1j#VEY z`yqwh(mV8C&a3cYULzfp)kPjvj5~rN){~f(2NuN|HV7l%{uFK2ljEzN`AQv9PptDf zIJW=c#1dBZDR70%s2TveUuEiO!M-^?50fU~v0cD`(qD}^66+@NwfI>MV=~N^)l|h` zFMrBebr8 olITHnS}) h?5;#2mrFgOLL@aV|fgPnX$0|rG9 e3NQ?mCMZIx!UvGd>g{pqy ?~*`?K_a55=t4^94M-G@bfb%>G9tZ z2}{4vwo>G#OTO}64Cdu!z?G;l!y8la$h7QHO}6Q#vs{^yDW9maU<<>L3BT~ ?0j zRd<4(|1=2b)?L);4)PqI(JpyhmjF|K%WTPReu5J7uMAKA7+?_sgqTbYY4Sgd#r;u_ zAqkbURGW^)QS toP{%qzF%YKOuP6`e_4-UL6LBM+DVLw`7OERzRRCNW{4t_~09XFBm z?HnCJi-Yx!27yG&Y>xvmadB3~Cp4MqyW0DPQX7QtK_#ewU%FX;QQ7}tP=p*}G66nd zW)h1JRiK2ot3$vdGCf(E-niS;JXfWj7{E5Jy0lW+H2XcRarl)o9VaJ7dzyI=-=ICT zAsi((_(@!4Vi+A_=da2jLOmmzO1HFGWEO H*+H+@yoOc%D5`lEKPeCm%%i(jXEv!+IdwMZxPS@ zm`9=AZQjqoqbsb}RUXG(`{$+{DJki0OX(~9_~K%Ryw)$1U9Ms0rqo=$Bc1&I{;Gmf zbt>f8dv)B^jc4G3-x1ljxN^H$*7<{*9C>K4+b0=29W0<)9vs?bSu#(b*-Q$2S&=Z( z%8yYb%XmOjr=&U$CwJPq#m&tfzp?d+FYWPduAq%ny%-gRU8#7M1D&aoHsaOz?)5Ka zpL*dt$!mj(XzC4 e3qZu{STHXs*RRrD>Yu OD#ss;`Zv|*Ski6 zhls4|;a9iFSa)ARbR(cDw~kTzQ2`R_Ki`14WsJX;bTwW X zP ro<76dhgs+2TwB)i%N7%&w0FakQM%2Jk z-`v^Q?=%Kv=WZXcDd(K&cybGvUq)%&TQVa8#z=H1k8TjP03jz}`@$#01mueC%^GP{ zR#t*18>_{YnN+FUU+>=K;o<4b84-M6DcI*;qP@nFZgh_dDKT%ZK3qtFtohWs`~vtx*=$=g%W-DaTvk*{}8G9J&s5Jp>aV zb5gH6JN|7areZv3nS1%rJt$4ni4RkBw1G|^@3>@%eJn!t8W>RO`TwJI!WUau_3T7V zfKQ$;cf?&0+3ST@=Xge8E2GO}>qix$I7M%gk}($cdR(IEvtxH}z*6PYvPNbHYZ22m zvRINs7Or*>&+p7%QavX9pjePciB;Ews)A+WUW1pNF=&KwrQos5VBFZ+(UJyj=8|(; z1SemN(jH6YZ{5dlzY4w^{JdN*DbYbJW3OFZMKWCdO-fon^cM>CNj*+$X;3Up5xTx_ zgI$#%kMAoo22;(wDTbfTqFY*6o}{{@!c^%&L+NoUx-7A48=mwJSF% f2lqE6|Fx=6?VFedU?L&sQFS_Xo^n@_4nf?`3-BqFpxm`c(+q+k4 IInJ5k2-^vbS6)*9ViF_v*USV+KU@iPxHb{7{tgES<_<0*(Q2xEe4GOh75 zh4ih&tq39)+Vh@v CaXaRDSG9kg{FbQcQGai!v zUc+}UsL;Q?@$-e1<@L)~z1b`>3aga^r7q+mEtg%s_U=isGV#kh_v~+{NA9`YJS6wk ze)uJ+P6cHu?p|;}SxmSE3SH>B5$5;+LN-D58At-a$OQ_C0wdMs1qGUSQ*Z6nTBM zo&vr+Q~2^aXdEq!+owT#Tc zTi`YS~~c-LoRYVlGVy)f7@5&Cq-0Pj|5c+q(14Y{`d@x DJT(0E$m1NsEST(w>rsmk7SE-_-=_r!DvqkhL8B_O(to@Ui~TRM680K52Fpv uI3oer!d)%Ir_G~cUCnC`$@rP7aSe16o{A4n!FKFeD+g$qpt=7o|mtTkPo$! z8s9+kB(d QI7SQoE}KKSQNh z7VdhukF*4xH%lDMswa|ZoM0%Q$IKbrmf?6;kZl1CcT%s%)5dw%vepaF7FK{~_rN1Z z$IAZqmCoK+^?MLkL3bQZLUAYbbG9p&AUri<>Geb!>f>)9-x#39G6rA$x?Zv0EhCgN z4=;D$)~_(yk{nE!Q?MH|#H{Ev%Mhny^~({q(EYVfKg``(`D e1M#P9FPEme F 3y@Wx_d|%>-pmC8u^(o9T&)x`6F1 zE5IlD0n_{t4whIt8DnvGB-l-uU$C3#op9a8$K>?JI9Qzs8O5JzrYW_!_62OwdJaxy zuz$KRaWD$uYk;EpoF5+fDP6+F)m3$Dbf!JpqGfI(gZ&;d`RBt!h_a5v70=d1gV6MN zea?^PbqGd-XOYg3FLI<34~FA}c0j%eDpX38vYM|iffLCX%*uLDrbilFzxgQQen}nc zNCU2i=fU0h9A=X$p1D&VuNJprwiTyrzM>gyANds9h}g|Hv@!X$cABe(KVI6;hf^9n zL!h^EjbO gr@nCX Ta?M@WMh%$q5%>89$L9rrGuh(}mFzD@xHKiKjz zq5BXv=gb -!aJ4-+C+Dog=&Z ze;PRxf2hBIj}M9x*+~i6WzA6bElXpkkbU1}C&peROLl6MUAF9$ER()UGWL-eG|Ik> zEMsiRJyYM`?|1v%-+kQs56tH?=bX=ZocH@YU(eaOIf0w|N=Mrr1Nf(QUS7;8@dq1& ztd^S?!%>o{9$4!NGdKba|Ai^Ch(1l!afn~Xdz#`de*blMysY1GooT)WLm4&f)SAL# zP*8&WBp2=%TUM9T2z@AcTK`%t)*;Ip34iMO2{aOO^)zk7goT$x?&XeM6|CA7x}5Uz z<;xza9;{-^MRs;niU- OBSXdpq&bY!8zL9ksv?P)CsI+Q3vbC+8FIlEVb0(c`r!<}m&;6a|DU^+;3Jn73r zt2 $!?>{4u&ic+UL2wbK~Bvgx{az7UW*m?eKJ&&LR!sP1{kP3=YA_ kmTZWy}56RSpJWG?xTlU`1;2ZPjw)!s=@a7@&WK)1PRvt}f~k$Ewf zkY5M~2XOiOy_VpjQR(%y-FcGGj>jzYd5%FBS2H`&s@15N%Vu<^jU+-NeFnYm6iULh zv_iro9#~mdqRD%O#o9OSS+|06c0{+A47~1rnd>GTVy^2B>sG#QmBOknX`?(V{ioy@ zHB9(9#_Vj-A4BH(BY#Zha)SO31Kh{8zYp~QwHZTw+W6qMeZ~vPXRy6g%KmK>9>K8i zwL}mVa%ZG*S7&K>dmMkj8Oj{)RRFDhFZc*fVBCf G^&}U9zAnD9CnXBzlL+5oYWsC)V%&|i&`?t8G_DSE=i!#@COaJ=IE3MCRvAz zt(SwvCo*|)hS+6TThVSHsx#;)BUIenEz-Tnj)tT6mM6MjKxxs<6UwDuo5vb~3y`Ic z<84?{E^E(v ~9&R5LT9F5mK)_G;><&rYx<5BB@}#v&h%2l$%?v%t6yn! 2Wv*lbb7P zB_287tb7pyy%J6VDp*|nLA~6@QXg2 lf#?P@yx(iz-`X|zlaVecpSr-PG z#SB&gLbcy{B*}8QE}iY;Tr2@6!$fY*tI2$`tj{a|8q?yPj=aM;#*BsM-W_@VOiCdz zl&hV;{gawf=4}1`!mI6E=v%q!rBBUfEEL0e;p-*?$ZA@dnL@?=+vuzyC%1`_b>1>f zt+pje1R^AZ`Mep@MwRr@S<9T;+}deQU5D6A#i70*7(4jH8U?>x;!q(v!cWt|D8xnN z83q^8T|%6i^WNCY-xK6|B^0WlHLXZEmgB?TVCgQ!)ny8q>A^tbp%>SjU~=v`%dnjo ze)3ZNa#OLRl%%V$h)1hpjyN^(!xHxMc+)0!2Hdx*w@Je+hka{#{D<5Xx)F=32vvBk zXq#OSHDR)_8r>`_>N1A#>w2koNO6-vwLQIr(CZ;H)2rrB`{{$LUARYW;v1>%k&T4$ z7oO~4D_;y+gakX}?~De1{!4A! o6~D0SI! zN_z`yC9VX$?-8s5->YJwZO|fI^ ^EL6+Kzt^%dlAyoIp&(tU)gxn`^-0
cn|QUN) @g{n~iBR*AaF=ByoB+@ESEkCw^x7{Hu5cfG8?A@^&9RlTh*m9U3OUaeC*WGma) z*K?>SiP=(9_` uny&uvbp3V0 zC}o|v(W4Jr{D5(xc3;fTLvgmHiE w96UM^&w2vn0d3U?OaO-L}ig zOrrMH&Cs38&4VNmzf_yUEtWUQf!Ql=&J*WOhfD~i;isa(f`~Rc>$2sRW3ej}{!G0V zE;Scs{-7~Duzl27iK6qTq_t63ZIieo{}6Pto#$4_;;5qdA(uOUlDms%LAvt(-ulZc zsc*;|!%0Ic?{+yAA*nIL)QfYjpUwdY2EN(#!l4$r+Mkh|#*4Y2dz^tq_lC{MuRz5e z9IfJ)+FvcdOd <%lQCjBGsP|JL!yRGlKoli zjZ2RD$)e8(U2N*Ar4r{roY`ATlp(FwlGPL+N!aDE^bqLxsS#@mnG|DM8D)q2pB7>5 z5PpZ1ZV0d{dULAwp{RDGHx*KtyMi7^rBzw-qZDu3BskI`;ym-_AtXvLUCrL>Y|-71 z68tMSlG7v$?ye3^I$(}mqFHx%xWYZt**en6m7l9BM7u;r+K|O9yGw9ju3gj~sSFdU z(Pyh0G(aaR%^km8p2ZSY??dqGB76%gcNFHht)8)tj|L8p?BJKl-Eu? 4ig~p`7%HU3x~EJ3Dd1SscGMJj0D<^v6H|0S zf*Qth>amGJG2laC&~O^a?GaPtAzmvlOEElms4{R&S}7Sc*Ve( zUq{JTIMz^a%W0W hJJY4;;HqZ1c>AVZapb`71^EcDWS|6tpik$Zj zDWUg>l+6tC{KC$V!IB6q`+0{tDnU#rcT^>~J1@W7R@>Dc m33P+Sot`qpqFe#aV<9922B^}_=>N?dADvad{OOxpUIV`iV;W=yYC@MJb%rPd) z9vm?yn^_d) =@4xzQYm-vM zqv7?EhJh#62kJWJA?8Nx;AZdK!1CSUPc+X*Ql3DfmO+*`b~En=OV_|Xlt=_S)1v96 zW*P0wIx$|HZ84+hQ|sF1rY4>{8OJ*Vt c3q*9c)=Qpqm7NB3U_c# zr36~-3pc$LG(z9D !O0i`T?V_5GOIv6{tV5iw(h? z)-*#BWGs=$nlCjtmxZHsg( V|N|xI) zFU~R%sDCFaoUf&P#e0XnJ;=DUeQh+|Jbk6!ZEGl>^t5tL=-N`_n>Sc}x}7z3*Vpln zsTjAt1~U_Hm~Z;TV*6dY-xNYWDDAvbGs?{z?k`V-CY}m&;!S}Qop{dL>mCw>-CZ%8 zH=bCO$DzIc;>0K@kWN!9R3DkYAeOQ!Jwa`EQpm|`qO*9l6l8sb8?`%Ag}Kh8V?c~< z?l_Ys@J0yY&YKs$@3zTJ K_9L0$FlylR+xt$8| z8q|mmDU!_W5vEMPnyf6Q9*!JUp3J4x8a3LG7sw>_+RuBYmY-`do-4PjbDaW{EEN00 zE#$nl9g8$vFeMGA4t<;V-!yb?Hc@?w36GFmc?1v@ A5t$7_7tYKgx>U2 &XHK@1q>1jdfkPQ}}2 zaaujMu#BZ~ ZOZ&I;#iO*Jxi1#FlS@&P#=3lYP1_5mbBLB(v5B@VFqxjby0ML{DA %RcC#;h;3ZldZ1XMbA;dYoU$SqRtP(j>PJyDF5};6AgwtXEWCRjp04TuElvRk#yjLu7_$mMJ zyU6mOEcLB)bc?^gnTs6_g*0Ha=oFM-4raj7rO2XGtmo9)Do{ZWVE|%Jl#`$70_kkm z8%iQnB|w*)TTV$ZF1QTLpHXTKGPwoi{`ADKI-LfIXfGsT&XP(F%dqooLVDp++=ewH zHd@#2J3jLl_)EdaEf^e9HmRxN-6L5$!UFNUzFRc)o38p7UtC_ey~q&(g6#=jCk;TR z(h#tq{~Y1`A3Yrc|L{xv8eqtiD)7nw+t_~U-`}Rm&tnHxi2}wy9HrnLjrPCkPwxS1 zkRPAoZr_M$e&lD12rsXJH`JaX?B~q$vLTStsK4pMT%m#YAhIbSxT0R)L;(;1Fy6oT z!}@0jkU_v7UU#{KBN^$IVvTx4v_OOjQ_zI#ga-T;NVL50W2fiHPsdm7?iJKQzsL d82d@ }R+ zxzhG_zgg*6NvrdlqRRZ7ey;C%V)9>670iKs2*o=zN|#@rUP|WRNa)KPA;~;JRQ8=v zy#PC_E*LT}3lJQzFfx;6!Xy+EB?LkS$Y?(Rf}L{HAD!q$w;|)lZeT?`9&KvV-9&5O zP4rTP6r2b924(T}CcW l@NPQ-D^ ze*|#LdB7vlpb=GYV^i~F(w3_sJ0Kjk*Bu7lE3?jL2Jn%W{)WxP33O@Q6GcDTLn{=n zEJro2DooU;yk4a!15J8Z