Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Prevent Angular from updating base href with langcode

I have problem with angular v9. I have implemented i18n localization features into my app. When I try to build my application with certain location it constantly adds the sub-folder to the base href path (but I want to keep files in the sub-folder). Is there any way to prevent adding the locale into the base href url?

Reproduction steps:

  1. Generate dummy project ng new Project.
  2. Build production config ng build --prod --localize.
  3. Files are built into dist/en-us/ folder, but the index.html has <base href="/en-US/">.

Is there any way to force angular to stop adding the langcode into base href? This inflicts all the app links to contain language code, which is unwanted.

My deployment is configured to deploy the application based on the directory into different location which every will be at root.

  • hxxp://app.fr/ root in /fr/ folder
  • hxxp://app.de/ root in /de/ folder
like image 546
Gumowy Kaczak Avatar asked Feb 11 '20 13:02

Gumowy Kaczak


3 Answers

I had the same problem and found the solution in this issue:

https://github.com/angular/angular-cli/issues/17260

You have to write for each locales and for your sourceLocale the baseHref

"i18n": {
    "sourceLocale": {
        "code": "en",
        "baseHref": ""
    },
    "locales": {
        "fr": {
            "baseHref": "",
            "translation": "src/locale/messages.fr.xlf"
        }
    }
}
like image 71
Thomas Avatar answered Dec 04 '22 07:12

Thomas


Posting with my solution, but that kills the new feature of Angular v.9.

The solution is to not use --localize flag.

So I removed definition:

"i18n": {
    "sourceLocale": "de",
    "locales": {
      "fr": "src/app/locale/messages.fr.xlf",
}

Then I created custom configuration under:

  "configurations": {
    "fr": {
      "i18nFile": "src/app/locale/messages.fr.xlf",
      "i18nLocale": "fr",
      "outputPath": "dist/fr"
    }

And just called:

ng build --configuration=fr

But that is ugly.. so waiting for some better ideas :)

like image 35
Gumowy Kaczak Avatar answered Dec 04 '22 09:12

Gumowy Kaczak


You can override baseHref with this:

"locales": {
  "de": {
    "translation": "src/locale/messages.de.xlf",
    "baseHref": "/"
  },
....
}
like image 22
Vladimir Portianko Avatar answered Dec 04 '22 07:12

Vladimir Portianko