Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Répertoire et nom de fichier aspx

5 réponses
Avatar
Gloops
Bonjour tout le monde,

Voici quelques semaines (en fait, en commen=E7ant =E0 partir d'il y a pil=
e=20
deux mois) j'ai trouv=E9 (avec un soutien moral ici) comment =E9tablir la=
=20
liste des cultures pour lesquelles une page est traduite, en parcourant=20
la liste des fichiers de ressources du r=E9pertoire consacr=E9 =E0 cet ef=
fet.=20
Pour chacun il faut demander la traduction d'une ressource, il faudra=20
donc faire attention d'avoir un nom de ressource pr=E9sent dans tous les =

fichiers de ressources.

Je suis en train de mettre =E7a en =9Cuvre, pour cela il me faut le=20
r=E9pertoire et le nom de la page, et je me demande si pour =E7a je n'ai =
pas=20
loup=E9 une syntaxe plus simple.

J'avais d'abord pens=E9 =E0 MapPath, mais ce n'=E9tait pas forc=E9ment pl=
us=20
simple, puisque je cherche =E0 avoir une syntaxe qui fonctionne pour=20
toutes les pages, et que je pourrai inclure (apr=E8s adaptation bien=20
entendu) dans le code d'une page ma=EEtresse (aspect que je n'ai pas=20
encore abord=E9).

Voici donc comment j'ai proc=E9d=E9 pour =E9tablir le chemin d'un fichier=
de=20
ressources :

TraitPage p =3D new TraitPage();
CultureInfo gci =3D new CultureInfo("fr"); // par exemple
Label1.Text =3D p.CheminCulture(this, gci); // pour voir


public class TraitPage
{
public TraitPage()
{
//
// TODO: Add constructor logic here
//
}

public String NomPage(Page p)
{
string str;
int L =3D p.Request.PhysicalPath.LastIndexOf("\\") + 1;
str =3D p.Request.PhysicalPath
.Substring(L, p.Request.PhysicalPath.Length - L);
L =3D str.IndexOf(".");
return str.Substring(0, L);
}

public String RepPage(Page p)
{
string str;
int L =3D p.Request.PhysicalPath.LastIndexOf("\\") + 1;
str =3D p.Request.PhysicalPath.Substring(0, L);
return str;
}

public String CheminCulture(Page p, CultureInfo ci)
{
string str;
str =3D RepPage(p) + "App_LocalResources\\" + NomPage(p)
+ ".aspx." + ci.ToString() + ".resx";
return str;
}

}

5 réponses

Avatar
Gilles Kohl [MVP]
On Thu, 06 Mar 2008 20:28:21 +0100, Gloops
wrote:

Bonjour tout le monde,

Voici quelques semaines (en fait, en commençant à partir d'il y a pile
deux mois) j'ai trouvé (avec un soutien moral ici) comment établir la
liste des cultures pour lesquelles une page est traduite, en parcourant
la liste des fichiers de ressources du répertoire consacré à cet effet.
Pour chacun il faut demander la traduction d'une ressource, il faudra
donc faire attention d'avoir un nom de ressource présent dans tous les
fichiers de ressources.

Je suis en train de mettre ça en œuvre, pour cela il me faut le
répertoire et le nom de la page, et je me demande si pour ça je n'ai pas
loupé une syntaxe plus simple.



Bonjour Gloops,

Je ne suis pas sûr de bien comprendre ce que tu essayes d'obtenir,
mais est-ce tu connais System.IO.Path et ses methodes statiques, comme
Path.Combine, Path.GetDirectoryName, Path.ChangeExtension,
Path.GetFileName, Path.GetFileNameWithoutExtension etc. ?

Petite collection très utile, la-dedans.

Regards,
Gilles [MVP].

(Please reply to the group, not via email.
Find my MVP profile with past articles / downloads here:
http://www.gilleskohl.de/mvpprofile.htm)
Avatar
Gloops
Gilles Kohl [MVP] a écrit, le 06/03/2008 21:41 :
Bonjour Gloops,

Je ne suis pas sûr de bien comprendre ce que tu essayes d'obtenir,
mais est-ce tu connais System.IO.Path et ses methodes statiques, comme
Path.Combine, Path.GetDirectoryName, Path.ChangeExtension,
Path.GetFileName, Path.GetFileNameWithoutExtension etc. ?

Petite collection très utile, la-dedans.





Bonjour Gilles,

Effectivement, d'après les noms, ça a bien l'air d'être ça qu'il me faut.

Le fil d'il y a deux mois s'appelait "Liste des cultures du projet". Il
s'agira de remplir une liste déroulante avec les cultures disponibles
pour permettre à l'utilisateur de choisir dans quelle langue il veut
afficher la page, si le choix implicite ne lui convient pas pour une
raison ou pour une autre.

Je vais regarder ça de plus près demain, merci beaucoup.
Avatar
Gloops
Gilles Kohl [MVP] a écrit, le 06/03/2008 21:41 :
mais est-ce tu connais System.IO.Path et ses methodes statiques



Alors voilà ce que ça donne. Je n'ai pas changé l'appel, puisque la
structure en fonction me semble à maintenir, en revanche les fonctions
sont bien entendu plus lisibles, on s'épargne la gymnastique
intellectuelle à la lecture, qui faisait que mon code n'était lisible
que jusqu'à 23h ;)


using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Globalization;

/// <summary>
/// Summary description for TraitPage
/// </summary>
public class TraitPage
{
public TraitPage()
{
//
// TODO: Add constructor logic here
//
// peut-être à redire sur le fait que je n'ai rien
// mis ici ...
}

public String NomPage(Page p)
{
return
System.IO.Path.GetFileNameWithoutExtension(p.Request.PhysicalPath);
}

public String RepPage(Page p)
{
return System.IO.Path.GetDirectoryName(p.Request.PhysicalPath)
+ @"";
}

public String CheminCulture(Page p, CultureInfo ci)
{
return RepPage(p) + "App_LocalResources"
+ NomPage(p) + ".aspx." + ci.ToString() + ".resx";
}

}
Avatar
Gilles Kohl [MVP]
On Fri, 07 Mar 2008 23:08:27 +0100, Gloops
wrote:

Gilles Kohl [MVP] a écrit, le 06/03/2008 21:41 :
mais est-ce tu connais System.IO.Path et ses methodes statiques



Alors voilà ce que ça donne. Je n'ai pas changé l'appel, puisque la
structure en fonction me semble à maintenir, en revanche les fonctions
sont bien entendu plus lisibles, on s'épargne la gymnastique
intellectuelle à la lecture, qui faisait que mon code n'était lisible
que jusqu'à 23h ;)




public String NomPage(Page p)
{
return
System.IO.Path.GetFileNameWithoutExtension(p.Request.PhysicalPath);
}

public String RepPage(Page p)
{
return System.IO.Path.GetDirectoryName(p.Request.PhysicalPath)
+ @"";
}

public String CheminCulture(Page p, CultureInfo ci)
{
return RepPage(p) + "App_LocalResources"
+ NomPage(p) + ".aspx." + ci.ToString() + ".resx";
}

}



Bien plus lisible à mon avis. Un "using System.IO;" permettrait
d'économiser encore quelques charactères.

Si NomPage n'est pas utilisé ailleurs (et si la nomenclature est celle
que je pense), on pourrait le changer en

return Path.GetFileName(p.Request.PhysicalPath);

et économiser encore le

+ ".aspx."

dans CheminCulture?

Regards,
Gilles [MVP].

(Please reply to the group, not via email.
Find my MVP profile with past articles / downloads here:
http://www.gilleskohl.de/mvpprofile.htm)
Avatar
Gloops
Gilles Kohl [MVP] a écrit, le 08/03/2008 08:46 :
Bien plus lisible à mon avis. Un "using System.IO;" permettrait
d'économiser encore quelques charactères.



c'est pourtant vrai ...


Si NomPage n'est pas utilisé ailleurs (et si la nomenclature est cell e
que je pense), on pourrait le changer en

return Path.GetFileName(p.Request.PhysicalPath);

et économiser encore le

+ ".aspx."

dans CheminCulture?




Ah oui, j'ai sûrement dû me faire un nœud dans la tête : j'ai pré vu
l'emplacement pour mettre le code de la culture, mais c'était après
aspx, donc effectivement on peut mettre le nom entier avec son extension.

Merci encore pour ces précieux conseils.