“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Skill is when luck becomes a habit.
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Daarna mapt hij de verschillende talen aan een resx file door simpelweg de naam van de klasse te pakken en daar de culture code achter te plakken.
Wat jij wilt doen als ik het goed begrijp is dat voor iedere form nog wel een aparte resx file is, maar dat alle talen voor die form daarin staan opgeslagen in plaats van een specifieke resx file voor iedere taal.
Afgezien van het feit dat ik niet kan inzien waarom je dat uberhaupt zou willen aangezien het een de boel alleen maar onoverzichtelijker maakt. Kan je nu al rustig vertellen dat dit niet mogelijk is.
De resx file gebruikt namelijk een Key/Value manier voor het opslaan van de string in het bestand.
M.a.w. elke key mag maar 1x voorkomen in het bestand.
Wil je dus meerdere talen in 1 resx file stoppen dan moet je voor ieder property wat in de resx file gemapped is een culture code erachter zetten..... .. .
Ik kan me echt niet voorstellen dat dat is wat je wilt.
Overigens is localisatie in het winformsmodel iets wat zeer te wensen overlaat, maar dat is een ander verhaal.
Nee je begrijpt me niet helemaal goed. Ik heb wel degelijk meerdere resx files waar alleen text key/value pairs in staan. Ik heb dus bijvoorbeeld Applicatie.resx en Applicatie.nl-NL.resx. Ik maak een resourcemanager op de volgende manierD-Raven schreef op vrijdag 29 september 2006 @ 15:46:
De ResourceManager bouwt zichzelf op aan de hand van de class-type welke je meegeeft als parameter in de constructor.
Daarna mapt hij de verschillende talen aan een resx file door simpelweg de naam van de klasse te pakken en daar de culture code achter te plakken.
Wat jij wilt doen als ik het goed begrijp is dat voor iedere form nog wel een aparte resx file is, maar dat alle talen voor die form daarin staan opgeslagen in plaats van een specifieke resx file voor iedere taal.
Afgezien van het feit dat ik niet kan inzien waarom je dat uberhaupt zou willen aangezien het een de boel alleen maar onoverzichtelijker maakt. Kan je nu al rustig vertellen dat dit niet mogelijk is.
De resx file gebruikt namelijk een Key/Value manier voor het opslaan van de string in het bestand.
M.a.w. elke key mag maar 1x voorkomen in het bestand.
Wil je dus meerdere talen in 1 resx file stoppen dan moet je voor ieder property wat in de resx file gemapped is een culture code erachter zetten..... .. .
Ik kan me echt niet voorstellen dat dat is wat je wilt.
Overigens is localisatie in het winformsmodel iets wat zeer te wensen overlaat, maar dat is een ander verhaal.
1
| ResourceManager rm = new ResourceManager( "MyNamespace.Applicatie", Assembly.GetExecutingAssembly() ); |
dan zet ik in mijn applicatie mijn Culture goed en dan roep ik op verschillende plekken in mijn appilcatie
1
| rm.GetString( "Key" ); |
aan. Dit werkt allemaal goed. Maar ik wil graag van de Satellite assemblies af. Ik zou dus eigenlijk willen dat de resources in de main assembly ge-embed worden.
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Digitaal onderwijsmateriaal, leermateriaal voor hbo
Of snap ik t nou nog steeds niet, wat je nu wilt ? (kan zijn hoor, tis vrijdag
Want als je dat wilt, dan kun je bij de properties van een resx file (of andere resource file) bij build action opgeven dat het een embedded resource is.
Maar volgens mij is dit standaard al, dus ik zal er wel naast zitten met mijn aanname
Ja dat is idd wat ik wil. Ik heb de build action al op Embedded resource staan. Maar omdat het culture specific resources zijn ( Door de culture in de naam op te nemen ) maakt hij er aparte satellite assemblies van.D-Raven schreef op vrijdag 29 september 2006 @ 16:08:
Dus je wilt dat de resource files niet meer als losse bestanden in je output dir komen te staan maar onderdeel worden van je exe ?
Of snap ik t nou nog steeds niet, wat je nu wilt ? (kan zijn hoor, tis vrijdag)
Want als je dat wilt, dan kun je bij de properties van een resx file (of andere resource file) bij build action opgeven dat het een embedded resource is.
Maar volgens mij is dit standaard al, dus ik zal er wel naast zitten met mijn aanname
Ik zal de link die gorgi_19 geeft nog even doorlezen.
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Mocht er echt geen andere oplossing zijn: de resourcemanager werkt niet zo heel lastig. Een custom resourcemanager is ook zo gemaaktrwb schreef op vrijdag 29 september 2006 @ 16:49:
[...]
Ja dat is idd wat ik wil. Ik heb de build action al op Embedded resource staan. Maar omdat het culture specific resources zijn ( Door de culture in de naam op te nemen ) maakt hij er aparte satellite assemblies van.
Ik zal de link die gorgi_19 geeft nog even doorlezen.
Digitaal onderwijsmateriaal, leermateriaal voor hbo
Maar bij mij staan alle resx file aangeduid als embedded resource en ze komen ook niet terug in de debug/release dir.
Dat was idd nu ook mijn oplossing. Ik heb gewoon een sub-class van ResourceManager gemaakt en de InternalGetResourceSet geoverload.gorgi_19 schreef op vrijdag 29 september 2006 @ 17:02:
[...]
Mocht er echt geen andere oplossing zijn: de resourcemanager werkt niet zo heel lastig. Een custom resourcemanager is ook zo gemaakt
Deathraven:
Dan heb jij waarschijnlijk niet je files als volgt genamed
Applicatie.resx
Applicatie.nl-NL.resx
Applicatie.fr.resx
Als je deze naming convention aanhoudt waardoor de resourcemanager automatisch de juiste resource taal voor een Culture pakt dan maakt hij per resx file een satellite assembly aan. Alleen de default resx file wordt in de main assembly ge-embed.
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Alleen bij mij gebeurd het dus wel.
Nu werk ik met meerdere mensen aan dit project dus het kan zijn dat iemand ergens een optie heeft aangezet ofzow waar ik niks van weet.
Wanneer ik maandag weer op mn werk ben zal ik er eens naar kijken
Als je dat idd zou willen kijken dan zou het mooi zijn. Als ik namenlijk een nieuw project maak en daar de resx files aan toe voeg en ik compileer dan komen er in mijn bin directory per culture een sub directory en een aparte assemblyD-Raven schreef op vrijdag 29 september 2006 @ 18:59:
Dat heb ik wel. En dat doettie ook.
Alleen bij mij gebeurd het dus wel.
Nu werk ik met meerdere mensen aan dit project dus het kan zijn dat iemand ergens een optie heeft aangezet ofzow waar ik niks van weet.
Wanneer ik maandag weer op mn werk ben zal ik er eens naar kijken
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Verwijderd
Hoezo? Kijk eens naar ResXEditorVerwijderd schreef op zaterdag 30 september 2006 @ 01:37:
Nadeel van de ResourceManager oplossing in VS2005 is dat het vertaalwerk heel moeilijk uit te besteden is aan een vertaalbureau. Er zullen vast wel tools en applicaties zijn/komen die 't voor de vertaler makkelijker kan maken, maar als 't een paar centen (en een arm en een been) mag kosten zou ik 's naar Multilizer kijken.
Digitaal onderwijsmateriaal, leermateriaal voor hbo
ResxEditor is niet echt een handig programma'tje vindt ik. Maar ik heb hier zelf een eenvoudig vertaal tooltje gemaakt die wel enigsinds op ResxEditor lijkt maar waar toch iets meer mogenlijkheden in zitten.
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
embed optie meegeven. Hiermee kan je definieren dat een bepaalde resource binnen een bepaalde satellite asm moet ge-embed worden; misschien kan je hier ook gewoon opgeven dat die resources dus in je main assembly moeten geplaatst worden ? Echter, ik vraag me af waarom je dit eigenlijk wil ? Wat is er mis met het 'hub and spoke' model, zoals dat by default gebruikt wordt ? Ik vind dit best een goede methode, aangezien het makkelijk is om bv een nieuwe resource toe te voegen, zonder dat je je app moet re-deployen.
https://fgheysels.github.io/
Soms is het handig als je maar 1 .exe bestand hoeft te downloaden en dat te runnen, zonder alles in een folder te zetten met aparte subfolders en / of via een msi te installerenwhoami schreef op zaterdag 30 september 2006 @ 12:12:
Echter, ik vraag me af waarom je dit eigenlijk wil ? Wat is er mis met het 'hub and spoke' model, zoals dat by default gebruikt wordt ? Ik vind dit best een goede methode, aangezien het makkelijk is om bv een nieuwe resource toe te voegen, zonder dat je je app moet re-deployen.
Digitaal onderwijsmateriaal, leermateriaal voor hbo
Verwijderd
Ziet er ongeveer uit als de Multilizer editor van een jaar of 5 geleden...
Sindsdien zijn ze bij Multilizer een stuk verder, en bieden ze niet alleen een hoop ondersteuning voor workflow en multiuser (multi-vertaler) gebruik, maar bij .NET winforms apps ziet de vertaler ook wysiwyg welke caption etc. 'ie aan het vertalen is, en of de vertaling ook nog past op de plek waar die tekst moet staan.
Dan wordt 't opeens een stuk minder belangrijk dat een programmeur vergeten is om Label42 een echte beschrijvende naam te geven, en is de kans op vertalingen die "van het label aflopen" vele malen kleiner.
Voor kleinere projecten, of wanneer je niet al teveel talen ondersteunt is dat misschien overkill, maar voor projecten waar 't de moeite waard is verdient 't zich dubbel en dwars terug.
日本!🎌
Dat ziet er idd wel interesant uit. Ik zal er morgen eens naar kijken of het daar mee wil lukken._Thanatos_ schreef op zaterdag 30 september 2006 @ 23:19:
Kun je niet gebruikmaken van ILMerge om die satellite assemblies naderhand te mergen met de main assembly?
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Als we de engelse taal toevoegen dan krijgen wij ook satellite assemblies.
Fijn systeem dit...
Met ILMerge kan ik idd wel de assemblies samenvoegen. Ik heb alleen niet meer geprobeerd of het resource verhaal dan nog werkt aangezien ik nu toch al een custom resource manager heb gemaakt die in de main assembly de juiste resources zoekt aan de hand van onze eigen naming convention.D-Raven schreef op maandag 02 oktober 2006 @ 09:33:
Ok, de reden waarom ik wel subdirs maar geen assembly krijg, omdat we tot nu toe alleen de taal nederlands hebben ingesteld. Blijkbaar creeert hij dan wel de NL-nl subdirectory, maar niet de assemblie's omdat die (vanwege het feit dat bij ons NL-nl standaard is) in de main assemblie wordt opgenomen.
Als we de engelse taal toevoegen dan krijgen wij ook satellite assemblies.
Fijn systeem dit...
Dit is toch makkelijker omdat we anders nog een extra stap nodig hebben.
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”