How to replace strings in Angular frontend

With 2021.05 release, we have added the possibility to replace strings from Fleio with your custom ones. In order to do that, we will have to define a new language called “en-replace” which will contain the custom strings, besides the default ones.

First of all, you will have to get the default translations from our public repository: https://github.com/fleio/fleio-i18n

If you check the fleio-i18n/translations/ngfrontend/src/assets/locale/ location, you will see that there are multiple templates that can be used to get the String ID and the String:

  • template-enduser.json

  • template-staff.json

  • template.json

If you inspect the template-enduser.json you will see that the translations format will be:

{
  "locale": "en-US",
  "translations": {
    "STRING ID": "STRING"
  }
}

Warning

You should create and edit the following files as fleio user. This ensures that no file permission issue occurs later. If you want to know more about file permissions in a Docker deployment, see Docker installation file permissions.

You should switch to fleio user before continuing:

sudo -i -u fleio

As an example, we will change the SIGN IN text with SIGN IN - CHANGED STRING. First, you will have to create a new json file called messages.en-replace.json in the /home/fleio/compose/custom directory. If the custom directory does not exist, create it.

Now, if you inspect the template.json file, you will see that the SIGN IN string has 5207635742003539443 ID. In the messages.en-replace.json file, we will have to add the following:

{
  "locale": "en-US",
  "translations": {
    "5207635742003539443": "SIGN IN - CHANGED STRING"
  }
}

The next step is to create the Dockerfile, in the /home/fleio/compose/custom directory.

touch /home/fleio/compose/custom/Dockerfile

Insert the following code in /home/fleio/compose/custom/Dockerfile file. This will ensure that on each recreate / upgrade, the fleio-frontend-1 image will contain the changed strings.

ARG FLEIO_DOCKER_HUB
ARG FLEIO_RELEASE_SUFFIX

FROM ${FLEIO_DOCKER_HUB}/fleio_frontend${FLEIO_RELEASE_SUFFIX}

# we're defining the Fleio installation path in one place and we're using it below
ENV INSTALL_PATH="/var/webapps/fleio"

COPY messages.en-replace.json "$INSTALL_PATH/frontend/enduser/assets/locale/messages.en-replace.json"

If you want to change strings for staff panel, you will have to change the path where you’re copying the messages.en-replace.json file to:

  • staff: $INSTALL_PATH/frontend/staff/assets/locale/messages.en-replace.json

We will also have to add the following code to the /home/fleio/compose/docker-compose.override.yml file:

# Add here your Docker Compose customizations
# docker-compose.override.yml is not overwritten by Fleio
# (while docker-compose.yml may be OVERWRITTEN on Fleio upgrades)

services:
  frontend:
    build:
      context: ./custom/
      dockerfile: Dockerfile
      args:
        - FLEIO_DOCKER_HUB
        - FLEIO_RELEASE_SUFFIX
    image: fleio_frontend_custom
    pull_policy: never

Now we will build and apply the customizations:

# make sure you're in the directory with Docker Compose files
cd /home/fleio/compose

# build your image
docker compose build

# apply your changes to the running frontend
docker compose up -d

After we have re-built the frontend image, we will have to change the default language to en-replace for the panels that we have added the changed strings (in our case the enduser.config.json):

fleio edit enduser.config.json
fleio edit staff.config.json

Now if you access the end-user panel, you should see that the SIGN IN button text has changed.