diff --git a/.dockerignore b/.dockerignore index 5f2af4dac..66346fbd2 100644 --- a/.dockerignore +++ b/.dockerignore @@ -8,9 +8,6 @@ venv/ node_modules __pycache__ -# All hidden files -.* - Dockerfile README.md babel.cfg diff --git a/.github/workflows/beta-ci.yml b/.github/workflows/beta-ci.yml index 946213ff8..0e6d521dd 100644 --- a/.github/workflows/beta-ci.yml +++ b/.github/workflows/beta-ci.yml @@ -1,53 +1,276 @@ -name: Docker Build and Push +name: Docker Build and Push Beta on: push: branches: - - v3-beta + - "v3-beta" + workflow_dispatch: {} permissions: packages: write env: - REGISTRY: ghcr.io + GHCR_REGISTRY: ghcr.io + DH_REGISTRY: docker.io IMAGE_NAME: wizarrrr/wizarr IMAGE_TAG: v3-beta jobs: - build: + clear: runs-on: ubuntu-latest + steps: + # Clear the digests from the artifacts + - name: Clear digests + uses: geekyeggo/delete-artifact@v2 + with: + name: | + digests_dh + digests_ghcr + + build_ghcr: + name: Build Digest for GHCR + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + platform: + - linux/amd64 + - linux/arm64 + + steps: + # Checkout the repo + - name: Checkout + uses: actions/checkout@v4 + + # Get the Metadata from the Docker Image + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} + + # Set up QEMU + # - name: Set up QEMU + # uses: docker/setup-qemu-action@v3 + # with: + # platforms: ${{ matrix.platform }} + + # Set up Docker Buildx + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + # Login to GHCR + - name: Login to GHCR + uses: docker/login-action@v3 + with: + registry: ${{ env.GHCR_REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + # Build and push the image + - name: Build and push by digest + id: build + uses: docker/build-push-action@v5 + with: + context: . + push: true + platforms: ${{ matrix.platform }} + labels: ${{ steps.meta.outputs.labels }} + provenance: false + outputs: type=image,name=${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }},push-by-digest=true,name-canonical=true + cache-from: type=gha,scope=${{ matrix.platform }}-${{ env.GHCR_REGISTRY }} + cache-to: type=gha,mode=max,scope=${{ matrix.platform }}-${{ env.GHCR_REGISTRY }} + + # Export the digest for later use + - name: Export digest + run: | + mkdir -p /tmp/digests + digest="${{ steps.build.outputs.digest }}" + touch "/tmp/digests/${digest#sha256:}" + + # Upload the digest as an artifact + - name: Upload digest + uses: actions/upload-artifact@v3 + with: + name: digests_ghcr + path: /tmp/digests/* + if-no-files-found: error + retention-days: 1 + + merge_ghcr: + name: Merge Digest for GHCR + runs-on: ubuntu-latest + needs: + - build_ghcr steps: # Checkout the repo - name: Checkout uses: actions/checkout@v2 - # Get the Release Version from .github/latest + # Get the Release Version from latest - name: Get the Release Version from latest id: get_version run: echo "::set-output name=version::$(cat latest)" + # Download the digests from the artifacts + - name: Download digests + uses: actions/download-artifact@v3 + with: + name: digests_ghcr + path: /tmp/digests + # Set up Docker Buildx - name: Set up Docker Buildx - id: buildx uses: docker/setup-buildx-action@v3 + # Get the Metadata from the Docker Image + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} + # Login to GHCR - name: Login to GHCR - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: - registry: ${{ env.REGISTRY }} + registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} + # Create manifest list and push + - name: Create manifest list and push to Registry + working-directory: /tmp/digests + run: | + docker buildx imagetools create \ + --tag ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} \ + --tag ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}-${{ steps.get_version.outputs.version }} \ + $(printf '${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}@sha256:%s ' *) + + # Inspect image + - name: Inspect image + run: docker buildx imagetools inspect ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} + + build_dh: + name: Build Digest for Docker Hub + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + platform: + - linux/amd64 + - linux/arm64 + + steps: + # Checkout the repo + - name: Checkout + uses: actions/checkout@v4 + + # Get the Metadata from the Docker Image + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.DH_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} + + # Set up QEMU + # - name: Set up QEMU + # uses: docker/setup-qemu-action@v3 + # with: + # platforms: ${{ matrix.platform }} + + # Set up Docker Buildx + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + # Login to Docker Hub + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + registry: ${{ env.DH_REGISTRY }} + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + # Build and push the image - - name: Build and push + - name: Build and push by digest + id: build uses: docker/build-push-action@v5 with: context: . - file: ./Dockerfile push: true - tags: | - ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} - ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}-${{ steps.get_version.outputs.version }} - platforms: linux/amd64,linux/arm64 + platforms: ${{ matrix.platform }} + labels: ${{ steps.meta.outputs.labels }} provenance: false + outputs: type=image,name=${{ env.DH_REGISTRY }}/${{ env.IMAGE_NAME }},push-by-digest=true,name-canonical=true + cache-from: type=gha,scope=${{ matrix.platform }}-${{ env.GHCR_REGISTRY }} + cache-to: type=gha,mode=max,scope=${{ matrix.platform }}-${{ env.GHCR_REGISTRY }} + + # Export the digest for later use + - name: Export digest + run: | + mkdir -p /tmp/digests + digest="${{ steps.build.outputs.digest }}" + touch "/tmp/digests/${digest#sha256:}" + + # Upload the digest as an artifact + - name: Upload digest + uses: actions/upload-artifact@v3 + with: + name: digests_dh + path: /tmp/digests/* + if-no-files-found: error + retention-days: 1 + + merge_dh: + name: Merge Digest for Docker Hub + runs-on: ubuntu-latest + needs: + - build_dh + steps: + # Checkout the repo + - name: Checkout + uses: actions/checkout@v2 + + # Get the Release Version from latest + - name: Get the Release Version from latest + id: get_version + run: echo "::set-output name=version::$(cat latest)" + + # Download the digests from the artifacts + - name: Download digests + uses: actions/download-artifact@v3 + with: + name: digests_dh + path: /tmp/digests + + # Set up Docker Buildx + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + # Get the Metadata from the Docker Image + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.DH_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} + + # Login to Docker Hub + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + registry: docker.io + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + # Create manifest list and push + - name: Create manifest list and push to Registry + working-directory: /tmp/digests + run: | + docker buildx imagetools create \ + --tag ${{ env.DH_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} \ + --tag ${{ env.DH_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}-${{ steps.get_version.outputs.version }} \ + $(printf '${{ env.DH_REGISTRY }}/${{ env.IMAGE_NAME }}@sha256:%s ' *) + + # Inspect image + - name: Inspect image + run: docker buildx imagetools inspect ${{ env.DH_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a86ab6094..a2ffb6c3d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,4 @@ -name: Release Docker Image CI +name: Docker Build and Push Release on: release: @@ -13,12 +13,102 @@ permissions: packages: write env: - REGISTRY: ghcr.io + GHCR_REGISTRY: ghcr.io + DH_REGISTRY: docker.io IMAGE_NAME: wizarrrr/wizarr + IMAGE_TAG: latest jobs: + test: + runs-on: ubuntu-latest + steps: + # Do not build if the release is a pre-release + - name: Only if the release is not a pre-release + if: github.event.release.prerelease == true + run: exit 1 + + clear: + runs-on: ubuntu-latest + needs: + - test + steps: + # Clear the digests from the artifacts + - name: Clear digests + uses: geekyeggo/delete-artifact@v2 + with: + name: digests + build: runs-on: ubuntu-latest + needs: + - test + strategy: + fail-fast: false + matrix: + platform: + - linux/amd64 + - linux/arm64 + + steps: + # Checkout the repo + - name: Checkout + uses: actions/checkout@v4 + + # Get the Metadata from the Docker Image + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} + + # Set up QEMU + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + # Set up Docker Buildx + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + # Login to GHCR + - name: Login to GHCR + uses: docker/login-action@v3 + with: + registry: ${{ env.GHCR_REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + # Build and push the image + - name: Build and push by digest + id: build + uses: docker/build-push-action@v5 + with: + context: . + push: true + platforms: ${{ matrix.platform }} + labels: ${{ steps.meta.outputs.labels }} + provenance: false + outputs: type=image,name=${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }},push-by-digest=true,name-canonical=true + + # Export the digest for later use + - name: Export digest + run: | + mkdir -p /tmp/digests + digest="${{ steps.build.outputs.digest }}" + touch "/tmp/digests/${digest#sha256:}" + + # Upload the digest as an artifact + - name: Upload digest + uses: actions/upload-artifact@v3 + with: + name: digests + path: /tmp/digests/* + if-no-files-found: error + retention-days: 1 + + merge: + runs-on: ubuntu-latest + needs: + - build steps: # Checkout the repo - name: Checkout @@ -34,33 +124,60 @@ jobs: echo "::set-output name=version::${{ github.event.release.tag_name }}" fi - # Do not build if the release is a pre-release - - name: Only if the release is not a pre-release - if: github.event.release.prerelease == true - run: exit 1 + # Download the digests from the artifacts + - name: Download digests + uses: actions/download-artifact@v3 + with: + name: digests + path: /tmp/digests # Set up Docker Buildx - name: Set up Docker Buildx - id: buildx uses: docker/setup-buildx-action@v3 + # Get the Metadata from the Docker Image + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} + # Login to GHCR - name: Login to GHCR - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: - registry: ${{ env.REGISTRY }} + registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - # Build and push the image - - name: Build and push - uses: docker/build-push-action@v5 + # Login to Docker Hub + - name: Login to Docker Hub + uses: docker/login-action@v3 with: - context: . - file: ./Dockerfile - push: true - platforms: linux/amd64,linux/arm64 - provenance: false - tags: | - ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest - ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.get_version.outputs.version }} + registry: docker.io + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + # Create manifest list and push + - name: Create manifest list and push to GHCR + working-directory: /tmp/digests + run: | + docker buildx imagetools create \ + --tag ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} \ + --tag ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}-${{ steps.get_version.outputs.version }} \ + $(printf '${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}@sha256:%s ' *) + + # Create manifest list and push + - name: Create manifest list and push to Docker Hub + working-directory: /tmp/digests + run: | + docker buildx imagetools create \ + --tag ${{ env.DH_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} \ + --tag ${{ env.DH_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}-${{ steps.get_version.outputs.version }} \ + $(printf '${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}@sha256:%s ' *) + + # Inspect image + - name: Inspect image + run: | + docker buildx imagetools inspect ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} + docker buildx imagetools inspect ${{ env.DH_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} diff --git a/.github/workflows/delete-tag.yml b/.github/workflows/delete-tag.yml new file mode 100644 index 000000000..ba575cbce --- /dev/null +++ b/.github/workflows/delete-tag.yml @@ -0,0 +1,22 @@ +name: Cleanup Untagged Images + +on: + workflow_dispatch: + inputs: + tag: + description: "Tag of the image" + required: true + +jobs: + delete-untagged-images: + name: Delete Untagged Images + runs-on: ubuntu-latest + steps: + - uses: bots-house/ghcr-delete-image-action@v1.1.0 + with: + # NOTE: at now only orgs is supported + owner: bots-house + name: some-web-service + # NOTE: using Personal Access Token + token: ${{ secrets.GITHUB_TOKEN }} + tag: ${{ github.event.inputs.tag }} diff --git a/.github/workflows/translations.yml b/.github/workflows/translations.yml index 9f57cd542..2c28424ee 100644 --- a/.github/workflows/translations.yml +++ b/.github/workflows/translations.yml @@ -12,6 +12,8 @@ permissions: jobs: compile: runs-on: ubuntu-latest + permissions: + contents: write steps: # Checkout the repo and the translations branch - name: Checkout @@ -23,13 +25,12 @@ jobs: - name: Install dependencies run: | sudo apt-get update - sudo apt-get install -y nodejs npm + sudo apt-get install -y nodejs npm gettext # Install dependencies for frontend - name: Install dependencies for frontend run: | - cd frontend - npm install + cd frontend && npm install vue3-gettext # Compile translations - name: Compile translations @@ -38,13 +39,8 @@ jobs: npm run gettext:compile # Commit and push changes - - name: Commit and push changes - env: - GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - git config --local user.name "GitHub Action" - git config --local user.email "<>" - git remote set-url origin "https://$GIT_TOKEN@github.com/Wizarrrr/wizarr.git" - git add . - git commit -m "Compile translations" - git push origin translations + - uses: stefanzweifel/git-auto-commit-action@v5 + with: + commit_message: "Compile translations" + file_pattern: "**/translations.json" + branch: translations diff --git a/Dockerfile b/Dockerfile index fc4bc4db6..f83c01167 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,15 @@ # Build Stage -FROM --platform=$BUILDPLATFORM python:3.12.0-alpine +FROM --platform=$TARGETPLATFORM python:3.12.0 AS build + +# Set environment variables +ARG TARGETPLATFORM +ARG BUILDPLATFORM + +# Show buld platform and target platform in Docker log +RUN echo "Build platform is $BUILDPLATFORM" && echo "Target platform is $TARGETPLATFORM" + +# Update system and install build dependencies +RUN apt-get update && apt-get install -y libffi-dev g++ nmap nginx figlet curl nodejs npm && apt-get clean # Copy over version WORKDIR /data @@ -14,7 +24,10 @@ WORKDIR /data/backend COPY ./backend ./ # Install build dependencies -RUN apk add --no-cache libffi-dev g++ nmap tzdata nginx +# RUN apk add --no-cache libffi-dev g++ nmap tzdata nginx bash figlet + +# Copy .bashrc from ./files to ~/.bashrc +COPY ./files/.bashrc /root/.bashrc # Upgrade pip and install Python dependencies RUN pip install --upgrade pip && pip install --no-cache-dir -r requirements.txt @@ -28,9 +41,6 @@ RUN pip install --upgrade pip && pip install --no-cache-dir -r requirements.txt WORKDIR /data/frontend COPY ./frontend/ ./ -# Install build dependencies -RUN apk add --no-cache nodejs npm - # Node.js and Frontend build RUN npm install --verbose RUN npm run build @@ -43,21 +53,33 @@ RUN npm run build WORKDIR /data # Copy Nginx configuration -COPY nginx.conf /etc/nginx/http.d/default.conf +COPY nginx.conf /etc/nginx/sites-available/wizarr.conf +RUN ln -s /etc/nginx/sites-available/wizarr.conf /etc/nginx/sites-enabled/wizarr.conf # Setup timezone -RUN cp /usr/share/zoneinfo/UTC /etc/localtime \ - && echo UTC > /etc/timezone +# RUN cp /usr/share/zoneinfo/UTC /etc/localtime \ +# && echo UTC > /etc/timezone # Set environment variables ENV TZ=Etc/UTC -LABEL maintainer="Ashley Bailey " -LABEL description="Wizarr is an advanced user invitation and management system for Jellyfin, Plex, Emby etc." - # Expose ports EXPOSE 5690 -WORKDIR /data/backend + +COPY docker-entrypoint.sh /docker-entrypoint.sh +RUN chmod +x /docker-entrypoint.sh # Start Nginx in the background and Gunicorn in the foreground -CMD [ "sh", "-c", "nginx && gunicorn --worker-class geventwebsocket.gunicorn.workers.GeventWebSocketWorker --bind 0.0.0.0:5000 -m 007 run:app" ] +ENTRYPOINT ["/docker-entrypoint.sh"] + +LABEL org.opencontainers.image.authors "Ashley Bailey " +LABEL org.opencontainers.image.description "Wizarr is an advanced user invitation and management system for Jellyfin, Plex, Emby etc." + +LABEL org.label-schema.schema-version="1.0" \ + org.label-schema.license="MIT" \ + org.label-schema.name="wizarr" \ + org.label-schema.description="Wizarr is an advanced user invitation and management system for Jellyfin, Plex, Emby etc." \ + org.label-schema.url="https://github.com/wizarrrr/wizarr" \ + org.label-schema.vcs-url="https://github.com/wizarrrr/wizarr.git" \ + maintainer="Ashley Bailey " \ + description="Wizarr is an advanced user invitation and management system for Jellyfin, Plex, Emby etc." diff --git a/backend/api/routes/accounts_api.py b/backend/api/routes/accounts_api.py index ba4ffb083..fa2976e30 100644 --- a/backend/api/routes/accounts_api.py +++ b/backend/api/routes/accounts_api.py @@ -6,6 +6,9 @@ from api.models.accounts import AccountsGET, AccountsPOST +from playhouse.shortcuts import model_to_dict, dict_to_model +from json import loads, dumps +from app.models.database.accounts import Accounts api = Namespace("Accounts", description="Accounts related operations", path="/accounts") @@ -50,6 +53,34 @@ def put(self): return update_account(current_user['id'], **request.form), 200 +@api.route("/me") +@api.route("/me/", doc=False) +@api.doc(security=["jsonWebToken", "cookieAuth"]) +class AccountsMeAPI(Resource): + + method_decorators = [jwt_required()] + + @api.doc(description="Get the current user's account") + @api.response(200, "Successfully retrieved the current user's account") + @api.response(500, "Internal server error") + def get(self): + """Get the current user's account""" + return loads(dumps(model_to_dict(Accounts.get_by_id(current_user['id']), exclude=[Accounts.password]), indent=4, sort_keys=True, default=str)), 200 + + @api.doc(description="Update the current user's account") + @api.response(200, "Successfully updated the current user's account") + @api.response(500, "Internal server error") + def patch(self): + """Update the current user's account""" + account = Accounts.get_by_id(current_user['id']) + + for key, value in request.json.items(): + setattr(account, key, value) + + account.save() + + return loads(dumps(model_to_dict(Accounts.get_by_id(current_user['id']), exclude=[Accounts.password]), indent=4, sort_keys=True, default=str)), 200 + @api.route("/") @api.route("//", doc=False) @api.doc(security=["jsonWebToken", "cookieAuth"]) diff --git a/backend/api/routes/authentication_api.py b/backend/api/routes/authentication_api.py index d3bbad42b..c51e64e88 100644 --- a/backend/api/routes/authentication_api.py +++ b/backend/api/routes/authentication_api.py @@ -5,6 +5,10 @@ from app.models.wizarr.authentication import AuthenticationModel from api.models.authentication import LoginPOST +from app.models.database.sessions import Sessions +from flask import current_app, jsonify +from flask_jwt_extended import create_access_token, get_jti, get_jwt + api = Namespace(name="Authentication", description="Authentication related operations", path="/auth") api.add_model("LoginPOST", LoginPOST) @@ -37,7 +41,26 @@ class Refresh(Resource): @api.response(500, "Internal server error") def post(self): """Refresh the JWT token""" - return AuthenticationModel.refresh_token() + # Check if the current_app is set + if not current_app: + raise RuntimeError("Must be called from within a flask route") + + # Get the identity of the user + identity = get_jwt_identity() + jti = get_jwt()["jti"] + + # Find the session in the database where the access_jti or refresh_jti matches the jti + session = Sessions.get_or_none((Sessions.access_jti == jti) | (Sessions.refresh_jti == jti)) + + # Exchange the refresh token for a new access token + access_token = create_access_token(identity=identity) + + # Update the access token in the database + session.access_jti = get_jti(access_token) + session.save() + + # Return the new access token + return jsonify(access_token=access_token) @api.route("/logout") @api.route("/logout/", doc=False) diff --git a/backend/api/routes/mfa_api.py b/backend/api/routes/mfa_api.py index 17ac38d34..2c7a42c32 100644 --- a/backend/api/routes/mfa_api.py +++ b/backend/api/routes/mfa_api.py @@ -422,7 +422,7 @@ def post(self): "auth": { "token": access_token, "refresh_token": refresh_token, - "user": AccountsModel(model_to_dict(user, exclude=[Accounts.password])).to_primitive(), + "user": loads(dumps(model_to_dict(user, exclude=[Accounts.password]), indent=4, sort_keys=True, default=str)), } }) diff --git a/backend/app/__init__.py b/backend/app/__init__.py index 0f80f0f64..8f50a63ca 100644 --- a/backend/app/__init__.py +++ b/backend/app/__init__.py @@ -8,12 +8,17 @@ from .models.database import * from .security import * from .utils.clear_logs import clear_logs +from .migrator import run_migrations +# Get the base directory BASE_DIR = path.abspath(path.dirname(__file__)) # Load environment variables load_dotenv() +# Run migrations +run_migrations() + # Create the app app = Flask(__name__) diff --git a/backend/app/migrator/__init__.py b/backend/app/migrator/__init__.py new file mode 100644 index 000000000..546f2f636 --- /dev/null +++ b/backend/app/migrator/__init__.py @@ -0,0 +1,109 @@ +from os import path, listdir +from importlib import import_module +from app.models.database.base import db +from app.models.database.migrations import Migrations +from packaging.version import parse +from datetime import datetime, timedelta + +def get_current_version(): + # File path to the version file + version_file = path.join(path.dirname(path.realpath(__file__)), "../", "../", "../", "latest") + + # Read the current version + with open(version_file, "r") as f: + current_version = parse(f.read()) + + return current_version + +def get_current_database_version(): + # Get the current version from the database + db_version = db.execute_sql("SELECT value FROM settings WHERE key = 'version';").fetchone() + + # If the version does not exist in the database then return 0.0.0 + if not db_version or not db_version[0]: + return parse("0.0.0") + + return parse(db_version[0]) + +def run_migrations(): + # Log the start of the migration + time = datetime.now() + print("Starting migrations at", time.strftime("%Y-%m-%d %H:%M:%S")) + + # Get current version from the database and the current version from the version file + # if it exists in the database + db_version = get_current_database_version() + current_version = get_current_version() + + # If the database version is greater than the current version then exit the application + if db_version > current_version: + print("Database version is greater than the current version") + print("Please update the application") + exit(1) + + # Get the base directory + BASE_DIR = path.abspath(path.join(path.dirname(path.realpath(__file__)), "../", "../")) + + # Get the current migrations in the database + current_migrations = [migration.name for migration in Migrations.select()] + + # Run the migrations in the migrations folder based on their filenames date and time from oldest to newest + for migration in sorted(listdir(path.join(BASE_DIR, "app", "migrator", "migrations"))): + # Skip if it does not end with .py + if not migration.endswith(".py"): + continue + + # Skip if it is already in the database + if migration.split(".")[0] in current_migrations: + continue + + # Import the migration + print(f"Running migration {migration}") + + # Run the migration + run_migration(migration.split(".")[0]) + + # Update the database version + update_database() + + # Log the end of the migration + print("Finished migrations in", (datetime.now() - time).total_seconds(), "seconds") + + +def run_migration(name: str): + # Import the migration + try: + migration = import_module(f"app.migrator.migrations.{name}") + except Exception as e: + print(f"Failed to import migration {name}") + print(e) + return + + # Run the migration + try: + migration.run() + except Exception as e: + print(f"Failed to run migration {name} on line {e.__traceback__.tb_lineno}") + print(e) + return + + # Save the migration to the database + try: + Migrations.create(name=name) + except Exception as e: + print(f"Failed to save migration {name} to the database") + print(e) + return + + +def update_database(): + # Get the current version + current_version = get_current_version() + + # Get the current version from the database + db_version = db.execute_sql("SELECT value FROM settings WHERE key = 'version';").fetchone() + + if not db_version or not db_version[0]: + db.execute_sql(f"INSERT INTO settings (key, value) VALUES ('version', '{current_version}');") + else: + db.execute_sql(f"UPDATE settings SET value = '{current_version}' WHERE key = 'version';") diff --git a/backend/app/migrator/create.py b/backend/app/migrator/create.py new file mode 100644 index 000000000..1bcdb11c0 --- /dev/null +++ b/backend/app/migrator/create.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python +from datetime import datetime +from os import path +from packaging.version import parse + +def get_current_version(): + # File path to the version file + version_file = path.join(path.dirname(path.realpath(__file__)), "../", "../", "../", "latest") + + # Read the current version + with open(version_file, "r") as f: + current_version = parse(f.read()) + + return current_version + +# Get the current script's directory +script_dir = path.dirname(path.abspath(__file__ if '__file__' in locals() else path.abspath(path.realpath(__file__)))) + +# Define the path to the template file relative to the script's directory +template_file = path.join(script_dir, "template.py") + +# Get the current date and time in YYYY-MM-DD_HH-MM-SS format +current_time = datetime.now().strftime("%Y-%m-%d_%H-%M-%S") + +# Create the filename with the current date in the current directory +filename = path.join(script_dir, "migrations", f"{current_time}.py") + +# Read the content of the template file +with open(template_file, "r") as template: + template_content = template.read() + +# Replace {data} with Tue Oct 10 2023 date format and replace {name} with the filename +template_content = template_content.replace("{date}", datetime.now().strftime("%a %b %d %Y")) +template_content = template_content.replace("{name}", current_time) +template_content = template_content.replace("{version}", str(get_current_version())) + +# Write the modified content to the new file +with open(filename, "w") as new_file: + new_file.write(template_content) + +print(f"MIGRATION: {filename} created") diff --git a/backend/app/migrator/migrations/2023-10-10_21-34-32.py b/backend/app/migrator/migrations/2023-10-10_21-34-32.py new file mode 100644 index 000000000..b209e1879 --- /dev/null +++ b/backend/app/migrator/migrations/2023-10-10_21-34-32.py @@ -0,0 +1,60 @@ +# +# CREATED ON VERSION: V3.4.2 +# MIGRATION: 2023-10-10_21-34-32 +# CREATED: Tue Oct 10 2023 +# + +from peewee import * +from playhouse.migrate import * +from datetime import datetime + +from app import db + +# Do not change the name of this file, +# migrations are run in order of their filenames date and time + +def run(): + # Use migrator to perform actions on the database + migrator = SqliteMigrator(db) + + # Add duration column to the invitations table with a default value of null + # if the column already exists, do nothing + with db.transaction(): + if "duration" not in [column.name for column in db.get_columns("invitations")]: + migrate(migrator.add_column("invitations", "duration", CharField(default=None, null=True))) + + # Add plex_allow_sync column to the invitations table with a default value of false + # if the column already exists, do nothing + with db.transaction(): + if "plex_allow_sync" not in [column.name for column in db.get_columns("invitations")]: + migrate(migrator.add_column("invitations", "plex_allow_sync", BooleanField(default=False))) + + # Add specific_libraries column to the invitations table with a default value of empty string + # if the column already exists, do nothing + with db.transaction(): + if "specific_libraries" not in [column.name for column in db.get_columns("invitations")]: + migrate(migrator.add_column("invitations", "specific_libraries", CharField(default=""))) + + # Add expires column to the users table with a default value of null + # if the column already exists, do nothing + with db.transaction(): + if "expires" not in [column.name for column in db.get_columns("users")]: + migrate(migrator.add_column("users", "expires", DateTimeField(default=None, null=True))) + + # Add created column to the users table with a default value of current timestamp + # if the column already exists, do nothing + with db.transaction(): + if "created" not in [column.name for column in db.get_columns("users")]: + migrate(migrator.add_column("users", "created", DateTimeField(null=True, default=datetime.now()))) + db.execute_sql("UPDATE users SET created = datetime('now') WHERE created IS NULL") + + # Fix code column from 'None' to null in the users table + # if the column does not exist, do nothing + with db.transaction(): + if "code" in [column.name for column in db.get_columns("users")]: + migrate(migrator.drop_not_null("users", "code")) + db.execute_sql("UPDATE users SET code = NULL WHERE code = 'None'") + + # Print a log to the console stating the migration has been run for this file + print(f"MIGRATION: {__file__} run successfully") + print("MIGRATION INFO: Upgrades people from all versions before 2.2.1") diff --git a/backend/app/migrator/migrations/2023-10-11_20-19-17.py b/backend/app/migrator/migrations/2023-10-11_20-19-17.py new file mode 100644 index 000000000..9733c4a57 --- /dev/null +++ b/backend/app/migrator/migrations/2023-10-11_20-19-17.py @@ -0,0 +1,31 @@ +# +# CREATED ON VERSION: V3.4.2 +# MIGRATION: 2023-10-11_20-19-17 +# CREATED: Wed Oct 11 2023 +# + +from peewee import * +from playhouse.migrate import * + +from app import db + +# Do not change the name of this file, +# migrations are run in order of their filenames date and time + +def run(): + # Use migrator to perform actions on the database + migrator = SqliteMigrator(db) + + + # Update all rows in the invitations table that have expires columns with textual "None" to actual None + # if the column does not exist, do nothing + with db.transaction(): + db.execute_sql("UPDATE invitations SET expires = NULL WHERE expires = 'None'") + + # Drop all values in the settings table that are not null + with db.transaction(): + migrate(migrator.drop_not_null("settings", "value")) + + # Print a log to the console stating the migration has been run for this file + print(f"MIGRATION: {__file__} run successfully") + print("MIGRATION INFO: Upgrades people from all versions on 2.2.1") diff --git a/backend/app/migrator/migrations/2023-10-11_20-48-19.py b/backend/app/migrator/migrations/2023-10-11_20-48-19.py new file mode 100644 index 000000000..647b4876a --- /dev/null +++ b/backend/app/migrator/migrations/2023-10-11_20-48-19.py @@ -0,0 +1,76 @@ +# +# CREATED ON VERSION: V3.4.2 +# MIGRATION: 2023-10-11_20-48-19 +# CREATED: Wed Oct 11 2023 +# + +from peewee import * +from playhouse.migrate import * + +from app import db + +# Do not change the name of this file, +# migrations are run in order of their filenames date and time + +def run(): + # Use migrator to perform actions on the database + migrator = SqliteMigrator(db) + + # Migrate old V2 settings to new V3 settings + # Only run this migration if admin_username and admin_password exist in the settings table + with db.transaction(): + if db.execute_sql("SELECT key FROM settings WHERE key = 'admin_username'").fetchone() and db.execute_sql("SELECT key FROM settings WHERE key = 'admin_password'").fetchone(): + # Get the old settings + admin_username = db.execute_sql("SELECT value FROM settings WHERE key = 'admin_username'").fetchone()[0] + admin_password = db.execute_sql("SELECT value FROM settings WHERE key = 'admin_password'").fetchone()[0] + + # Delete the old settings + db.execute_sql("DELETE FROM settings WHERE key = 'admin_username'") + db.execute_sql("DELETE FROM settings WHERE key = 'admin_password'") + + # Create the new account using the old credentials + db.execute_sql(f"INSERT INTO accounts (username, password, role) VALUES ('{admin_username}', '{admin_password}', 'admin')") + + # Remove admin_key from the settings table + with db.transaction(): + if db.execute_sql("SELECT key FROM settings WHERE key = 'admin_key'"): + db.execute_sql("DELETE FROM settings WHERE key = 'admin_key'") + + # Only run this migration if request_type, request_url and request_api_key exist in the settings table + with db.transaction(): + if db.execute_sql("SELECT key FROM settings WHERE key = 'request_type'").fetchone() and db.execute_sql("SELECT key FROM settings WHERE key = 'request_url'").fetchone() and db.execute_sql("SELECT key FROM settings WHERE key = 'request_api_key'").fetchone(): + # Get the old settings + request_type = db.execute_sql("SELECT value FROM settings WHERE key = 'request_type'").fetchone()[0] + request_url = db.execute_sql("SELECT value FROM settings WHERE key = 'request_url'").fetchone()[0] + request_api_key = db.execute_sql("SELECT value FROM settings WHERE key = 'request_api_key'").fetchone()[0] + + # Delete the old settings + db.execute_sql("DELETE FROM settings WHERE key = 'request_type'") + db.execute_sql("DELETE FROM settings WHERE key = 'request_url'") + db.execute_sql("DELETE FROM settings WHERE key = 'request_api_key'") + + # Create the new request using the old request data + db.execute_sql(f"INSERT INTO requests (name, server_id, service, url, api_key) VALUES ('{request_type}', 1, '{request_type}', '{request_url}', '{request_api_key}')") + + # Only run this migration if api_key exists in the settings table + with db.transaction(): + if db.execute_sql("SELECT key FROM settings WHERE key = 'api_key'").fetchone(): + # Rename the key from api_key to server_api_key in the settings table + db.execute_sql("UPDATE settings SET key = 'server_api_key' WHERE key = 'api_key'") + + # Only run this migration if discord_id exist in the settings table + with db.transaction(): + if db.execute_sql("SELECT key FROM settings WHERE key = 'discord_id'").fetchone(): + # Get the old settings + discord_id = db.execute_sql("SELECT value FROM settings WHERE key = 'discord_id'").fetchone()[0] + + # Delete the old settings + db.execute_sql("DELETE FROM settings WHERE key = 'discord_id'") + db.execute_sql("DELETE FROM settings WHERE key = 'discord_widget'") + + # Create the new request using the old request data + db.execute_sql(f"INSERT INTO discord (guild_id, enabled) VALUES ('{discord_id}', 1)") + + # Print a log to the console stating the migration has been run for this file + print(f"MIGRATION: {__file__} run successfully") + print("MIGRATION INFO: Upgrades people to V3.4.2") diff --git a/backend/app/migrator/migrations/2023-10-11_23-11-06.py b/backend/app/migrator/migrations/2023-10-11_23-11-06.py new file mode 100644 index 000000000..2f4947e5b --- /dev/null +++ b/backend/app/migrator/migrations/2023-10-11_23-11-06.py @@ -0,0 +1,78 @@ +# +# CREATED ON VERSION: V3.4.2 +# MIGRATION: 2023-10-11_23-11-06 +# CREATED: Wed Oct 11 2023 +# + +from peewee import * +from playhouse.migrate import * + +from app import db + +# Do not change the name of this file, +# migrations are run in order of their filenames date and time + +def run(): + # Use migrator to perform actions on the database + migrator = SqliteMigrator(db) + + # Move libraries from the settings table to the libraries table + with db.transaction(): + if db.execute_sql("SELECT key FROM settings WHERE key = 'libraries'").fetchone(): + # Get the libraries from the settings table + libraries = db.execute_sql("SELECT value FROM settings WHERE key = 'libraries'").fetchone()[0] + + from helpers.jellyfin import scan_jellyfin_libraries + from helpers.plex import scan_plex_libraries + + # Get server_type, server_api_key and server_url from the settings table + server_type = db.execute_sql("SELECT value FROM settings WHERE key = 'server_type'").fetchone()[0] + server_url = db.execute_sql("SELECT value FROM settings WHERE key = 'server_url'").fetchone()[0] + server_api_key = db.execute_sql("SELECT value FROM settings WHERE key = 'server_api_key'").fetchone()[0] + + # Decode the libraries variables + old_libraries = libraries.split(", ") + + # Scan the libraries functions map + scan_libraries = { + "jellyfin": lambda: scan_jellyfin_libraries(server_api_key, server_url), + "plex": lambda: scan_plex_libraries(server_api_key, server_url) + } + + # Get the libraries from the server + libraries = scan_libraries[server_type]() + + # Parse the libraries map + parse_libraries = { + "jellyfin": lambda: [{"id": library['Id'], "name": library['Name']} for library in libraries], + "plex": lambda: [{"id": str(library.uuid), "name": library.title} for library in libraries] + } + + # Parse the libraries + new_libraries = parse_libraries[server_type]() + + # Add new libraries to database + for new_library in new_libraries: + if server_type == "jellyfin": + if new_library['id'] not in old_libraries: + print(f"Library {new_library['name']} not found in old libraries, skipping.") + continue + + db.execute_sql(f"INSERT INTO libraries (id, name) VALUES ('{new_library['id']}', '{new_library['name']}')") + print(f"Library {new_library['name']} added to database.") + elif server_type == "plex": + if new_library['name'] not in old_libraries: + print(f"Library {new_library['name']} not found in old libraries, skipping.") + continue + + db.execute_sql(f"INSERT INTO libraries (id, name) VALUES ('{new_library['id']}', '{new_library['name']}')") + print(f"Library {new_library['name']} added to database.") + + + # Remove old libraries from database + db.execute_sql("DELETE FROM settings WHERE key = 'libraries'") + + + # Print a log to the console stating the migration has been run for this file + print(f"MIGRATION: {__file__} run successfully") + print("MIGRATION INFO: Upgrades peoples libraries to V3") diff --git a/backend/app/migrator/migrations/2023-10-11_23-33-47.py b/backend/app/migrator/migrations/2023-10-11_23-33-47.py new file mode 100644 index 000000000..c9f402848 --- /dev/null +++ b/backend/app/migrator/migrations/2023-10-11_23-33-47.py @@ -0,0 +1,43 @@ +# +# CREATED ON VERSION: V3.4.2 +# MIGRATION: 2023-10-11_23-33-47 +# CREATED: Wed Oct 11 2023 +# + +from peewee import * +from playhouse.migrate import * + +from app import db + +# Do not change the name of this file, +# migrations are run in order of their filenames date and time + +def run(): + # Use migrator to perform actions on the database + migrator = SqliteMigrator(db) + + # Update all invitations libraries from there old name format to there id format + with db.transaction(): + if db.execute_sql("SELECT id FROM invitations").fetchone() and db.execute_sql("SELECT id FROM libraries").fetchone(): + # Get all invitations + invitations = db.execute_sql("SELECT id, specific_libraries FROM invitations").fetchall() + + # Get all libraries + libraries = db.execute_sql("SELECT id, name FROM libraries").fetchall() + + print(invitations) + print(libraries) + + # Loop through all invitations and update there libraries + for invitation in invitations: + # Get the old libraries + old_libraries = invitation[1].split(", ") + + # Get the new libraries + new_libraries = [] + for library in libraries: + if library[1] in old_libraries: + new_libraries.append(str(library[0])) + + # Update the libraries + db.execute_sql(f"UPDATE invitations SET specific_libraries = '{','.join(new_libraries)}' WHERE id = {invitation[0]}") diff --git a/backend/app/migrator/migrations/2023-10-14_21-46-16.py b/backend/app/migrator/migrations/2023-10-14_21-46-16.py new file mode 100644 index 000000000..865e46bb2 --- /dev/null +++ b/backend/app/migrator/migrations/2023-10-14_21-46-16.py @@ -0,0 +1,24 @@ +# +# CREATED ON VERSION: V3.4.2 +# MIGRATION: 2023-10-14_21-46-16 +# CREATED: Sat Oct 14 2023 +# + +from peewee import * +from playhouse.migrate import * + +from app import db + +# Do not change the name of this file, +# migrations are run in order of their filenames date and time + +def run(): + # Use migrator to perform actions on the database + migrator = SqliteMigrator(db) + + # Add new Column to users table called tutorial, its a boolean field with a default value of False + tutorial = BooleanField(default=False) + + migrate( + migrator.add_column('accounts', 'tutorial', tutorial), + ) diff --git a/backend/app/migrator/migrations/DO_NOT_TOUCH b/backend/app/migrator/migrations/DO_NOT_TOUCH new file mode 100644 index 000000000..9eacd22d0 --- /dev/null +++ b/backend/app/migrator/migrations/DO_NOT_TOUCH @@ -0,0 +1 @@ +DO NOT TOUCH FILES IN THIS DIRECTORY diff --git a/backend/app/migrator/template.py b/backend/app/migrator/template.py new file mode 100644 index 000000000..5ff68b626 --- /dev/null +++ b/backend/app/migrator/template.py @@ -0,0 +1,17 @@ +# +# CREATED ON VERSION: V{version} +# MIGRATION: {name} +# CREATED: {date} +# + +from peewee import * +from playhouse.migrate import * + +from app import db + +# Do not change the name of this file, +# migrations are run in order of their filenames date and time + +def run(): + # Use migrator to perform actions on the database + migrator = SqliteMigrator(db) diff --git a/backend/app/models/database/__init__.py b/backend/app/models/database/__init__.py index 88374bd95..52ccf0786 100644 --- a/backend/app/models/database/__init__.py +++ b/backend/app/models/database/__init__.py @@ -14,9 +14,10 @@ from app.models.database.discord import Discord from app.models.database.webhooks import Webhooks from app.models.database.requests import Requests +from app.models.database.migrations import Migrations -all_models = [Accounts, APIKeys, Invitations, Libraries, Notifications, Settings, Users, Sessions, OAuthClients, MFA, Discord, Webhooks, Requests] +all_models = [Accounts, APIKeys, Invitations, Libraries, Notifications, Settings, Users, Sessions, OAuthClients, MFA, Discord, Webhooks, Requests, Migrations] try: db.create_tables(all_models, safe=True) diff --git a/backend/app/models/database/accounts.py b/backend/app/models/database/accounts.py index 1e5e7e047..e5e293c54 100644 --- a/backend/app/models/database/accounts.py +++ b/backend/app/models/database/accounts.py @@ -1,4 +1,4 @@ -from peewee import SQL, CharField, DateTimeField, IntegerField +from peewee import SQL, CharField, DateTimeField, IntegerField, BooleanField from app.models.database.base import BaseModel class Accounts(BaseModel): @@ -9,6 +9,7 @@ class Accounts(BaseModel): password = CharField() email = CharField(null=True, unique=True, default=None) role = CharField(default="user") + tutorial = BooleanField(default=False) last_login = DateTimeField(null=True, default=None) created = DateTimeField(constraints=[SQL("DEFAULT (datetime('now'))")]) diff --git a/backend/app/models/database/migrations.py b/backend/app/models/database/migrations.py new file mode 100644 index 000000000..50434a7ae --- /dev/null +++ b/backend/app/models/database/migrations.py @@ -0,0 +1,7 @@ +from peewee import SQL, CharField, DateTimeField, IntegerField, ForeignKeyField +from app.models.database.base import BaseModel + +class Migrations(BaseModel): + id = IntegerField(primary_key=True) + name = CharField() + created = DateTimeField(constraints=[SQL("DEFAULT (datetime('now'))")]) diff --git a/backend/app/models/wizarr/accounts.py b/backend/app/models/wizarr/accounts.py index 3beb358c8..77a88bede 100644 --- a/backend/app/models/wizarr/accounts.py +++ b/backend/app/models/wizarr/accounts.py @@ -4,7 +4,7 @@ from playhouse.shortcuts import model_to_dict from schematics.exceptions import DataError, ValidationError from schematics.models import Model -from schematics.types import DateTimeType, EmailType, StringType +from schematics.types import DateTimeType, EmailType, StringType, BooleanType from werkzeug.security import generate_password_hash from app.models.database.accounts import Accounts @@ -27,6 +27,7 @@ class AccountsModel(Model): confirm_password = StringType(required=False) hashed_password = StringType(required=False) role = StringType(required=False, default="user") + tutorial = BooleanType(default=False) last_login = DateTimeType(required=False, convert_tz=True) created = DateTimeType(required=False, convert_tz=True) diff --git a/backend/app/models/wizarr/authentication.py b/backend/app/models/wizarr/authentication.py index 668008e4c..47e791bf3 100644 --- a/backend/app/models/wizarr/authentication.py +++ b/backend/app/models/wizarr/authentication.py @@ -13,6 +13,7 @@ from schematics.models import Model from schematics.types import BooleanType, StringType from werkzeug.security import check_password_hash, generate_password_hash +from json import loads, dumps from app.models.database.accounts import Accounts from app.models.database.sessions import Sessions @@ -192,28 +193,28 @@ def destroy_session(): session.delete_instance() # ANCHOR - Refresh Token - @staticmethod - def refresh_token(): - # Check if the current_app is set - if not current_app: - raise RuntimeError("Must be called from within a flask route") + # @staticmethod + # def refresh_token(): + # # Check if the current_app is set + # if not current_app: + # raise RuntimeError("Must be called from within a flask route") - # Get the identity of the user - identity = get_jwt_identity() - jti = get_jwt()["jti"] + # # Get the identity of the user + # identity = get_jwt_identity() + # jti = get_jwt()["jti"] - # Find the session in the database where the access_jti or refresh_jti matches the jti - session = Sessions.get_or_none((Sessions.access_jti == jti) | (Sessions.refresh_jti == jti)) + # # Find the session in the database where the access_jti or refresh_jti matches the jti + # session = Sessions.get_or_none((Sessions.access_jti == jti) | (Sessions.refresh_jti == jti)) - # Exchange the refresh token for a new access token - access_token = create_access_token(identity=identity) + # # Exchange the refresh token for a new access token + # access_token = create_access_token(identity=identity) - # Update the access token in the database - session.access_jti = get_jti(access_token) - session.save() + # # Update the access token in the database + # session.access_jti = get_jti(access_token) + # session.save() - # Return the new access token - return jsonify(access_token=access_token) + # # Return the new access token + # return jsonify(access_token=access_token) # ANCHOR - Login User @@ -226,7 +227,7 @@ def login_user(self): resp = jsonify({ "message": "Login successful", "auth": { - "user": AccountsModel(model_to_dict(self._user, exclude=[Accounts.password])).to_primitive(), + "user": loads(dumps(model_to_dict(self._user, exclude=[Accounts.password]), indent=4, sort_keys=True, default=str)), "token": access_token, "refresh_token": refresh_token } diff --git a/backend/helpers/accounts.py b/backend/helpers/accounts.py index 42a0a3349..e0b5183d9 100644 --- a/backend/helpers/accounts.py +++ b/backend/helpers/accounts.py @@ -53,10 +53,6 @@ def get_account_by_id(account_id: int, verify: bool = True, password: bool = Fal account = Accounts.get_or_none(Accounts.id == account_id) exclude = [] - # Check if the account exists - if account is None and verify: - raise ValueError("Account does not exist") - # Remove the password from the account if password is False if password is False: exclude.append("password") @@ -143,33 +139,17 @@ def update_account(account_id: int, **kwargs) -> Accounts: :param id: The id of the account :type id: int - :param username: The username of the account - :type username: str - - :param email: The email of the account - :type email: str - - :param password: The password of the account - :type password: str - - :param confirm_password: The password of the account - :type confirm_password: Optional[str] + :param kwargs: The attributes of the account + :type kwargs: dict :return: An account """ # Get the account by id - db_account = get_account_by_id(account_id, verify=False, password=True) - - # Check if the account exists - if db_account is None: - raise DataError({"account_id": ["Account does not exist"]}) - - # Create the account user - account = AccountsModel(kwargs) + account = Accounts.get_or_none(Accounts.id == account_id) - # Update the account in the database - account.update_account(db_account) + # Update the account + account = AccountsModel(kwargs).update_account(account) # Return the account return account.to_primitive() @@ -185,11 +165,7 @@ def delete_account(account_id: int) -> None: """ # Get the account by id - account = get_account_by_id(account_id, False) - - # Check if the account exists - if account is None: - raise ValueError("Account does not exist") + account = Accounts.get_or_none(Accounts.id == account_id) # Delete the account account.delete_instance() diff --git a/backend/helpers/jellyfin.py b/backend/helpers/jellyfin.py index 0b8cbc4f3..448de13fc 100644 --- a/backend/helpers/jellyfin.py +++ b/backend/helpers/jellyfin.py @@ -6,7 +6,6 @@ from app.models.database import Invitations -from .libraries import get_libraries_ids from .settings import get_media_settings from .users import get_users, create_user, get_user_by_token @@ -248,12 +247,11 @@ def invite_jellyfin_user(username: str, password: str, code: str, server_api_key # Get Invitation from Database invitation = Invitations.get_or_none(Invitations.code == code) + sections = None + # Get libraries from invitation - sections = ( - get_libraries_ids() - if invitation.specific_libraries is None - else invitation.specific_libraries.split(",") - ) + if invitation.specific_libraries is not None and len(invitation.specific_libraries) > 0: + sections = invitation.specific_libraries.split(",") # Create user object new_user = { "Name": str(username), "Password": str(password) } @@ -262,7 +260,12 @@ def invite_jellyfin_user(username: str, password: str, code: str, server_api_key user_response = post_jellyfin(api_path="/Users/New", json=new_user, server_api_key=server_api_key, server_url=server_url) # Create policy object - new_policy = { "EnableAllFolders": False, "EnabledFolders": sections } + new_policy = { "EnableAllFolders": True, "MaxActiveSessions": 2 } + + if sections: + new_policy["EnableAllFolders"] = False + new_policy["EnabledFolders"] = sections + old_policy = user_response["Policy"] # Merge policy with user policy don't overwrite diff --git a/backend/helpers/plex.py b/backend/helpers/plex.py index bfff9d457..8034548fb 100644 --- a/backend/helpers/plex.py +++ b/backend/helpers/plex.py @@ -8,7 +8,6 @@ from app.models.database import Invitations -from .libraries import get_libraries_name from .settings import get_media_settings from .users import get_users, create_user @@ -104,16 +103,11 @@ def invite_plex_user(code: str, token: str, server_api_key: Optional[str] = None # Get Invitation from Database invitation = Invitations.get_or_none(Invitations.code == code) - # Get libraries from invitation - sections = ( - get_libraries_name() - if invitation.specific_libraries is None - else invitation.specific_libraries.split(",") - ) + sections = None - # If specific_libraries is None, convert sections ids to names - if invitation.specific_libraries: - sections = [library.name for library in Libraries.filter(Libraries.id.in_(sections))] + # Get sections from invitation + if invitation.specific_libraries is not None and len(invitation.specific_libraries) > 0: + sections = [library.name for library in Libraries.filter(Libraries.id.in_(invitation.specific_libraries.split(",")))] # Get allow_sync and plex_home from invitation allow_sync = invitation.plex_allow_sync @@ -128,13 +122,17 @@ def invite_plex_user(code: str, token: str, server_api_key: Optional[str] = None # Select invitation method invite_method = my_account.createHomeUser if plex_home else my_account.inviteFriend + invite_data = { + "user": plex_account.email, + "server": plex, + "allowSync": allow_sync + } + + if sections: + invite_data["sections"] = sections + # Invite the user - invite = invite_method( - user=plex_account.email, - server=plex, - sections=sections, - allowSync=allow_sync - ) + invite = invite_method(**invite_data) # If the invite is none raise an error if invite is None: diff --git a/backend/helpers/universal.py b/backend/helpers/universal.py index 831516aa3..2ca7a8e19 100644 --- a/backend/helpers/universal.py +++ b/backend/helpers/universal.py @@ -299,12 +299,15 @@ def global_invite_user_to_media_server(**kwargs) -> dict[str]: try: user = universal_invite_user.get(server_type)(**kwargs) except BadRequest as e: + socketio_emit("log", str(e)) socketio_emit("error", "We were unable to join you to the media server, please try again later.") return { "message": "We were unable to join you to the media server, please try again later." } except RequestException as e: + socketio_emit("log", str(e)) socketio_emit("error", "We were unable to join you to the media server, you may already be a member.") return { "message": "We were unable to join you to the media server, you may already be a member." } except Exception as e: + socketio_emit("log", str(e)) socketio_emit("error", str(e) or "There was issue during the account creation") raise BadRequest("There was issue during the account creation") from e @@ -314,9 +317,11 @@ def global_invite_user_to_media_server(**kwargs) -> dict[str]: try: if server_type == "plex": accept_plex_invitation(token=kwargs.get("token")) except NotFound as e: + socketio_emit("log", str(e)) socketio_emit("error", "We were unable to accept the Plex Invite on your behalf, please accept the invite manually through Plex or your email.") return { "message": "We were unable to accept the Plex Invite on your behalf, please accept the invite manually through Plex or your email." } except Exception as e: + socketio_emit("log", str(e)) socketio_emit("error", str(e) or "There was issue during the account invitation") raise BadRequest("There was issue during the account invitation") from e @@ -343,6 +348,7 @@ def global_invite_user_to_media_server(**kwargs) -> dict[str]: # pylint: disable=no-value-for-parameter user_id = db_user.execute() except Exception as e: + socketio_emit("log", str(e)) socketio_emit("error", str(e) or "There was issue during local account creation") raise BadRequest("There was issue during local account creation") from e @@ -353,11 +359,13 @@ def global_invite_user_to_media_server(**kwargs) -> dict[str]: Users.get_or_none(Users.id == user_id) )) except Exception as e: + socketio_emit("log", str(e)) print(e) try: global_invite_user_to_request_server(user_token=user.id if server_type == "plex" else user["Id"]) except Exception as e: + socketio_emit("log", str(e)) print(e) try: @@ -378,6 +386,7 @@ def global_invite_user_to_media_server(**kwargs) -> dict[str]: # Save the invite invite.save() except Exception as e: + socketio_emit("log", str(e)) print(e) # Emit done diff --git a/docker-compose.yml b/docker-compose.yml index 0ab91bc1c..9d2f7b0a5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,4 +9,4 @@ services: ports: - 5690:5690 volumes: - - ./database:/data/backend/database # Change this to your data directory \ No newline at end of file + - ./database:/data/database # Change this to your data directory diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100644 index 000000000..e10766155 --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# Start Nginx in the background +nginx + +# Start Gunicorn with the specified worker and bind settings in /data/backen +cd /data/backend +gunicorn --worker-class geventwebsocket.gunicorn.workers.GeventWebSocketWorker --bind 0.0.0.0:5000 -m 007 run:app + +# Keep the script running to prevent the container from exiting +tail -f /dev/null diff --git a/files/.bashrc b/files/.bashrc new file mode 100644 index 000000000..d6282fb2a --- /dev/null +++ b/files/.bashrc @@ -0,0 +1,25 @@ +#!/bin/bash + +# Aliases +alias l='ls -lAsh --color' +alias ls='ls -C1 --color' +alias cp='cp -ip' +alias rm='rm -i' +alias mv='mv -i' +alias h='cd ~;clear;' + + +IFS="." + +. /etc/os-release +LATEST=`cat /data/latest` +read -r LATEST_MIN _ <<< "$LATEST" +NPM_BUILD_VERSION=$(npm --version) + + +IFS=" " + +echo -e -n '\E[1;34m' +figlet -w 120 " Wizarr V${LATEST_MIN}" +echo -e "\E[1;36mWizarr Version \E[1;32m${LATEST:-unknown} \E[1;36mNPM Version \E[1;32m${NPM_BUILD_VERSION:-unknown} \E[1;36mOS Version \E[1;32m${PRETTY_NAME:-unknown}" +echo -e '\E[0m' \ No newline at end of file diff --git a/frontend/.vscode/settings.json b/frontend/.vscode/settings.json index 7322d9e19..72cbf5980 100644 --- a/frontend/.vscode/settings.json +++ b/frontend/.vscode/settings.json @@ -43,5 +43,6 @@ "**/.git": true, "**/.DS_Store": true, "**/node_modules": true, + "**/dist": true, } } \ No newline at end of file diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 69ec088f3..49744371f 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -46,6 +46,7 @@ "browser-detect": "^0.2.28", "chart.js": "^3.9.1", "currency-symbol-map": "^5.1.0", + "feather-icons": "^4.29.1", "firebase": "^10.3.1", "floating-vue": "^2.0.0-beta.24", "flowbite": "^1.8.1", @@ -74,6 +75,7 @@ "vue-chart-3": "^3.1.8", "vue-collapsed": "^1.2.7", "vue-datepicker-ui": "^3.1.1", + "vue-feather": "^2.0.0", "vue-router": "^4.2.4", "vue-simple-password-meter": "^1.3.4", "vue-toastification": "^2.0.0-rc.5", @@ -9247,6 +9249,11 @@ "node": ">=8" } }, + "node_modules/classnames": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -11777,6 +11784,15 @@ "pend": "~1.2.0" } }, + "node_modules/feather-icons": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/feather-icons/-/feather-icons-4.29.1.tgz", + "integrity": "sha512-P1we61haGTds6lKWe6CCVPsNULb8tHr1y6S9gXEpU+lNR1Ja7GdV0A1l2hTNmzXv+0Stix/3YMWMAn7n1Qtd6A==", + "dependencies": { + "classnames": "^2.2.5", + "core-js": "^3.1.3" + } + }, "node_modules/fflate": { "version": "0.4.8", "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz", @@ -19798,6 +19814,15 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/vue-feather": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vue-feather/-/vue-feather-2.0.0.tgz", + "integrity": "sha512-GBvxJWu2ycGTpB8duYWnc5S/TwWPPb2G5Ft2NbkwK1vZkUDUOTYqIb4Nh1HOL6A37Isfrd0Guun0lesS97PfxA==", + "peerDependencies": { + "feather-icons": "^4.28.0", + "vue": "^3.0.0" + } + }, "node_modules/vue-resize": { "version": "2.0.0-alpha.1", "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-2.0.0-alpha.1.tgz", diff --git a/frontend/package.json b/frontend/package.json index 1c7c7238b..b8e45933f 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -55,6 +55,7 @@ "browser-detect": "^0.2.28", "chart.js": "^3.9.1", "currency-symbol-map": "^5.1.0", + "feather-icons": "^4.29.1", "firebase": "^10.3.1", "floating-vue": "^2.0.0-beta.24", "flowbite": "^1.8.1", @@ -83,6 +84,7 @@ "vue-chart-3": "^3.1.8", "vue-collapsed": "^1.2.7", "vue-datepicker-ui": "^3.1.1", + "vue-feather": "^2.0.0", "vue-router": "^4.2.4", "vue-simple-password-meter": "^1.3.4", "vue-toastification": "^2.0.0-rc.5", diff --git a/frontend/src/api/authentication.ts b/frontend/src/api/authentication.ts index 70da8192b..1deda4ae8 100644 --- a/frontend/src/api/authentication.ts +++ b/frontend/src/api/authentication.ts @@ -62,7 +62,7 @@ class Auth { this.router.push("/admin"); // Show a welcome message to the display_name else username - this.infoToast(`Welcome ${user.display_name || user.username}`); + this.infoToast(`Welcome ${user.display_name ?? user.username}`); // Set the user data userStore.setUser(user); diff --git a/frontend/src/language/cs/app.po b/frontend/src/language/cs/app.po index 0f52a1d01..4736bb4e9 100644 --- a/frontend/src/language/cs/app.po +++ b/frontend/src/language/cs/app.po @@ -26,6 +26,10 @@ msgstr "" msgid "Account" msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "Account Error" +msgstr "" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "" @@ -74,7 +78,7 @@ msgstr "" msgid "Advanced settings for the server" msgstr "" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "" @@ -91,6 +95,12 @@ msgid "" "creation date will also be displayed here." msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "" @@ -202,8 +212,8 @@ msgstr "" msgid "Continue" msgstr "" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" +#: src/modules/join/pages/Error.vue:8 +msgid "Continue to Login" msgstr "" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 @@ -220,12 +230,12 @@ msgstr "" msgid "Copy" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "" -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "" @@ -498,6 +508,7 @@ msgid "" "phone, tablet, laptop, smart TV, you name it." msgstr "" +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "" @@ -514,6 +525,10 @@ msgstr "" msgid "Join my media server" msgstr "" +#: src/modules/help/components/Discord.vue:28 +msgid "Join our Discord" +msgstr "" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "" @@ -560,6 +575,10 @@ msgstr "" msgid "Logs" msgstr "" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "" @@ -604,6 +623,10 @@ msgstr "" msgid "Media Server" msgstr "" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "" @@ -640,7 +663,7 @@ msgstr "" msgid "No API Keys found" msgstr "" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "" @@ -682,6 +705,11 @@ msgstr "" msgid "Notifications" msgstr "" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "" @@ -735,7 +763,7 @@ msgstr "" msgid "Please enter an invite code" msgstr "" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "" @@ -754,10 +782,14 @@ msgid "Please wait" msgstr "" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "" @@ -770,6 +802,10 @@ msgstr "" msgid "Read More" msgstr "" +#: src/widgets/default/ContributorsList.vue:9 +msgid "Recent Contributors" +msgstr "" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "" @@ -842,6 +878,10 @@ msgstr "" msgid "Scan Users" msgstr "" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "" @@ -895,7 +935,7 @@ msgstr "" msgid "Setup Wizarr" msgstr "" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "" @@ -925,7 +965,7 @@ msgid "" "know how to use it with Plex." msgstr "" -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "" @@ -950,8 +990,8 @@ msgstr "" msgid "Summoning the spirits" msgstr "" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +msgid "Support Us" msgstr "" #: src/components/Modals/LanguageModal.vue:11 @@ -1020,10 +1060,10 @@ msgstr "" msgid "Type in your invite code to %{server_name} server!" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "" @@ -1138,6 +1178,10 @@ msgstr "" msgid "Webhooks" msgstr "" +#: src/modules/home/views/Home.vue:9 +msgid "Welcome to" +msgstr "" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "" @@ -1160,6 +1204,12 @@ msgid "" "their access" msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " diff --git a/frontend/src/language/da/app.po b/frontend/src/language/da/app.po index af01ae422..bb2291b22 100644 --- a/frontend/src/language/da/app.po +++ b/frontend/src/language/da/app.po @@ -26,6 +26,10 @@ msgstr "" msgid "Account" msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "Account Error" +msgstr "" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "" @@ -74,7 +78,7 @@ msgstr "" msgid "Advanced settings for the server" msgstr "" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "" @@ -91,6 +95,12 @@ msgid "" "creation date will also be displayed here." msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "" @@ -202,8 +212,8 @@ msgstr "" msgid "Continue" msgstr "" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" +#: src/modules/join/pages/Error.vue:8 +msgid "Continue to Login" msgstr "" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 @@ -220,12 +230,12 @@ msgstr "" msgid "Copy" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "" -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "" @@ -498,6 +508,7 @@ msgid "" "phone, tablet, laptop, smart TV, you name it." msgstr "" +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "" @@ -514,6 +525,10 @@ msgstr "" msgid "Join my media server" msgstr "" +#: src/modules/help/components/Discord.vue:28 +msgid "Join our Discord" +msgstr "" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "" @@ -560,6 +575,10 @@ msgstr "" msgid "Logs" msgstr "" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "" @@ -604,6 +623,10 @@ msgstr "" msgid "Media Server" msgstr "" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "" @@ -640,7 +663,7 @@ msgstr "" msgid "No API Keys found" msgstr "" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "" @@ -682,6 +705,11 @@ msgstr "" msgid "Notifications" msgstr "" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "" @@ -735,7 +763,7 @@ msgstr "" msgid "Please enter an invite code" msgstr "" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "" @@ -754,10 +782,14 @@ msgid "Please wait" msgstr "" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "" @@ -770,6 +802,10 @@ msgstr "" msgid "Read More" msgstr "" +#: src/widgets/default/ContributorsList.vue:9 +msgid "Recent Contributors" +msgstr "" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "" @@ -842,6 +878,10 @@ msgstr "" msgid "Scan Users" msgstr "" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "" @@ -895,7 +935,7 @@ msgstr "" msgid "Setup Wizarr" msgstr "" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "" @@ -925,7 +965,7 @@ msgid "" "know how to use it with Plex." msgstr "" -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "" @@ -950,8 +990,8 @@ msgstr "" msgid "Summoning the spirits" msgstr "" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +msgid "Support Us" msgstr "" #: src/components/Modals/LanguageModal.vue:11 @@ -1020,10 +1060,10 @@ msgstr "" msgid "Type in your invite code to %{server_name} server!" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "" @@ -1138,6 +1178,10 @@ msgstr "" msgid "Webhooks" msgstr "" +#: src/modules/home/views/Home.vue:9 +msgid "Welcome to" +msgstr "" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "" @@ -1160,6 +1204,12 @@ msgid "" "their access" msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " diff --git a/frontend/src/language/de/app.po b/frontend/src/language/de/app.po index 110896e94..892f989dc 100644 --- a/frontend/src/language/de/app.po +++ b/frontend/src/language/de/app.po @@ -28,6 +28,11 @@ msgstr "Über" msgid "Account" msgstr "Konto" +#: src/modules/join/pages/Error.vue:31 +#, fuzzy +msgid "Account Error" +msgstr "Konto" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "Kontoeinstellungen" @@ -76,7 +81,7 @@ msgstr "Erweiterte Einstellungen" msgid "Advanced settings for the server" msgstr "Erweiterte Einstellungen für den Server" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "Alles erledigt!" @@ -98,6 +103,12 @@ msgstr "" "kannst sie verwalten, bearbeiten und löschen. Weitere Informationen wie ihr " "Ablaufdatum oder das Erstellungsdatum werden ebenfalls hier angezeigt." +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "API Schlüssel" @@ -211,9 +222,10 @@ msgstr "Passkeys konfigurieren" msgid "Continue" msgstr "Weiter" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" -msgstr "Unterstützer" +#: src/modules/join/pages/Error.vue:8 +#, fuzzy +msgid "Continue to Login" +msgstr "Zum Login" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 #: src/modules/admin/components/Invitations/InvitationList/InvitationItem.vue:96 @@ -229,12 +241,12 @@ msgstr "In die Zwischenablage kopiert" msgid "Copy" msgstr "Kopieren" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "Konnte keine Verbindung zum Server herstellen." -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "Konto konnte nicht erstellt werden." @@ -524,6 +536,7 @@ msgstr "" "jedem Gerät zugreifen können – Ihrem Telefon, Tablet, Laptop, Smart-TV, was " "auch immer." +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "Beitreten" @@ -540,6 +553,11 @@ msgstr "Beitreten und Plex für dieses Gerät herunterladen" msgid "Join my media server" msgstr "Trete meinem Medienserver bei" +#: src/modules/help/components/Discord.vue:28 +#, fuzzy +msgid "Join our Discord" +msgstr "Discord" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "Nachname" @@ -588,6 +606,10 @@ msgstr "Mit deinem Konto anmelden" msgid "Logs" msgstr "Logs" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "Einstellungen" @@ -632,6 +654,10 @@ msgstr "marvin@wizarr.dev" msgid "Media Server" msgstr "Medien Server" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "Mixen der Zaubertränke" @@ -668,7 +694,7 @@ msgstr "Nächste Seite" msgid "No API Keys found" msgstr "Keine API-Schlüssel gefunden" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "Keine Unterstützer gefunden" @@ -710,6 +736,11 @@ msgstr "Kein Webhook gefunden" msgid "Notifications" msgstr "Benachrichtigungen" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "Öffnen Sie Jellyfin" @@ -770,7 +801,7 @@ msgstr "Bitte gib die URL vom Media Server ein." msgid "Please enter an invite code" msgstr "Bitte geben Sie einen Einladungscode ein" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "Bitte geben Sie Ihren Einladungscode ein" @@ -793,10 +824,14 @@ msgid "Please wait" msgstr "Bitte warten" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "Bitte warten..." +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "Die Zaubersprüche vorbereiten" @@ -811,6 +846,11 @@ msgstr "" msgid "Read More" msgstr "Mehr laden" +#: src/widgets/default/ContributorsList.vue:9 +#, fuzzy +msgid "Recent Contributors" +msgstr "Unterstützer" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "Zugang beantragen" @@ -889,6 +929,10 @@ msgstr "Server scannen" msgid "Scan Users" msgstr "Benutzer scannen" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "Sucheinstellungen" @@ -942,7 +986,7 @@ msgstr "Einstellungen für Benutzerkonten" msgid "Setup Wizarr" msgstr "Wizarr Einrichten" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "Einrichten Ihres Kontos" @@ -976,7 +1020,7 @@ msgstr "" "Sie haben nun Zugriff auf die Mediensammlung unseres Servers. Stellen wir " "sicher, dass Sie wissen, wie Sie diese mit Plex nutzen können." -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "" @@ -1005,8 +1049,9 @@ msgstr "Noch in Entwicklung" msgid "Summoning the spirits" msgstr "Die Geister herbeirufen" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +#, fuzzy +msgid "Support Us" msgstr "Unterstütze uns" #: src/components/Modals/LanguageModal.vue:11 @@ -1089,10 +1134,10 @@ msgstr "Nochmal versuchen" msgid "Type in your invite code to %{server_name} server!" msgstr "Geben Sie Ihren Einladungscode für %{name}s Server ein!" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "Uh oh!" @@ -1213,6 +1258,11 @@ msgstr "Löschung des Webhooks abgebrochen" msgid "Webhooks" msgstr "Webhooks" +#: src/modules/home/views/Home.vue:9 +#, fuzzy +msgid "Welcome to" +msgstr "Willkommen bei Wizarr" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "Willkommen bei Wizarr" @@ -1241,6 +1291,12 @@ msgstr "" "Mit Wizarr können Server-Administratoren ganz einfach neue Benutzer einladen " "und deren Zugang verwalten" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " diff --git a/frontend/src/language/en/app.po b/frontend/src/language/en/app.po index 20feb1c25..de77c356f 100644 --- a/frontend/src/language/en/app.po +++ b/frontend/src/language/en/app.po @@ -26,6 +26,10 @@ msgstr "" msgid "Account" msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "Account Error" +msgstr "" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "" @@ -74,7 +78,7 @@ msgstr "" msgid "Advanced settings for the server" msgstr "" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "" @@ -91,6 +95,12 @@ msgid "" "creation date will also be displayed here." msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "" @@ -202,8 +212,8 @@ msgstr "" msgid "Continue" msgstr "" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" +#: src/modules/join/pages/Error.vue:8 +msgid "Continue to Login" msgstr "" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 @@ -220,12 +230,12 @@ msgstr "" msgid "Copy" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "" -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "" @@ -498,6 +508,7 @@ msgid "" "phone, tablet, laptop, smart TV, you name it." msgstr "" +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "" @@ -514,6 +525,10 @@ msgstr "" msgid "Join my media server" msgstr "" +#: src/modules/help/components/Discord.vue:28 +msgid "Join our Discord" +msgstr "" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "" @@ -560,6 +575,10 @@ msgstr "" msgid "Logs" msgstr "" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "" @@ -604,6 +623,10 @@ msgstr "" msgid "Media Server" msgstr "" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "" @@ -640,7 +663,7 @@ msgstr "" msgid "No API Keys found" msgstr "" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "" @@ -682,6 +705,11 @@ msgstr "" msgid "Notifications" msgstr "" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "" @@ -735,7 +763,7 @@ msgstr "" msgid "Please enter an invite code" msgstr "" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "" @@ -754,10 +782,14 @@ msgid "Please wait" msgstr "" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "" @@ -770,6 +802,10 @@ msgstr "" msgid "Read More" msgstr "" +#: src/widgets/default/ContributorsList.vue:9 +msgid "Recent Contributors" +msgstr "" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "" @@ -842,6 +878,10 @@ msgstr "" msgid "Scan Users" msgstr "" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "" @@ -895,7 +935,7 @@ msgstr "" msgid "Setup Wizarr" msgstr "" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "" @@ -925,7 +965,7 @@ msgid "" "know how to use it with Plex." msgstr "" -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "" @@ -950,8 +990,8 @@ msgstr "" msgid "Summoning the spirits" msgstr "" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +msgid "Support Us" msgstr "" #: src/components/Modals/LanguageModal.vue:11 @@ -1020,10 +1060,10 @@ msgstr "" msgid "Type in your invite code to %{server_name} server!" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "" @@ -1138,6 +1178,10 @@ msgstr "" msgid "Webhooks" msgstr "" +#: src/modules/home/views/Home.vue:9 +msgid "Welcome to" +msgstr "" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "" @@ -1160,6 +1204,12 @@ msgid "" "their access" msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " diff --git a/frontend/src/language/es/app.po b/frontend/src/language/es/app.po index d0ea9b4d5..bdae1ffb2 100644 --- a/frontend/src/language/es/app.po +++ b/frontend/src/language/es/app.po @@ -28,6 +28,11 @@ msgstr "Acerca de" msgid "Account" msgstr "Cuenta" +#: src/modules/join/pages/Error.vue:31 +#, fuzzy +msgid "Account Error" +msgstr "Cuenta" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "Opciones de cuenta" @@ -76,7 +81,7 @@ msgstr "Configuraciones avanzadas" msgid "Advanced settings for the server" msgstr "Configuraciones avanzadas para el servidor" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "Listo!" @@ -98,6 +103,12 @@ msgstr "" "Puede administrarlos, editarlos y eliminarlos. Aquí también se mostrará otra " "información como su fecha de vencimiento o creación." +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "Clave API" @@ -211,9 +222,10 @@ msgstr "Configurar claves de acceso" msgid "Continue" msgstr "Continuar" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" -msgstr "Contribuidores" +#: src/modules/join/pages/Error.vue:8 +#, fuzzy +msgid "Continue to Login" +msgstr "Ir a Login" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 #: src/modules/admin/components/Invitations/InvitationList/InvitationItem.vue:96 @@ -229,12 +241,12 @@ msgstr "Copiado al portapapeles" msgid "Copy" msgstr "Copiar" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "No se puede conectar con el servidor." -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "No se pudo crear la cuenta." @@ -522,6 +534,7 @@ msgstr "" "cualquier lugar y en cualquier dispositivo: teléfono, tableta, computadora " "portátil, televisor inteligente, lo que sea." +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "Unirse" @@ -538,6 +551,11 @@ msgstr "Unirse y descargar Plex para este dispositivo" msgid "Join my media server" msgstr "Unirse a mi servidor" +#: src/modules/help/components/Discord.vue:28 +#, fuzzy +msgid "Join our Discord" +msgstr "Discord" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "Apellido" @@ -586,6 +604,10 @@ msgstr "Inicia sesión con tu cuenta" msgid "Logs" msgstr "Registros" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "Ajustes principales" @@ -630,6 +652,10 @@ msgstr "usuario@wizarr.dev" msgid "Media Server" msgstr "Servidor de Medios" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "Mezclando las pociones" @@ -666,7 +692,7 @@ msgstr "Siguiente página" msgid "No API Keys found" msgstr "No se encontraron claves API" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "No se encontraron contribuidores" @@ -708,6 +734,11 @@ msgstr "No se encontraron webhooks" msgid "Notifications" msgstr "Notificaciones" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "Abrir Jellyfin" @@ -768,7 +799,7 @@ msgstr "Introduzca la URL del servidor." msgid "Please enter an invite code" msgstr "Por favor ingresa un código de invitación" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "Por favor ingresa tu código de invitación" @@ -791,10 +822,14 @@ msgid "Please wait" msgstr "Espera por favor" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "Espera por favor..." +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "Preparando los hechizos" @@ -807,6 +842,11 @@ msgstr "Presiona el botón y sigue los pasos del navegador para iniciar sesión" msgid "Read More" msgstr "Leer más" +#: src/widgets/default/ContributorsList.vue:9 +#, fuzzy +msgid "Recent Contributors" +msgstr "Contribuidores" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "Solicitar acceso" @@ -885,6 +925,10 @@ msgstr "Escanear servidores" msgid "Scan Users" msgstr "Escanear Usuarios" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "Buscar en ajustes" @@ -938,7 +982,7 @@ msgstr "Ajustes de cuentas de usuario" msgid "Setup Wizarr" msgstr "Configura Wizarr" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "Configura tu cuenta" @@ -972,7 +1016,7 @@ msgstr "" "Ahora tienes acceso a la colección de medios de nuestro servidor. " "Asegurémonos de que sabes cómo usarlo con Plex." -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "" @@ -999,8 +1043,9 @@ msgstr "Aún en desarrollo" msgid "Summoning the spirits" msgstr "Convocando a los espíritus" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +#, fuzzy +msgid "Support Us" msgstr "Apoyanos" #: src/components/Modals/LanguageModal.vue:11 @@ -1083,10 +1128,10 @@ msgstr "Intenta de nuevo" msgid "Type in your invite code to %{server_name} server!" msgstr "Ingresa tu código para el servidor %{server_name}!" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "Oh no!" @@ -1206,6 +1251,11 @@ msgstr "Eliminación de webhook cancelada" msgid "Webhooks" msgstr "Webhooks" +#: src/modules/home/views/Home.vue:9 +#, fuzzy +msgid "Welcome to" +msgstr "Bienvenido a Wizarr" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "Bienvenido a Wizarr" @@ -1234,6 +1284,12 @@ msgstr "" "Jellyfin, Emby y Plex. Con Wizarr, los administradores de servidores pueden " "invitar fácilmente a nuevos usuarios y manejar su acceso" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " diff --git a/frontend/src/language/fa/app.po b/frontend/src/language/fa/app.po index 07a310001..30b3d4fd9 100644 --- a/frontend/src/language/fa/app.po +++ b/frontend/src/language/fa/app.po @@ -26,6 +26,10 @@ msgstr "" msgid "Account" msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "Account Error" +msgstr "" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "" @@ -74,7 +78,7 @@ msgstr "" msgid "Advanced settings for the server" msgstr "" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "" @@ -91,6 +95,12 @@ msgid "" "creation date will also be displayed here." msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "" @@ -202,8 +212,8 @@ msgstr "" msgid "Continue" msgstr "" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" +#: src/modules/join/pages/Error.vue:8 +msgid "Continue to Login" msgstr "" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 @@ -220,12 +230,12 @@ msgstr "" msgid "Copy" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "" -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "" @@ -498,6 +508,7 @@ msgid "" "phone, tablet, laptop, smart TV, you name it." msgstr "" +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "" @@ -514,6 +525,10 @@ msgstr "" msgid "Join my media server" msgstr "" +#: src/modules/help/components/Discord.vue:28 +msgid "Join our Discord" +msgstr "" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "" @@ -560,6 +575,10 @@ msgstr "" msgid "Logs" msgstr "" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "" @@ -604,6 +623,10 @@ msgstr "" msgid "Media Server" msgstr "" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "" @@ -640,7 +663,7 @@ msgstr "" msgid "No API Keys found" msgstr "" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "" @@ -682,6 +705,11 @@ msgstr "" msgid "Notifications" msgstr "" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "" @@ -735,7 +763,7 @@ msgstr "" msgid "Please enter an invite code" msgstr "" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "" @@ -754,10 +782,14 @@ msgid "Please wait" msgstr "" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "" @@ -770,6 +802,10 @@ msgstr "" msgid "Read More" msgstr "" +#: src/widgets/default/ContributorsList.vue:9 +msgid "Recent Contributors" +msgstr "" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "" @@ -842,6 +878,10 @@ msgstr "" msgid "Scan Users" msgstr "" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "" @@ -895,7 +935,7 @@ msgstr "" msgid "Setup Wizarr" msgstr "" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "" @@ -925,7 +965,7 @@ msgid "" "know how to use it with Plex." msgstr "" -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "" @@ -950,8 +990,8 @@ msgstr "" msgid "Summoning the spirits" msgstr "" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +msgid "Support Us" msgstr "" #: src/components/Modals/LanguageModal.vue:11 @@ -1020,10 +1060,10 @@ msgstr "" msgid "Type in your invite code to %{server_name} server!" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "" @@ -1138,6 +1178,10 @@ msgstr "" msgid "Webhooks" msgstr "" +#: src/modules/home/views/Home.vue:9 +msgid "Welcome to" +msgstr "" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "" @@ -1160,6 +1204,12 @@ msgid "" "their access" msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " diff --git a/frontend/src/language/fr/app.po b/frontend/src/language/fr/app.po index 9ca747799..2e9551f44 100644 --- a/frontend/src/language/fr/app.po +++ b/frontend/src/language/fr/app.po @@ -28,6 +28,11 @@ msgstr "À propos" msgid "Account" msgstr "Compte" +#: src/modules/join/pages/Error.vue:31 +#, fuzzy +msgid "Account Error" +msgstr "Compte" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "Paramètres du compte" @@ -76,7 +81,7 @@ msgstr "Paramètres avancés" msgid "Advanced settings for the server" msgstr "Paramètres du serveur avancés" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "Tout est bon !" @@ -98,6 +103,12 @@ msgstr "" "pouvez les gérer, les éditer et les supprimer. D'autres informations comme " "leur expiration ou leur date de création y seront également affichées." +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "Clé API" @@ -211,9 +222,10 @@ msgstr "Configurer vos phrases de passe" msgid "Continue" msgstr "Continuer" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" -msgstr "Contributeurs" +#: src/modules/join/pages/Error.vue:8 +#, fuzzy +msgid "Continue to Login" +msgstr "Se rendre à la page de connexion" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 #: src/modules/admin/components/Invitations/InvitationList/InvitationItem.vue:96 @@ -229,12 +241,12 @@ msgstr "Copié dans le presse-papiers" msgid "Copy" msgstr "Copier" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "Connexion au serveur échouée." -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "Création du compte échouée." @@ -329,8 +341,8 @@ msgstr "Bot Discord" #: src/modules/admin/components/Users/UserList/UserItem.vue:136 msgid "Do you really want to delete this user from your media server?" msgstr "" -"Confirmez-vous la suppression de cet utilisateur de votre serveur multimédia " -"?" +"Confirmez-vous la suppression de cet utilisateur de votre serveur " +"multimédia ?" #: src/modules/settings/components/ScanServers/ScanServers.vue:26 msgid "Don't see your server?" @@ -524,6 +536,7 @@ msgstr "" "accessible n'importe où, sur n'importe quel appareil, smartphone, tablette, " "ordinateur ou smart TV." +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "Rejoindre" @@ -540,6 +553,11 @@ msgstr "Rejoindre et télécharger Plex pour cet appareil" msgid "Join my media server" msgstr "Rejoindre mon serveur multimédia" +#: src/modules/help/components/Discord.vue:28 +#, fuzzy +msgid "Join our Discord" +msgstr "Discord" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "Nom de famille" @@ -588,6 +606,10 @@ msgstr "Se connecter avec son compte" msgid "Logs" msgstr "Journaux" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "Paramètres généraux" @@ -632,6 +654,10 @@ msgstr "jean@exemple.com" msgid "Media Server" msgstr "Serveur multimédia" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "Mélange des potions" @@ -668,7 +694,7 @@ msgstr "Page suivante" msgid "No API Keys found" msgstr "Aucune clé API trouvée" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "Aucun contributeur trouvé" @@ -710,6 +736,11 @@ msgstr "Aucun webhook trouvé" msgid "Notifications" msgstr "Notifications" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "Ouvrir Jellyfin" @@ -770,7 +801,7 @@ msgstr "Veuillez renseigner une URL de serveur." msgid "Please enter an invite code" msgstr "Veuillez renseigner un code d'invitation" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "Veuillez renseigner votre code d'invitation" @@ -793,10 +824,14 @@ msgid "Please wait" msgstr "Veuillez patienter" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "Veuillez patienter..." +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "Préparation des sorts" @@ -811,6 +846,11 @@ msgstr "" msgid "Read More" msgstr "En savoir plus" +#: src/widgets/default/ContributorsList.vue:9 +#, fuzzy +msgid "Recent Contributors" +msgstr "Contributeurs" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "Demander un accès" @@ -889,6 +929,10 @@ msgstr "Rechercher un serveur" msgid "Scan Users" msgstr "Rechercher des utilisateurs" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "Paramètres de recherche" @@ -942,7 +986,7 @@ msgstr "Paramètres des comptes utilisateurs" msgid "Setup Wizarr" msgstr "Configurer Wizarr" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "Configurer votre compte" @@ -976,7 +1020,7 @@ msgstr "" "Vous avez à présent accès à notre serveur multimédia. Assurons-nous que vous " "sachez l'utiliser avec Plex." -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "" @@ -1003,8 +1047,9 @@ msgstr "En cours de développement" msgid "Summoning the spirits" msgstr "Invocation des esprits" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +#, fuzzy +msgid "Support Us" msgstr "Nous supporter" #: src/components/Modals/LanguageModal.vue:11 @@ -1085,12 +1130,13 @@ msgstr "Veuillez réessayer" #: src/modules/join/views/Join.vue:5 msgid "Type in your invite code to %{server_name} server!" -msgstr "Veuillez renseigner votre code d'invitation au serveur %{server_name} !" +msgstr "" +"Veuillez renseigner votre code d'invitation au serveur %{server_name} !" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "Oh oh !" @@ -1211,6 +1257,11 @@ msgstr "Suppression du webhook annulée" msgid "Webhooks" msgstr "Webhooks" +#: src/modules/home/views/Home.vue:9 +#, fuzzy +msgid "Welcome to" +msgstr "Bienvenue dans Wizarr" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "Bienvenue dans Wizarr" @@ -1239,6 +1290,12 @@ msgstr "" "et Plex. Avec Wizarr, les administrateurs de serveurs peuvent facilement " "inviter de nouveaux utilisateurs et gérer leurs accès" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " @@ -1281,7 +1338,8 @@ msgstr "" #: src/modules/admin/components/Invitations/InvitationList/InvitationItem.vue:98 #: src/modules/admin/components/Invitations/ShareSheet.vue:72 msgid "Your browser does not support copying to clipboard" -msgstr "Votre navigateur ne prend pas en charge la copie dans le presse-papiers" +msgstr "" +"Votre navigateur ne prend pas en charge la copie dans le presse-papiers" #: src/modules/setup/pages/Complete.vue:4 msgid "Your Done" diff --git a/frontend/src/language/he/app.po b/frontend/src/language/he/app.po index a0270b619..d44a7d8a6 100644 --- a/frontend/src/language/he/app.po +++ b/frontend/src/language/he/app.po @@ -26,6 +26,10 @@ msgstr "" msgid "Account" msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "Account Error" +msgstr "" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "" @@ -74,7 +78,7 @@ msgstr "" msgid "Advanced settings for the server" msgstr "" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "" @@ -91,6 +95,12 @@ msgid "" "creation date will also be displayed here." msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "" @@ -202,8 +212,8 @@ msgstr "" msgid "Continue" msgstr "" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" +#: src/modules/join/pages/Error.vue:8 +msgid "Continue to Login" msgstr "" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 @@ -220,12 +230,12 @@ msgstr "" msgid "Copy" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "" -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "" @@ -498,6 +508,7 @@ msgid "" "phone, tablet, laptop, smart TV, you name it." msgstr "" +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "" @@ -514,6 +525,10 @@ msgstr "" msgid "Join my media server" msgstr "" +#: src/modules/help/components/Discord.vue:28 +msgid "Join our Discord" +msgstr "" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "" @@ -560,6 +575,10 @@ msgstr "" msgid "Logs" msgstr "" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "" @@ -604,6 +623,10 @@ msgstr "" msgid "Media Server" msgstr "" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "" @@ -640,7 +663,7 @@ msgstr "" msgid "No API Keys found" msgstr "" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "" @@ -682,6 +705,11 @@ msgstr "" msgid "Notifications" msgstr "" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "" @@ -735,7 +763,7 @@ msgstr "" msgid "Please enter an invite code" msgstr "" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "" @@ -754,10 +782,14 @@ msgid "Please wait" msgstr "" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "" @@ -770,6 +802,10 @@ msgstr "" msgid "Read More" msgstr "" +#: src/widgets/default/ContributorsList.vue:9 +msgid "Recent Contributors" +msgstr "" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "" @@ -842,6 +878,10 @@ msgstr "" msgid "Scan Users" msgstr "" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "" @@ -895,7 +935,7 @@ msgstr "" msgid "Setup Wizarr" msgstr "" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "" @@ -925,7 +965,7 @@ msgid "" "know how to use it with Plex." msgstr "" -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "" @@ -950,8 +990,8 @@ msgstr "" msgid "Summoning the spirits" msgstr "" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +msgid "Support Us" msgstr "" #: src/components/Modals/LanguageModal.vue:11 @@ -1020,10 +1060,10 @@ msgstr "" msgid "Type in your invite code to %{server_name} server!" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "" @@ -1138,6 +1178,10 @@ msgstr "" msgid "Webhooks" msgstr "" +#: src/modules/home/views/Home.vue:9 +msgid "Welcome to" +msgstr "" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "" @@ -1160,6 +1204,12 @@ msgid "" "their access" msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " diff --git a/frontend/src/language/hr/app.po b/frontend/src/language/hr/app.po index 555063781..27dc7b49b 100644 --- a/frontend/src/language/hr/app.po +++ b/frontend/src/language/hr/app.po @@ -27,6 +27,10 @@ msgstr "" msgid "Account" msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "Account Error" +msgstr "" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "" @@ -75,7 +79,7 @@ msgstr "" msgid "Advanced settings for the server" msgstr "" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "" @@ -92,6 +96,12 @@ msgid "" "creation date will also be displayed here." msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "" @@ -203,8 +213,8 @@ msgstr "" msgid "Continue" msgstr "" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" +#: src/modules/join/pages/Error.vue:8 +msgid "Continue to Login" msgstr "" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 @@ -221,12 +231,12 @@ msgstr "" msgid "Copy" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "" -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "" @@ -499,6 +509,7 @@ msgid "" "phone, tablet, laptop, smart TV, you name it." msgstr "" +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "" @@ -515,6 +526,10 @@ msgstr "" msgid "Join my media server" msgstr "" +#: src/modules/help/components/Discord.vue:28 +msgid "Join our Discord" +msgstr "" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "" @@ -561,6 +576,10 @@ msgstr "" msgid "Logs" msgstr "" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "" @@ -605,6 +624,10 @@ msgstr "" msgid "Media Server" msgstr "" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "" @@ -641,7 +664,7 @@ msgstr "" msgid "No API Keys found" msgstr "" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "" @@ -683,6 +706,11 @@ msgstr "" msgid "Notifications" msgstr "" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "" @@ -736,7 +764,7 @@ msgstr "" msgid "Please enter an invite code" msgstr "" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "" @@ -755,10 +783,14 @@ msgid "Please wait" msgstr "" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "" @@ -771,6 +803,10 @@ msgstr "" msgid "Read More" msgstr "" +#: src/widgets/default/ContributorsList.vue:9 +msgid "Recent Contributors" +msgstr "" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "" @@ -843,6 +879,10 @@ msgstr "" msgid "Scan Users" msgstr "" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "" @@ -896,7 +936,7 @@ msgstr "" msgid "Setup Wizarr" msgstr "" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "" @@ -926,7 +966,7 @@ msgid "" "know how to use it with Plex." msgstr "" -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "" @@ -951,8 +991,8 @@ msgstr "" msgid "Summoning the spirits" msgstr "" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +msgid "Support Us" msgstr "" #: src/components/Modals/LanguageModal.vue:11 @@ -1021,10 +1061,10 @@ msgstr "" msgid "Type in your invite code to %{server_name} server!" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "" @@ -1139,6 +1179,10 @@ msgstr "" msgid "Webhooks" msgstr "" +#: src/modules/home/views/Home.vue:9 +msgid "Welcome to" +msgstr "" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "" @@ -1161,6 +1205,12 @@ msgid "" "their access" msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " diff --git a/frontend/src/language/hu/app.po b/frontend/src/language/hu/app.po index e1baaaad7..88de67272 100644 --- a/frontend/src/language/hu/app.po +++ b/frontend/src/language/hu/app.po @@ -26,6 +26,10 @@ msgstr "" msgid "Account" msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "Account Error" +msgstr "" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "" @@ -74,7 +78,7 @@ msgstr "" msgid "Advanced settings for the server" msgstr "" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "" @@ -91,6 +95,12 @@ msgid "" "creation date will also be displayed here." msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "" @@ -202,8 +212,8 @@ msgstr "" msgid "Continue" msgstr "" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" +#: src/modules/join/pages/Error.vue:8 +msgid "Continue to Login" msgstr "" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 @@ -220,12 +230,12 @@ msgstr "" msgid "Copy" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "" -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "" @@ -498,6 +508,7 @@ msgid "" "phone, tablet, laptop, smart TV, you name it." msgstr "" +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "" @@ -514,6 +525,10 @@ msgstr "" msgid "Join my media server" msgstr "" +#: src/modules/help/components/Discord.vue:28 +msgid "Join our Discord" +msgstr "" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "" @@ -560,6 +575,10 @@ msgstr "" msgid "Logs" msgstr "" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "" @@ -604,6 +623,10 @@ msgstr "" msgid "Media Server" msgstr "" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "" @@ -640,7 +663,7 @@ msgstr "" msgid "No API Keys found" msgstr "" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "" @@ -682,6 +705,11 @@ msgstr "" msgid "Notifications" msgstr "" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "" @@ -735,7 +763,7 @@ msgstr "" msgid "Please enter an invite code" msgstr "" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "" @@ -754,10 +782,14 @@ msgid "Please wait" msgstr "" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "" @@ -770,6 +802,10 @@ msgstr "" msgid "Read More" msgstr "" +#: src/widgets/default/ContributorsList.vue:9 +msgid "Recent Contributors" +msgstr "" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "" @@ -842,6 +878,10 @@ msgstr "" msgid "Scan Users" msgstr "" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "" @@ -895,7 +935,7 @@ msgstr "" msgid "Setup Wizarr" msgstr "" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "" @@ -925,7 +965,7 @@ msgid "" "know how to use it with Plex." msgstr "" -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "" @@ -950,8 +990,8 @@ msgstr "" msgid "Summoning the spirits" msgstr "" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +msgid "Support Us" msgstr "" #: src/components/Modals/LanguageModal.vue:11 @@ -1020,10 +1060,10 @@ msgstr "" msgid "Type in your invite code to %{server_name} server!" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "" @@ -1138,6 +1178,10 @@ msgstr "" msgid "Webhooks" msgstr "" +#: src/modules/home/views/Home.vue:9 +msgid "Welcome to" +msgstr "" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "" @@ -1160,6 +1204,12 @@ msgid "" "their access" msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " diff --git a/frontend/src/language/is/app.po b/frontend/src/language/is/app.po index d621934e6..6eeee9b61 100644 --- a/frontend/src/language/is/app.po +++ b/frontend/src/language/is/app.po @@ -26,6 +26,10 @@ msgstr "" msgid "Account" msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "Account Error" +msgstr "" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "" @@ -74,7 +78,7 @@ msgstr "" msgid "Advanced settings for the server" msgstr "" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "" @@ -91,6 +95,12 @@ msgid "" "creation date will also be displayed here." msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "" @@ -202,8 +212,8 @@ msgstr "" msgid "Continue" msgstr "" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" +#: src/modules/join/pages/Error.vue:8 +msgid "Continue to Login" msgstr "" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 @@ -220,12 +230,12 @@ msgstr "" msgid "Copy" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "" -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "" @@ -498,6 +508,7 @@ msgid "" "phone, tablet, laptop, smart TV, you name it." msgstr "" +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "" @@ -514,6 +525,10 @@ msgstr "" msgid "Join my media server" msgstr "" +#: src/modules/help/components/Discord.vue:28 +msgid "Join our Discord" +msgstr "" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "" @@ -560,6 +575,10 @@ msgstr "" msgid "Logs" msgstr "" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "" @@ -604,6 +623,10 @@ msgstr "" msgid "Media Server" msgstr "" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "" @@ -640,7 +663,7 @@ msgstr "" msgid "No API Keys found" msgstr "" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "" @@ -682,6 +705,11 @@ msgstr "" msgid "Notifications" msgstr "" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "" @@ -735,7 +763,7 @@ msgstr "" msgid "Please enter an invite code" msgstr "" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "" @@ -754,10 +782,14 @@ msgid "Please wait" msgstr "" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "" @@ -770,6 +802,10 @@ msgstr "" msgid "Read More" msgstr "" +#: src/widgets/default/ContributorsList.vue:9 +msgid "Recent Contributors" +msgstr "" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "" @@ -842,6 +878,10 @@ msgstr "" msgid "Scan Users" msgstr "" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "" @@ -895,7 +935,7 @@ msgstr "" msgid "Setup Wizarr" msgstr "" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "" @@ -925,7 +965,7 @@ msgid "" "know how to use it with Plex." msgstr "" -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "" @@ -950,8 +990,8 @@ msgstr "" msgid "Summoning the spirits" msgstr "" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +msgid "Support Us" msgstr "" #: src/components/Modals/LanguageModal.vue:11 @@ -1020,10 +1060,10 @@ msgstr "" msgid "Type in your invite code to %{server_name} server!" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "" @@ -1138,6 +1178,10 @@ msgstr "" msgid "Webhooks" msgstr "" +#: src/modules/home/views/Home.vue:9 +msgid "Welcome to" +msgstr "" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "" @@ -1160,6 +1204,12 @@ msgid "" "their access" msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " diff --git a/frontend/src/language/it/app.po b/frontend/src/language/it/app.po index 4370e9e81..cc4f0d48f 100644 --- a/frontend/src/language/it/app.po +++ b/frontend/src/language/it/app.po @@ -26,6 +26,10 @@ msgstr "" msgid "Account" msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "Account Error" +msgstr "" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "" @@ -74,7 +78,7 @@ msgstr "" msgid "Advanced settings for the server" msgstr "" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "" @@ -91,6 +95,12 @@ msgid "" "creation date will also be displayed here." msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "" @@ -202,8 +212,8 @@ msgstr "" msgid "Continue" msgstr "" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" +#: src/modules/join/pages/Error.vue:8 +msgid "Continue to Login" msgstr "" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 @@ -220,12 +230,12 @@ msgstr "" msgid "Copy" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "" -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "" @@ -498,6 +508,7 @@ msgid "" "phone, tablet, laptop, smart TV, you name it." msgstr "" +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "" @@ -514,6 +525,10 @@ msgstr "" msgid "Join my media server" msgstr "" +#: src/modules/help/components/Discord.vue:28 +msgid "Join our Discord" +msgstr "" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "" @@ -560,6 +575,10 @@ msgstr "" msgid "Logs" msgstr "" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "" @@ -604,6 +623,10 @@ msgstr "" msgid "Media Server" msgstr "" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "" @@ -640,7 +663,7 @@ msgstr "" msgid "No API Keys found" msgstr "" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "" @@ -682,6 +705,11 @@ msgstr "" msgid "Notifications" msgstr "" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "" @@ -735,7 +763,7 @@ msgstr "" msgid "Please enter an invite code" msgstr "" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "" @@ -754,10 +782,14 @@ msgid "Please wait" msgstr "" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "" @@ -770,6 +802,10 @@ msgstr "" msgid "Read More" msgstr "" +#: src/widgets/default/ContributorsList.vue:9 +msgid "Recent Contributors" +msgstr "" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "" @@ -842,6 +878,10 @@ msgstr "" msgid "Scan Users" msgstr "" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "" @@ -895,7 +935,7 @@ msgstr "" msgid "Setup Wizarr" msgstr "" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "" @@ -925,7 +965,7 @@ msgid "" "know how to use it with Plex." msgstr "" -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "" @@ -950,8 +990,8 @@ msgstr "" msgid "Summoning the spirits" msgstr "" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +msgid "Support Us" msgstr "" #: src/components/Modals/LanguageModal.vue:11 @@ -1020,10 +1060,10 @@ msgstr "" msgid "Type in your invite code to %{server_name} server!" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "" @@ -1138,6 +1178,10 @@ msgstr "" msgid "Webhooks" msgstr "" +#: src/modules/home/views/Home.vue:9 +msgid "Welcome to" +msgstr "" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "" @@ -1160,6 +1204,12 @@ msgid "" "their access" msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " diff --git a/frontend/src/language/lt/app.po b/frontend/src/language/lt/app.po index d8a7b6f80..6b4966244 100644 --- a/frontend/src/language/lt/app.po +++ b/frontend/src/language/lt/app.po @@ -27,6 +27,10 @@ msgstr "" msgid "Account" msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "Account Error" +msgstr "" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "" @@ -75,7 +79,7 @@ msgstr "" msgid "Advanced settings for the server" msgstr "" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "" @@ -92,6 +96,12 @@ msgid "" "creation date will also be displayed here." msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "" @@ -203,8 +213,8 @@ msgstr "" msgid "Continue" msgstr "" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" +#: src/modules/join/pages/Error.vue:8 +msgid "Continue to Login" msgstr "" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 @@ -221,12 +231,12 @@ msgstr "" msgid "Copy" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "" -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "" @@ -499,6 +509,7 @@ msgid "" "phone, tablet, laptop, smart TV, you name it." msgstr "" +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "" @@ -515,6 +526,10 @@ msgstr "" msgid "Join my media server" msgstr "" +#: src/modules/help/components/Discord.vue:28 +msgid "Join our Discord" +msgstr "" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "" @@ -561,6 +576,10 @@ msgstr "" msgid "Logs" msgstr "" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "" @@ -605,6 +624,10 @@ msgstr "" msgid "Media Server" msgstr "" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "" @@ -641,7 +664,7 @@ msgstr "" msgid "No API Keys found" msgstr "" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "" @@ -683,6 +706,11 @@ msgstr "" msgid "Notifications" msgstr "" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "" @@ -736,7 +764,7 @@ msgstr "" msgid "Please enter an invite code" msgstr "" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "" @@ -755,10 +783,14 @@ msgid "Please wait" msgstr "" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "" @@ -771,6 +803,10 @@ msgstr "" msgid "Read More" msgstr "" +#: src/widgets/default/ContributorsList.vue:9 +msgid "Recent Contributors" +msgstr "" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "" @@ -843,6 +879,10 @@ msgstr "" msgid "Scan Users" msgstr "" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "" @@ -896,7 +936,7 @@ msgstr "" msgid "Setup Wizarr" msgstr "" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "" @@ -926,7 +966,7 @@ msgid "" "know how to use it with Plex." msgstr "" -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "" @@ -951,8 +991,8 @@ msgstr "" msgid "Summoning the spirits" msgstr "" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +msgid "Support Us" msgstr "" #: src/components/Modals/LanguageModal.vue:11 @@ -1021,10 +1061,10 @@ msgstr "" msgid "Type in your invite code to %{server_name} server!" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "" @@ -1139,6 +1179,10 @@ msgstr "" msgid "Webhooks" msgstr "" +#: src/modules/home/views/Home.vue:9 +msgid "Welcome to" +msgstr "" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "" @@ -1161,6 +1205,12 @@ msgid "" "their access" msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " diff --git a/frontend/src/language/messages.pot b/frontend/src/language/messages.pot index d0c1d6155..016c037fd 100644 --- a/frontend/src/language/messages.pot +++ b/frontend/src/language/messages.pot @@ -10,6 +10,10 @@ msgstr "" msgid "Account" msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "Account Error" +msgstr "" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "" @@ -58,7 +62,7 @@ msgstr "" msgid "Advanced settings for the server" msgstr "" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "" @@ -70,6 +74,10 @@ msgstr "" msgid "All of your media server users will appear here in a list. You can manage them, edit them, and delete them. Other information like their expiration or creation date will also be displayed here." msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "An error occured while creating your account, your account may of not of been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "" @@ -180,8 +188,8 @@ msgstr "" msgid "Continue" msgstr "" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" +#: src/modules/join/pages/Error.vue:8 +msgid "Continue to Login" msgstr "" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 @@ -198,15 +206,15 @@ msgstr "" msgid "Copy" msgstr "" -#: src/modules/join/views/Join.vue:120 -#: src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 +#: src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "" -#: src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "" @@ -468,6 +476,7 @@ msgstr "" msgid "Jellyfin is a platform that lets you stream all your favorite movies, TV shows, and music in one place. It's like having your own personal movie theater right at your fingertips! Think of it as a digital library of your favorite content that you can access from anywhere, on any device - your phone, tablet, laptop, smart TV, you name it." msgstr "" +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "" @@ -484,6 +493,10 @@ msgstr "" msgid "Join my media server" msgstr "" +#: src/modules/help/components/Discord.vue:28 +msgid "Join our Discord" +msgstr "" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "" @@ -529,6 +542,10 @@ msgstr "" msgid "Logs" msgstr "" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "" @@ -573,6 +590,10 @@ msgstr "" msgid "Media Server" msgstr "" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "" @@ -610,7 +631,7 @@ msgstr "" msgid "No API Keys found" msgstr "" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "" @@ -652,6 +673,11 @@ msgstr "" msgid "Notifications" msgstr "" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "" @@ -699,7 +725,7 @@ msgstr "" msgid "Please enter an invite code" msgstr "" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "" @@ -716,10 +742,14 @@ msgid "Please wait" msgstr "" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "" @@ -732,6 +762,10 @@ msgstr "" msgid "Read More" msgstr "" +#: src/widgets/default/ContributorsList.vue:9 +msgid "Recent Contributors" +msgstr "" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "" @@ -798,6 +832,10 @@ msgstr "" msgid "Scan Users" msgstr "" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "" @@ -851,7 +889,7 @@ msgstr "" msgid "Setup Wizarr" msgstr "" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "" @@ -877,7 +915,7 @@ msgstr "" msgid "So you now have access to our server's media collection. Let's make sure you know how to use it with Plex." msgstr "" -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "Something went wrong while trying to join the server. Please try again later." msgstr "" @@ -901,8 +939,8 @@ msgstr "" msgid "Summoning the spirits" msgstr "" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +msgid "Support Us" msgstr "" #: src/components/Modals/LanguageModal.vue:11 @@ -961,14 +999,14 @@ msgstr "" msgid "Type in your invite code to %{server_name} server!" msgstr "" -#: src/modules/join/views/Join.vue:120 -#: src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 -#: src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 -#: src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 +#: src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 +#: src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 +#: src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "" @@ -1080,6 +1118,10 @@ msgstr "" msgid "Webhooks" msgstr "" +#: src/modules/home/views/Home.vue:9 +msgid "Welcome to" +msgstr "" + #: src/modules/setup/pages/Welcome.vue:5 #: src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" @@ -1097,6 +1139,10 @@ msgstr "" msgid "Wizarr is a software tool that provides advanced user invitation and management capabilities for media servers such as Jellyfin, Emby, and Plex. With Wizarr, server administrators can easily invite new users and manage their access" msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Wizarr is an unverified app. This means that Plex may warn you about using it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "Wizarr will automatically scan your media server for new users, but you can also manually scan for new users by clicking on the 'Scan for Users' button, this is useful if Wizarr has not gotten around to doing it yet." msgstr "" diff --git a/frontend/src/language/nl/app.po b/frontend/src/language/nl/app.po index 7ea0dff7a..513e93aee 100644 --- a/frontend/src/language/nl/app.po +++ b/frontend/src/language/nl/app.po @@ -26,6 +26,10 @@ msgstr "" msgid "Account" msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "Account Error" +msgstr "" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "" @@ -74,7 +78,7 @@ msgstr "" msgid "Advanced settings for the server" msgstr "" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "" @@ -91,6 +95,12 @@ msgid "" "creation date will also be displayed here." msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "" @@ -202,8 +212,8 @@ msgstr "" msgid "Continue" msgstr "" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" +#: src/modules/join/pages/Error.vue:8 +msgid "Continue to Login" msgstr "" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 @@ -220,12 +230,12 @@ msgstr "" msgid "Copy" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "" -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "" @@ -498,6 +508,7 @@ msgid "" "phone, tablet, laptop, smart TV, you name it." msgstr "" +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "" @@ -514,6 +525,10 @@ msgstr "" msgid "Join my media server" msgstr "" +#: src/modules/help/components/Discord.vue:28 +msgid "Join our Discord" +msgstr "" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "" @@ -560,6 +575,10 @@ msgstr "" msgid "Logs" msgstr "" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "" @@ -604,6 +623,10 @@ msgstr "" msgid "Media Server" msgstr "" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "" @@ -640,7 +663,7 @@ msgstr "" msgid "No API Keys found" msgstr "" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "" @@ -682,6 +705,11 @@ msgstr "" msgid "Notifications" msgstr "" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "" @@ -735,7 +763,7 @@ msgstr "" msgid "Please enter an invite code" msgstr "" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "" @@ -754,10 +782,14 @@ msgid "Please wait" msgstr "" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "" @@ -770,6 +802,10 @@ msgstr "" msgid "Read More" msgstr "" +#: src/widgets/default/ContributorsList.vue:9 +msgid "Recent Contributors" +msgstr "" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "" @@ -842,6 +878,10 @@ msgstr "" msgid "Scan Users" msgstr "" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "" @@ -895,7 +935,7 @@ msgstr "" msgid "Setup Wizarr" msgstr "" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "" @@ -925,7 +965,7 @@ msgid "" "know how to use it with Plex." msgstr "" -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "" @@ -950,8 +990,8 @@ msgstr "" msgid "Summoning the spirits" msgstr "" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +msgid "Support Us" msgstr "" #: src/components/Modals/LanguageModal.vue:11 @@ -1020,10 +1060,10 @@ msgstr "" msgid "Type in your invite code to %{server_name} server!" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "" @@ -1138,6 +1178,10 @@ msgstr "" msgid "Webhooks" msgstr "" +#: src/modules/home/views/Home.vue:9 +msgid "Welcome to" +msgstr "" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "" @@ -1160,6 +1204,12 @@ msgid "" "their access" msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " diff --git a/frontend/src/language/no/app.po b/frontend/src/language/no/app.po index b85fb4f72..2201952e3 100644 --- a/frontend/src/language/no/app.po +++ b/frontend/src/language/no/app.po @@ -26,6 +26,10 @@ msgstr "" msgid "Account" msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "Account Error" +msgstr "" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "" @@ -74,7 +78,7 @@ msgstr "" msgid "Advanced settings for the server" msgstr "" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "" @@ -91,6 +95,12 @@ msgid "" "creation date will also be displayed here." msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "" @@ -202,8 +212,8 @@ msgstr "" msgid "Continue" msgstr "" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" +#: src/modules/join/pages/Error.vue:8 +msgid "Continue to Login" msgstr "" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 @@ -220,12 +230,12 @@ msgstr "" msgid "Copy" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "" -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "" @@ -498,6 +508,7 @@ msgid "" "phone, tablet, laptop, smart TV, you name it." msgstr "" +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "" @@ -514,6 +525,10 @@ msgstr "" msgid "Join my media server" msgstr "" +#: src/modules/help/components/Discord.vue:28 +msgid "Join our Discord" +msgstr "" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "" @@ -560,6 +575,10 @@ msgstr "" msgid "Logs" msgstr "" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "" @@ -604,6 +623,10 @@ msgstr "" msgid "Media Server" msgstr "" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "" @@ -640,7 +663,7 @@ msgstr "" msgid "No API Keys found" msgstr "" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "" @@ -682,6 +705,11 @@ msgstr "" msgid "Notifications" msgstr "" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "" @@ -735,7 +763,7 @@ msgstr "" msgid "Please enter an invite code" msgstr "" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "" @@ -754,10 +782,14 @@ msgid "Please wait" msgstr "" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "" @@ -770,6 +802,10 @@ msgstr "" msgid "Read More" msgstr "" +#: src/widgets/default/ContributorsList.vue:9 +msgid "Recent Contributors" +msgstr "" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "" @@ -842,6 +878,10 @@ msgstr "" msgid "Scan Users" msgstr "" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "" @@ -895,7 +935,7 @@ msgstr "" msgid "Setup Wizarr" msgstr "" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "" @@ -925,7 +965,7 @@ msgid "" "know how to use it with Plex." msgstr "" -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "" @@ -950,8 +990,8 @@ msgstr "" msgid "Summoning the spirits" msgstr "" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +msgid "Support Us" msgstr "" #: src/components/Modals/LanguageModal.vue:11 @@ -1020,10 +1060,10 @@ msgstr "" msgid "Type in your invite code to %{server_name} server!" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "" @@ -1138,6 +1178,10 @@ msgstr "" msgid "Webhooks" msgstr "" +#: src/modules/home/views/Home.vue:9 +msgid "Welcome to" +msgstr "" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "" @@ -1160,6 +1204,12 @@ msgid "" "their access" msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " diff --git a/frontend/src/language/pl/app.po b/frontend/src/language/pl/app.po index cabd56268..8312deccc 100644 --- a/frontend/src/language/pl/app.po +++ b/frontend/src/language/pl/app.po @@ -27,6 +27,10 @@ msgstr "" msgid "Account" msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "Account Error" +msgstr "" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "" @@ -75,7 +79,7 @@ msgstr "" msgid "Advanced settings for the server" msgstr "" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "" @@ -92,6 +96,12 @@ msgid "" "creation date will also be displayed here." msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "" @@ -203,8 +213,8 @@ msgstr "" msgid "Continue" msgstr "" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" +#: src/modules/join/pages/Error.vue:8 +msgid "Continue to Login" msgstr "" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 @@ -221,12 +231,12 @@ msgstr "" msgid "Copy" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "" -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "" @@ -499,6 +509,7 @@ msgid "" "phone, tablet, laptop, smart TV, you name it." msgstr "" +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "" @@ -515,6 +526,10 @@ msgstr "" msgid "Join my media server" msgstr "" +#: src/modules/help/components/Discord.vue:28 +msgid "Join our Discord" +msgstr "" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "" @@ -561,6 +576,10 @@ msgstr "" msgid "Logs" msgstr "" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "" @@ -605,6 +624,10 @@ msgstr "" msgid "Media Server" msgstr "" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "" @@ -641,7 +664,7 @@ msgstr "" msgid "No API Keys found" msgstr "" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "" @@ -683,6 +706,11 @@ msgstr "" msgid "Notifications" msgstr "" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "" @@ -736,7 +764,7 @@ msgstr "" msgid "Please enter an invite code" msgstr "" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "" @@ -755,10 +783,14 @@ msgid "Please wait" msgstr "" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "" @@ -771,6 +803,10 @@ msgstr "" msgid "Read More" msgstr "" +#: src/widgets/default/ContributorsList.vue:9 +msgid "Recent Contributors" +msgstr "" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "" @@ -843,6 +879,10 @@ msgstr "" msgid "Scan Users" msgstr "" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "" @@ -896,7 +936,7 @@ msgstr "" msgid "Setup Wizarr" msgstr "" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "" @@ -926,7 +966,7 @@ msgid "" "know how to use it with Plex." msgstr "" -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "" @@ -951,8 +991,8 @@ msgstr "" msgid "Summoning the spirits" msgstr "" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +msgid "Support Us" msgstr "" #: src/components/Modals/LanguageModal.vue:11 @@ -1021,10 +1061,10 @@ msgstr "" msgid "Type in your invite code to %{server_name} server!" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "" @@ -1139,6 +1179,10 @@ msgstr "" msgid "Webhooks" msgstr "" +#: src/modules/home/views/Home.vue:9 +msgid "Welcome to" +msgstr "" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "" @@ -1161,6 +1205,12 @@ msgid "" "their access" msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " diff --git a/frontend/src/language/pt/app.po b/frontend/src/language/pt/app.po index 06d9b2e18..fb63f4ef1 100644 --- a/frontend/src/language/pt/app.po +++ b/frontend/src/language/pt/app.po @@ -28,6 +28,11 @@ msgstr "Sobre" msgid "Account" msgstr "Conta" +#: src/modules/join/pages/Error.vue:31 +#, fuzzy +msgid "Account Error" +msgstr "Conta" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "Configurações da Conta" @@ -76,7 +81,7 @@ msgstr "Configurações Avançadas" msgid "Advanced settings for the server" msgstr "Configurações avançadas do servidor" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "Tudo pronto!" @@ -98,6 +103,12 @@ msgstr "" "Você pode gerir, editar e apagá-los. Informações como a data de criação e " "expiração também estarão aqui." +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "Chave API" @@ -211,9 +222,10 @@ msgstr "Configurar suas chaves de acesso" msgid "Continue" msgstr "Continuar" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" -msgstr "Contribuidores" +#: src/modules/join/pages/Error.vue:8 +#, fuzzy +msgid "Continue to Login" +msgstr "Ir para o Login" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 #: src/modules/admin/components/Invitations/InvitationList/InvitationItem.vue:96 @@ -229,12 +241,12 @@ msgstr "Copiada" msgid "Copy" msgstr "Copiar" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "Não foi possível conectar ao servidor." -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "Não foi possível criar a conta." @@ -283,7 +295,8 @@ msgstr "Criar Webhook" #: src/modules/setup/pages/Database.vue:7 msgid "Currently Wizarr only supports it's internal SQLite database." -msgstr "Atualmente, o Wizarr apenas suporta a sua base de dados interna SQLite." +msgstr "" +"Atualmente, o Wizarr apenas suporta a sua base de dados interna SQLite." #: src/modules/settings/pages/Main.vue:197 msgid "Custom HTML" @@ -511,6 +524,7 @@ msgid "" "phone, tablet, laptop, smart TV, you name it." msgstr "" +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "" @@ -527,6 +541,11 @@ msgstr "" msgid "Join my media server" msgstr "" +#: src/modules/help/components/Discord.vue:28 +#, fuzzy +msgid "Join our Discord" +msgstr "Discord" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "" @@ -573,6 +592,10 @@ msgstr "" msgid "Logs" msgstr "" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "" @@ -617,6 +640,10 @@ msgstr "" msgid "Media Server" msgstr "" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "" @@ -653,7 +680,7 @@ msgstr "" msgid "No API Keys found" msgstr "" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "" @@ -695,6 +722,11 @@ msgstr "" msgid "Notifications" msgstr "" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "" @@ -748,7 +780,7 @@ msgstr "" msgid "Please enter an invite code" msgstr "" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "" @@ -767,10 +799,14 @@ msgid "Please wait" msgstr "" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "" @@ -783,6 +819,11 @@ msgstr "" msgid "Read More" msgstr "" +#: src/widgets/default/ContributorsList.vue:9 +#, fuzzy +msgid "Recent Contributors" +msgstr "Contribuidores" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "" @@ -855,6 +896,10 @@ msgstr "" msgid "Scan Users" msgstr "" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "" @@ -908,7 +953,7 @@ msgstr "" msgid "Setup Wizarr" msgstr "" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "" @@ -940,7 +985,7 @@ msgid "" "know how to use it with Plex." msgstr "" -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "" @@ -967,8 +1012,9 @@ msgstr "Ainda em desenvolvimento" msgid "Summoning the spirits" msgstr "Invocando os espíritos" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +#, fuzzy +msgid "Support Us" msgstr "Apoie-nos" #: src/components/Modals/LanguageModal.vue:11 @@ -1037,10 +1083,10 @@ msgstr "" msgid "Type in your invite code to %{server_name} server!" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "" @@ -1155,6 +1201,10 @@ msgstr "" msgid "Webhooks" msgstr "" +#: src/modules/home/views/Home.vue:9 +msgid "Welcome to" +msgstr "" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "" @@ -1177,6 +1227,12 @@ msgid "" "their access" msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " diff --git a/frontend/src/language/ro/app.po b/frontend/src/language/ro/app.po index c75d59bd6..0e4b2003b 100644 --- a/frontend/src/language/ro/app.po +++ b/frontend/src/language/ro/app.po @@ -27,6 +27,10 @@ msgstr "" msgid "Account" msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "Account Error" +msgstr "" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "" @@ -75,7 +79,7 @@ msgstr "" msgid "Advanced settings for the server" msgstr "" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "" @@ -92,6 +96,12 @@ msgid "" "creation date will also be displayed here." msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "" @@ -203,8 +213,8 @@ msgstr "" msgid "Continue" msgstr "" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" +#: src/modules/join/pages/Error.vue:8 +msgid "Continue to Login" msgstr "" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 @@ -221,12 +231,12 @@ msgstr "" msgid "Copy" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "" -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "" @@ -499,6 +509,7 @@ msgid "" "phone, tablet, laptop, smart TV, you name it." msgstr "" +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "" @@ -515,6 +526,10 @@ msgstr "" msgid "Join my media server" msgstr "" +#: src/modules/help/components/Discord.vue:28 +msgid "Join our Discord" +msgstr "" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "" @@ -561,6 +576,10 @@ msgstr "" msgid "Logs" msgstr "" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "" @@ -605,6 +624,10 @@ msgstr "" msgid "Media Server" msgstr "" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "" @@ -641,7 +664,7 @@ msgstr "" msgid "No API Keys found" msgstr "" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "" @@ -683,6 +706,11 @@ msgstr "" msgid "Notifications" msgstr "" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "" @@ -736,7 +764,7 @@ msgstr "" msgid "Please enter an invite code" msgstr "" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "" @@ -755,10 +783,14 @@ msgid "Please wait" msgstr "" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "" @@ -771,6 +803,10 @@ msgstr "" msgid "Read More" msgstr "" +#: src/widgets/default/ContributorsList.vue:9 +msgid "Recent Contributors" +msgstr "" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "" @@ -843,6 +879,10 @@ msgstr "" msgid "Scan Users" msgstr "" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "" @@ -896,7 +936,7 @@ msgstr "" msgid "Setup Wizarr" msgstr "" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "" @@ -926,7 +966,7 @@ msgid "" "know how to use it with Plex." msgstr "" -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "" @@ -951,8 +991,8 @@ msgstr "" msgid "Summoning the spirits" msgstr "" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +msgid "Support Us" msgstr "" #: src/components/Modals/LanguageModal.vue:11 @@ -1021,10 +1061,10 @@ msgstr "" msgid "Type in your invite code to %{server_name} server!" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "" @@ -1139,6 +1179,10 @@ msgstr "" msgid "Webhooks" msgstr "" +#: src/modules/home/views/Home.vue:9 +msgid "Welcome to" +msgstr "" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "" @@ -1161,6 +1205,12 @@ msgid "" "their access" msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " diff --git a/frontend/src/language/ru/app.po b/frontend/src/language/ru/app.po index bbfb27dda..f193896bb 100644 --- a/frontend/src/language/ru/app.po +++ b/frontend/src/language/ru/app.po @@ -27,6 +27,10 @@ msgstr "" msgid "Account" msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "Account Error" +msgstr "" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "" @@ -75,7 +79,7 @@ msgstr "" msgid "Advanced settings for the server" msgstr "" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "" @@ -92,6 +96,12 @@ msgid "" "creation date will also be displayed here." msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "" @@ -203,8 +213,8 @@ msgstr "" msgid "Continue" msgstr "" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" +#: src/modules/join/pages/Error.vue:8 +msgid "Continue to Login" msgstr "" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 @@ -221,12 +231,12 @@ msgstr "" msgid "Copy" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "" -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "" @@ -499,6 +509,7 @@ msgid "" "phone, tablet, laptop, smart TV, you name it." msgstr "" +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "" @@ -515,6 +526,10 @@ msgstr "" msgid "Join my media server" msgstr "" +#: src/modules/help/components/Discord.vue:28 +msgid "Join our Discord" +msgstr "" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "" @@ -561,6 +576,10 @@ msgstr "" msgid "Logs" msgstr "" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "" @@ -605,6 +624,10 @@ msgstr "" msgid "Media Server" msgstr "" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "" @@ -641,7 +664,7 @@ msgstr "" msgid "No API Keys found" msgstr "" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "" @@ -683,6 +706,11 @@ msgstr "" msgid "Notifications" msgstr "" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "" @@ -736,7 +764,7 @@ msgstr "" msgid "Please enter an invite code" msgstr "" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "" @@ -755,10 +783,14 @@ msgid "Please wait" msgstr "" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "" @@ -771,6 +803,10 @@ msgstr "" msgid "Read More" msgstr "" +#: src/widgets/default/ContributorsList.vue:9 +msgid "Recent Contributors" +msgstr "" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "" @@ -843,6 +879,10 @@ msgstr "" msgid "Scan Users" msgstr "" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "" @@ -896,7 +936,7 @@ msgstr "" msgid "Setup Wizarr" msgstr "" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "" @@ -926,7 +966,7 @@ msgid "" "know how to use it with Plex." msgstr "" -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "" @@ -951,8 +991,8 @@ msgstr "" msgid "Summoning the spirits" msgstr "" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +msgid "Support Us" msgstr "" #: src/components/Modals/LanguageModal.vue:11 @@ -1021,10 +1061,10 @@ msgstr "" msgid "Type in your invite code to %{server_name} server!" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "" @@ -1139,6 +1179,10 @@ msgstr "" msgid "Webhooks" msgstr "" +#: src/modules/home/views/Home.vue:9 +msgid "Welcome to" +msgstr "" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "" @@ -1161,6 +1205,12 @@ msgid "" "their access" msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " diff --git a/frontend/src/language/sv/app.po b/frontend/src/language/sv/app.po index 582510315..062d9f050 100644 --- a/frontend/src/language/sv/app.po +++ b/frontend/src/language/sv/app.po @@ -26,6 +26,10 @@ msgstr "" msgid "Account" msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "Account Error" +msgstr "" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "" @@ -74,7 +78,7 @@ msgstr "" msgid "Advanced settings for the server" msgstr "" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "" @@ -91,6 +95,12 @@ msgid "" "creation date will also be displayed here." msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "" @@ -202,8 +212,8 @@ msgstr "" msgid "Continue" msgstr "" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" +#: src/modules/join/pages/Error.vue:8 +msgid "Continue to Login" msgstr "" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 @@ -220,12 +230,12 @@ msgstr "" msgid "Copy" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "" -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "" @@ -498,6 +508,7 @@ msgid "" "phone, tablet, laptop, smart TV, you name it." msgstr "" +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "" @@ -514,6 +525,10 @@ msgstr "" msgid "Join my media server" msgstr "" +#: src/modules/help/components/Discord.vue:28 +msgid "Join our Discord" +msgstr "" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "" @@ -560,6 +575,10 @@ msgstr "" msgid "Logs" msgstr "" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "" @@ -604,6 +623,10 @@ msgstr "" msgid "Media Server" msgstr "" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "" @@ -640,7 +663,7 @@ msgstr "" msgid "No API Keys found" msgstr "" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "" @@ -682,6 +705,11 @@ msgstr "" msgid "Notifications" msgstr "" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "" @@ -735,7 +763,7 @@ msgstr "" msgid "Please enter an invite code" msgstr "" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "" @@ -754,10 +782,14 @@ msgid "Please wait" msgstr "" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "" @@ -770,6 +802,10 @@ msgstr "" msgid "Read More" msgstr "" +#: src/widgets/default/ContributorsList.vue:9 +msgid "Recent Contributors" +msgstr "" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "" @@ -842,6 +878,10 @@ msgstr "" msgid "Scan Users" msgstr "" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "" @@ -895,7 +935,7 @@ msgstr "" msgid "Setup Wizarr" msgstr "" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "" @@ -925,7 +965,7 @@ msgid "" "know how to use it with Plex." msgstr "" -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "" @@ -950,8 +990,8 @@ msgstr "" msgid "Summoning the spirits" msgstr "" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +msgid "Support Us" msgstr "" #: src/components/Modals/LanguageModal.vue:11 @@ -1020,10 +1060,10 @@ msgstr "" msgid "Type in your invite code to %{server_name} server!" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "" @@ -1138,6 +1178,10 @@ msgstr "" msgid "Webhooks" msgstr "" +#: src/modules/home/views/Home.vue:9 +msgid "Welcome to" +msgstr "" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "" @@ -1160,6 +1204,12 @@ msgid "" "their access" msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " diff --git a/frontend/src/language/vi/app.po b/frontend/src/language/vi/app.po index ffa778fdd..a5ec702f8 100644 --- a/frontend/src/language/vi/app.po +++ b/frontend/src/language/vi/app.po @@ -28,6 +28,11 @@ msgstr "Thông tin" msgid "Account" msgstr "Tài khoản" +#: src/modules/join/pages/Error.vue:31 +#, fuzzy +msgid "Account Error" +msgstr "Tài khoản" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "Cài đặt tài khoản" @@ -76,7 +81,7 @@ msgstr "Cài đặt mở rộng" msgid "Advanced settings for the server" msgstr "Cài đặt nâng cao cho server" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "Tất cả đã được làm xong!" @@ -98,6 +103,12 @@ msgstr "" "Bạn có thể quản lý chúng, chỉnh sửa và xóa chúng. Các thông tin khác như " "ngày hết hạn hoặc ngày tạo cũng sẽ được hiển thị ở đây." +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "API Key" @@ -211,9 +222,10 @@ msgstr "Cấu hình passkeys của bạn" msgid "Continue" msgstr "Tiếp tục" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" -msgstr "Người đóng góp" +#: src/modules/join/pages/Error.vue:8 +#, fuzzy +msgid "Continue to Login" +msgstr "Đến trang Đăng nhập" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 #: src/modules/admin/components/Invitations/InvitationList/InvitationItem.vue:96 @@ -229,12 +241,12 @@ msgstr "Sao chép vào bộ nhớ tạm" msgid "Copy" msgstr "Sao chép" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "Không thể kết nối đến server." -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "Không thể tạo tài khoản." @@ -523,6 +535,7 @@ msgstr "" "cập từ mọi nơi, trên mọi thiết bị - điện thoại, máy tính bảng, máy tính xách " "tay, TV thông minh, bạn đặt tên cho nó." +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "Tham gia" @@ -539,6 +552,10 @@ msgstr "Tham gia và tải xuống Plex cho thiết bị này" msgid "Join my media server" msgstr "Tham gia media server của tôi" +#: src/modules/help/components/Discord.vue:28 +msgid "Join our Discord" +msgstr "" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "" @@ -587,6 +604,10 @@ msgstr "Đăng nhập bằng tài khoản của bạn" msgid "Logs" msgstr "Nhật ký (Logs)" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "Cài đặt Chính" @@ -631,6 +652,10 @@ msgstr "" msgid "Media Server" msgstr "" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "Kết hợp và tích hợp các thành phần (module)" @@ -667,7 +692,7 @@ msgstr "Trang kế tiếp" msgid "No API Keys found" msgstr "Không tìm thấy API Keys" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "Không tìm thấy người đóng góp" @@ -709,6 +734,11 @@ msgstr "Không tìm thấy Webhooks" msgid "Notifications" msgstr "Thông báo" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "Mở Jellyfin" @@ -768,7 +798,7 @@ msgstr "Vui lòng nhập server URL." msgid "Please enter an invite code" msgstr "Vui lòng nhập mã mời" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "Vui lòng nhập mã mời của bạn" @@ -791,10 +821,14 @@ msgid "Please wait" msgstr "Xin vui lòng chờ" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "Xin vui lòng chờ..." +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "" @@ -808,6 +842,11 @@ msgstr "" msgid "Read More" msgstr "Đọc thêm" +#: src/widgets/default/ContributorsList.vue:9 +#, fuzzy +msgid "Recent Contributors" +msgstr "Người đóng góp" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "Yêu cầu quyền truy cập" @@ -884,6 +923,10 @@ msgstr "Quét Servers" msgid "Scan Users" msgstr "Quét người dùng" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "Thiết lập tìm kiếm" @@ -937,7 +980,7 @@ msgstr "Cài đặt cho tài khoản người dùng" msgid "Setup Wizarr" msgstr "Cài đặt Wizarr" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "Cài đặt tài khoản của bạn" @@ -971,7 +1014,7 @@ msgstr "" "Vì vậy, bây giờ bạn có quyền truy cập vào bộ sưu tập server's media của " "chúng tôi. Hãy đảm bảo rằng bạn biết cách sử dụng nó với Plex." -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "Đã xảy ra lỗi khi cố gắng tham gia vào server. Vui lòng thử lại sau." @@ -997,8 +1040,9 @@ msgstr "Vẫn đang được phát triển" msgid "Summoning the spirits" msgstr "" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +#, fuzzy +msgid "Support Us" msgstr "Hỗ trợ chúng tôi" #: src/components/Modals/LanguageModal.vue:11 @@ -1079,10 +1123,10 @@ msgstr "Thử lại" msgid "Type in your invite code to %{server_name} server!" msgstr "Nhập mã mời của bạn để %{server_name} server!" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "" @@ -1202,6 +1246,11 @@ msgstr "Xoá Webhook đã được huỷ" msgid "Webhooks" msgstr "" +#: src/modules/home/views/Home.vue:9 +#, fuzzy +msgid "Welcome to" +msgstr "Chào mừng đến với Wizarr" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "Chào mừng đến với Wizarr" @@ -1230,6 +1279,12 @@ msgstr "" "trị viên server có thể dễ dàng mời người dùng mới và quản lý quyền truy cập " "của họ" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " diff --git a/frontend/src/language/zh_cn/app.po b/frontend/src/language/zh_cn/app.po index 78ce99ba9..dba521d5d 100644 --- a/frontend/src/language/zh_cn/app.po +++ b/frontend/src/language/zh_cn/app.po @@ -26,6 +26,10 @@ msgstr "" msgid "Account" msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "Account Error" +msgstr "" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "" @@ -74,7 +78,7 @@ msgstr "" msgid "Advanced settings for the server" msgstr "" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 msgid "All done!" msgstr "" @@ -91,6 +95,12 @@ msgid "" "creation date will also be displayed here." msgstr "" +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" + #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" msgstr "" @@ -202,8 +212,8 @@ msgstr "" msgid "Continue" msgstr "" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" +#: src/modules/join/pages/Error.vue:8 +msgid "Continue to Login" msgstr "" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 @@ -220,12 +230,12 @@ msgstr "" msgid "Copy" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "" -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "" @@ -498,6 +508,7 @@ msgid "" "phone, tablet, laptop, smart TV, you name it." msgstr "" +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "" @@ -514,6 +525,10 @@ msgstr "" msgid "Join my media server" msgstr "" +#: src/modules/help/components/Discord.vue:28 +msgid "Join our Discord" +msgstr "" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "" @@ -560,6 +575,10 @@ msgstr "" msgid "Logs" msgstr "" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "" @@ -604,6 +623,10 @@ msgstr "" msgid "Media Server" msgstr "" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "" @@ -640,7 +663,7 @@ msgstr "" msgid "No API Keys found" msgstr "" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "" @@ -682,6 +705,11 @@ msgstr "" msgid "Notifications" msgstr "" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "" @@ -735,7 +763,7 @@ msgstr "" msgid "Please enter an invite code" msgstr "" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "" @@ -754,10 +782,14 @@ msgid "Please wait" msgstr "" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "" @@ -770,6 +802,10 @@ msgstr "" msgid "Read More" msgstr "" +#: src/widgets/default/ContributorsList.vue:9 +msgid "Recent Contributors" +msgstr "" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "" @@ -842,6 +878,10 @@ msgstr "" msgid "Scan Users" msgstr "" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "" @@ -895,7 +935,7 @@ msgstr "" msgid "Setup Wizarr" msgstr "" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "" @@ -925,7 +965,7 @@ msgid "" "know how to use it with Plex." msgstr "" -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "" @@ -950,8 +990,8 @@ msgstr "" msgid "Summoning the spirits" msgstr "" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +msgid "Support Us" msgstr "" #: src/components/Modals/LanguageModal.vue:11 @@ -1020,10 +1060,10 @@ msgstr "" msgid "Type in your invite code to %{server_name} server!" msgstr "" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "" @@ -1138,6 +1178,10 @@ msgstr "" msgid "Webhooks" msgstr "" +#: src/modules/home/views/Home.vue:9 +msgid "Welcome to" +msgstr "" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "" @@ -1160,6 +1204,12 @@ msgid "" "their access" msgstr "" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " diff --git a/frontend/src/language/zh_tw/app.po b/frontend/src/language/zh_tw/app.po index 039849cd6..dc12c273e 100644 --- a/frontend/src/language/zh_tw/app.po +++ b/frontend/src/language/zh_tw/app.po @@ -28,6 +28,11 @@ msgstr "關於" msgid "Account" msgstr "帳號" +#: src/modules/join/pages/Error.vue:31 +#, fuzzy +msgid "Account Error" +msgstr "帳號" + #: src/modules/settings/pages/Main.vue:147 msgid "Account Settings" msgstr "帳號設定" @@ -77,7 +82,7 @@ msgstr "進階設定" msgid "Advanced settings for the server" msgstr "進階伺服器設定" -#: src/modules/join/views/Join.vue:82 +#: src/modules/join/views/Join.vue:88 #, fuzzy msgid "All done!" msgstr "全部完成!" @@ -94,8 +99,15 @@ msgid "" "All of your media server users will appear here in a list. You can manage " "them, edit them, and delete them. Other information like their expiration or " "creation date will also be displayed here." -msgstr "您所有的媒體伺服器用戶都將顯示在此處。您可以管理、編輯和刪除它們。其他資訊(" -"例如到期日期或建立日期)也將顯示於此。" +msgstr "" +"您所有的媒體伺服器用戶都將顯示在此處。您可以管理、編輯和刪除它們。其他資訊" +"(例如到期日期或建立日期)也將顯示於此。" + +#: src/modules/join/pages/Error.vue:31 +msgid "" +"An error occured while creating your account, your account may of not of " +"been created, if you face issue attempting to login, please contact an admin." +msgstr "" #: src/modules/settings/components/APIKeys/APIKeysForm.vue:37 msgid "API Key" @@ -209,9 +221,10 @@ msgstr "設定 Passkeys" msgid "Continue" msgstr "下一步" -#: src/widgets/default/ContributorsList.vue:3 -msgid "Contributors" -msgstr "貢獻者" +#: src/modules/join/pages/Error.vue:8 +#, fuzzy +msgid "Continue to Login" +msgstr "回到登入頁面" #: src/modules/admin/components/InvitationManager/Invitation.vue:120 #: src/modules/admin/components/Invitations/InvitationList/InvitationItem.vue:96 @@ -227,12 +240,12 @@ msgstr "已複製到剪貼簿" msgid "Copy" msgstr "複製" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:172 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:180 msgid "Could not connect to the server." msgstr "無法連接到伺服器。" -#: src/modules/join/views/Join.vue:134 src/modules/join/views/Join.vue:139 -#: src/modules/join/views/Join.vue:156 src/modules/join/views/Join.vue:161 +#: src/modules/join/views/Join.vue:142 src/modules/join/views/Join.vue:147 +#: src/modules/join/views/Join.vue:164 src/modules/join/views/Join.vue:169 msgid "Could not create the account." msgstr "無法創立帳號。" @@ -416,7 +429,8 @@ msgstr "回到登入頁面" msgid "" "Great news! You now have access to our server's media collection. Let's make " "sure you know how to use it with Jellyfin." -msgstr "好消息!您現在可以訪問我們伺服器的媒體收藏。讓我們確保您知道如何使用 " +msgstr "" +"好消息!您現在可以訪問我們伺服器的媒體收藏。讓我們確保您知道如何使用 " "Jellyfin 來訪問它。" #: src/modules/help/components/Plex/Welcome.vue:5 @@ -424,7 +438,8 @@ msgid "" "Great question! Plex is a software that allows individuals to share their " "media collections with others. If you've received this invitation, it means " "someone wants to share their library with you." -msgstr "好問題!Plex是一款允許個人與他人分享媒體收藏的軟件。如果您收到了這個邀請,那" +msgstr "" +"好問題!Plex是一款允許個人與他人分享媒體收藏的軟件。如果您收到了這個邀請,那" "就表示有人想與您分享他們的媒體庫。" #: src/modules/settings/pages/Backup.vue:42 @@ -448,8 +463,9 @@ msgstr "誠意邀請你加入我的媒體伺服器。" msgid "" "If you were sent here by a friend, please request access or if you have an " "invite code, please click Get Started!" -msgstr "如果你是經朋友推薦來的,請先申請訪問。若你已有邀請碼,請直接點擊「開始使用」" -"!" +msgstr "" +"如果你是經朋友推薦來的,請先申請訪問。若你已有邀請碼,請直接點擊「開始使" +"用」!" #: src/modules/join/pages/JoinForm.vue:33 msgid "Invalid invitation code, please try again" @@ -515,11 +531,12 @@ msgid "" "favorite content that you can access from anywhere, on any device - your " "phone, tablet, laptop, smart TV, you name it." msgstr "" -"Jellyfin是一個平台,讓您可以在一個地方串流所有您最喜愛的電影、電視節目和音樂" -"。就像擁有您自己的個人電影院,輕鬆隨手可及!把它想像成您最喜愛內容的數字圖書" -"館,您可以在任何地方、使用任何設備 - " -"手機、平板電腦、筆記本電腦、智能電視等等。無論您身在何處,都可以輕鬆享受。" +"Jellyfin是一個平台,讓您可以在一個地方串流所有您最喜愛的電影、電視節目和音" +"樂。就像擁有您自己的個人電影院,輕鬆隨手可及!把它想像成您最喜愛內容的數字圖" +"書館,您可以在任何地方、使用任何設備 - 手機、平板電腦、筆記本電腦、智能電視等" +"等。無論您身在何處,都可以輕鬆享受。" +#: src/modules/help/components/Discord.vue:31 #: src/modules/join/pages/JoinForm.vue:7 msgid "Join" msgstr "加入" @@ -536,6 +553,11 @@ msgstr "加入並在此設備上下載 Plex" msgid "Join my media server" msgstr "加入我的媒體伺服器" +#: src/modules/help/components/Discord.vue:28 +#, fuzzy +msgid "Join our Discord" +msgstr "Discord" + #: src/modules/settings/pages/Account.vue:33 msgid "Last name" msgstr "姓氏" @@ -552,8 +574,9 @@ msgstr "最新消息" msgid "" "Like this Widget, it shows you the latest information about Wizarr and will " "be updated regularly by our amazing team." -msgstr "就像這個小工具一樣,它會定期由我們出色的團隊更新,為您提供有關 Wizarr " -"的最新信息。" +msgstr "" +"就像這個小工具一樣,它會定期由我們出色的團隊更新,為您提供有關 Wizarr 的最新" +"信息。" #: src/components/ChangeLogs/ChangeLogs.vue:7 msgid "Load More" @@ -583,6 +606,10 @@ msgstr "使用帳號登入" msgid "Logs" msgstr "日誌" +#: src/modules/join/views/Join.vue:18 +msgid "Made by " +msgstr "" + #: src/modules/settings/pages/Main.vue:92 msgid "Main Settings" msgstr "主要設定" @@ -627,6 +654,10 @@ msgstr "" msgid "Media Server" msgstr "媒體伺服器" +#: src/modules/help/components/Discord.vue:8 +msgid "Members Online" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Mixing the potions" msgstr "" @@ -664,7 +695,7 @@ msgstr "下一頁" msgid "No API Keys found" msgstr "找不到 API 鑰匙" -#: src/widgets/default/ContributorsList.vue:17 +#: src/widgets/default/ContributorsList.vue:26 msgid "No contributors found" msgstr "找不到貢獻者" @@ -706,6 +737,11 @@ msgstr "找不到 Webhooks" msgid "Notifications" msgstr "通知" +#: src/modules/join/pages/Error.vue:31 +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Okay" +msgstr "" + #: src/modules/help/components/Jellyfin/Download.vue:47 msgid "Open Jellyfin" msgstr "啟動 Jellyfin" @@ -732,7 +768,8 @@ msgstr "付款" msgid "" "Planning on watching Movies on this device? Download Jellyfin for this " "device or click 'Next' to for other options." -msgstr "計劃在這台裝置上觀看電影嗎?請下載Jellyfin在此裝置上,或點擊'下一步'查看其他" +msgstr "" +"計劃在這台裝置上觀看電影嗎?請下載Jellyfin在此裝置上,或點擊'下一步'查看其他" "選擇。" #: src/modules/help/components/Plex/Download.vue:10 @@ -746,7 +783,8 @@ msgid "" "Please bare in mind that these tools are only for debugging purposes and we " "will not provide you with support from any issues that may arise from using " "them." -msgstr "請注意,這些工具僅供調試使用,我們將不會為因使用這些工具而引起的任何問題提供" +msgstr "" +"請注意,這些工具僅供調試使用,我們將不會為因使用這些工具而引起的任何問題提供" "支援。" #: src/modules/settings/components/Forms/MediaForm.vue:124 @@ -761,7 +799,7 @@ msgstr "請輸入伺服器網址。" msgid "Please enter an invite code" msgstr "請輸入邀請碼" -#: src/modules/join/views/Join.vue:52 +#: src/modules/join/views/Join.vue:58 msgid "Please enter your invite code" msgstr "請輸入您的邀請碼" @@ -780,10 +818,14 @@ msgid "Please wait" msgstr "請稍候" #: src/modules/core/components/Carousel.vue:33 -#: src/modules/join/views/Join.vue:74 +#: src/modules/join/views/Join.vue:80 msgid "Please wait..." msgstr "請稍候..." +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "Plex Warning" +msgstr "" + #: src/components/Loading/FullPageLoading.vue:107 msgid "Preparing the spells" msgstr "魔法準備中" @@ -796,6 +838,11 @@ msgstr "請按下方的按鈕,然後跟隨您瀏覽器的步驟登入" msgid "Read More" msgstr "閱讀更多" +#: src/widgets/default/ContributorsList.vue:9 +#, fuzzy +msgid "Recent Contributors" +msgstr "貢獻者" + #: src/modules/home/views/Home.vue:16 msgid "Request Access" msgstr "請求訪問權限" @@ -868,6 +915,10 @@ msgstr "掃瞄伺服器" msgid "Scan Users" msgstr "掃瞄用戶" +#: src/modules/admin/pages/Settings.vue:26 +msgid "Search" +msgstr "" + #: src/tours/admin-settings.ts:11 msgid "Search Settings" msgstr "搜尋設定" @@ -922,7 +973,7 @@ msgstr "用戶帳號設定" msgid "Setup Wizarr" msgstr "設置 Wizarr" -#: src/modules/join/views/Join.vue:66 +#: src/modules/join/views/Join.vue:72 msgid "Setup your account" msgstr "設置您的帳號" @@ -950,9 +1001,10 @@ msgstr "那麼,讓我們來看看如何開始吧!" msgid "" "So you now have access to our server's media collection. Let's make sure you " "know how to use it with Plex." -msgstr "您現在可以訪問我們伺服器的媒體收藏了。讓我們確保您知道如何在 Plex 中訪問它。" +msgstr "" +"您現在可以訪問我們伺服器的媒體收藏了。讓我們確保您知道如何在 Plex 中訪問它。" -#: src/modules/join/views/Join.vue:90 +#: src/modules/join/views/Join.vue:96 msgid "" "Something went wrong while trying to join the server. Please try again later." msgstr "很抱歉,我們在嘗試加入伺服器時遇到了一些問題。請稍後再試一次。" @@ -977,8 +1029,9 @@ msgstr "開發中" msgid "Summoning the spirits" msgstr "召喚靈魂中" -#: src/widgets/default/ContributorsList.vue:23 -msgid "Support us" +#: src/widgets/default/ContributorsList.vue:11 +#, fuzzy +msgid "Support Us" msgstr "支持我們" #: src/components/Modals/LanguageModal.vue:11 @@ -1011,14 +1064,16 @@ msgid "" "This is the end of the tour, we hope you enjoyed you found it informative! " "Please feel free to contact us on Discord and let us know what you think of " "Wizarr." -msgstr "導覽正式結束,我們希望您喜歡,也希望對您有幫助!請隨時通過Discord與我們聯繫," +msgstr "" +"導覽正式結束,我們希望您喜歡,也希望對您有幫助!請隨時通過Discord與我們聯繫," "讓我們知道您對Wizarr的看法。" #: src/tours/admin-invitations.ts:9 msgid "" "This is where you can manage your invitations, they will appear here in a " "list. Invitations are used to invite new users to your media server." -msgstr "在這裡,您可以管理您的邀請,它們會以列表形式顯示。邀請用於邀請新的用戶加入您" +msgstr "" +"在這裡,您可以管理您的邀請,它們會以列表形式顯示。邀請用於邀請新的用戶加入您" "的媒體伺服器。" #: src/modules/settings/pages/Account.vue:3 @@ -1049,10 +1104,10 @@ msgstr "再試一次" msgid "Type in your invite code to %{server_name} server!" msgstr "輸入您的邀請碼以加入到 %{server_name} 伺服器!" -#: src/modules/join/views/Join.vue:120 src/modules/join/views/Join.vue:134 -#: src/modules/join/views/Join.vue:139 src/modules/join/views/Join.vue:156 -#: src/modules/join/views/Join.vue:161 src/modules/join/views/Join.vue:172 -#: src/modules/join/views/Join.vue:173 src/modules/join/views/Join.vue:89 +#: src/modules/join/views/Join.vue:128 src/modules/join/views/Join.vue:142 +#: src/modules/join/views/Join.vue:147 src/modules/join/views/Join.vue:164 +#: src/modules/join/views/Join.vue:169 src/modules/join/views/Join.vue:180 +#: src/modules/join/views/Join.vue:181 src/modules/join/views/Join.vue:95 msgid "Uh oh!" msgstr "哎呀!" @@ -1167,6 +1222,11 @@ msgstr "Webhook 刪除取消" msgid "Webhooks" msgstr "" +#: src/modules/home/views/Home.vue:9 +#, fuzzy +msgid "Welcome to" +msgstr "歡迎來到 Wizarr" + #: src/modules/setup/pages/Welcome.vue:5 src/tours/admin-home.ts:8 msgid "Welcome to Wizarr" msgstr "歡迎來到 Wizarr" @@ -1175,7 +1235,8 @@ msgstr "歡迎來到 Wizarr" msgid "" "With Plex, you'll have access to all of the movies, TV shows, music, and " "photos that are stored on their server!" -msgstr "使用Plex,您可以輕鬆訪問儲存在他們伺服器上的所有電影、電視節目、音樂和照片!" +msgstr "" +"使用Plex,您可以輕鬆訪問儲存在他們伺服器上的所有電影、電視節目、音樂和照片!" #: src/components/Footers/DefaultFooter.vue:3 msgid "Wizarr" @@ -1192,12 +1253,19 @@ msgstr "" "能的軟件工具。使用Wizarr,伺服器管理員可以輕鬆地邀請新用戶並管理他們的訪問權" "限" +#: src/modules/join/pages/Plex/Signup.vue:33 +msgid "" +"Wizarr is an unverified app. This means that Plex may warn you about using " +"it. Do you wish to continue?" +msgstr "" + #: src/tours/admin-users.ts:14 msgid "" "Wizarr will automatically scan your media server for new users, but you can " "also manually scan for new users by clicking on the 'Scan for Users' button, " "this is useful if Wizarr has not gotten around to doing it yet." -msgstr "Wizarr 會自動檢查您的媒體伺服器是否有新的用戶,但如果 Wizarr 還沒有執行檢查," +msgstr "" +"Wizarr 會自動檢查您的媒體伺服器是否有新的用戶,但如果 Wizarr 還沒有執行檢查," "您也可以點擊\"掃描用戶\"按鈕手動執行。" #: src/tours/admin-home.ts:23 diff --git a/frontend/src/main.ts b/frontend/src/main.ts index 00765d82d..8ea40d8ec 100644 --- a/frontend/src/main.ts +++ b/frontend/src/main.ts @@ -18,6 +18,7 @@ import ProgressOptions from "./assets/configs/DefaultProgress"; import Sentry from "./plugins/sentry"; import ToastOptions from "./assets/configs/DefaultToasts"; import ToastPlugin from "vue-toastification"; +import VueFeather from "vue-feather"; import VueProgressBar from "@aacassandra/vue3-progressbar"; import { createApp } from "vue"; import { createPinia } from "pinia"; @@ -60,6 +61,14 @@ app.use(WebShare); app.use(Firebase); app.use(Tours, { i18n: i18n }); +app.component("VueFeather", VueFeather); + +declare module "@vue/runtime-core" { + interface GlobalComponents { + VueFeather: typeof VueFeather; + } +} + pinia.use(piniaPluginPersistedstate); pinia.use(piniaPluginToast); pinia.use(piniaPluginAxios); diff --git a/frontend/src/modules/admin/pages/Settings.vue b/frontend/src/modules/admin/pages/Settings.vue index e38f56fa5..2a596eaad 100644 --- a/frontend/src/modules/admin/pages/Settings.vue +++ b/frontend/src/modules/admin/pages/Settings.vue @@ -3,7 +3,7 @@ @@ -107,12 +113,14 @@ export default defineComponent({ // Hide the please wait screen this.pleaseWait = false; - // Go to the error screen - this.currentView = this.views.findIndex((view) => view.name == "error") + 1; + // Change the error screen props this.views[this.currentView - 1].props = { title: title, message: message, }; + + // Show the error screen + this.currentView = this.views.findIndex((view) => view.name == "error") + 1; }, async connected() { // Check for a socket id @@ -172,6 +180,7 @@ export default defineComponent({ this.socket.on("connect_error", () => this.showError(this.__("Uh oh!"), this.__("Could not connect to the server."))); this.socket.on("error", (message) => this.showError(this.__("Uh oh!"), message)); this.socket.on("error", this.$toast.error); + this.socket.on("log", (message) => console.error(message)); this.socket.on("message", this.$toast.info); this.socket.on("step", (step: number) => (this.activeStep = step)); this.socket.on("done", () => setTimeout(() => (this.currentView = this.views.findIndex((view) => view.name == "success") + 1), 1000)); diff --git a/frontend/src/plugins/tours.ts b/frontend/src/plugins/tours.ts index d96a9d003..cd78b61db 100644 --- a/frontend/src/plugins/tours.ts +++ b/frontend/src/plugins/tours.ts @@ -3,9 +3,11 @@ import type { Language } from "vue3-gettext"; import type { PiniaPluginContext } from "pinia"; import type TourGuideOptions from "@sjmc11/tourguidejs/src/core/options"; import loadRouterTour from "@/tours"; +import { useUserStore } from "@/stores/user"; export interface CustomTourGuideOptions extends TourGuideOptions { i18n?: Language; + userStore?: ReturnType; app: App; } diff --git a/frontend/src/stores/user.ts b/frontend/src/stores/user.ts index a88ca4c7f..9953ed8c9 100644 --- a/frontend/src/stores/user.ts +++ b/frontend/src/stores/user.ts @@ -1,8 +1,8 @@ +import type { APIUser as User } from "@/types/api/auth/User"; import { defineStore } from "pinia"; -import type { APIUser } from "@/types/api/auth/User"; interface UserStoreState { - user: Partial | null; + user: Partial | null; } export const useUserStore = defineStore("user", { @@ -15,22 +15,10 @@ export const useUserStore = defineStore("user", { }, }, actions: { - setUser(user: Partial) { + setUser(user: Partial) { this.user = user; }, - updateUser(user: Partial) { - // Create a new form data object - const formData = new FormData(); - if (user.display_name) formData.append("display_name", user.display_name); - if (user.username) formData.append("username", user.username); - if (user.email) formData.append("email", user.email); - - // Update the user in the database - this.$axios.put("/api/accounts", formData).then((response) => { - this.user = response.data; - }); - - // Update the user in the store + updateUser(user: Partial) { this.user = { ...this.user, ...user }; }, }, diff --git a/frontend/src/tours/index.ts b/frontend/src/tours/index.ts index ad9340474..76e2d7651 100644 --- a/frontend/src/tours/index.ts +++ b/frontend/src/tours/index.ts @@ -7,6 +7,7 @@ import { TourGuideClient } from "@sjmc11/tourguidejs/src/Tour"; import type TourGuideOptions from "@sjmc11/tourguidejs/src/core/options"; import type { TourGuideStep } from "@sjmc11/tourguidejs/src/types/TourGuideStep"; import defaultOptions from "@sjmc11/tourguidejs/src/util/util_default_options"; +import { useUserStore } from "@/stores/user"; export interface CustomTourGuideStep extends TourGuideStep { onBackdropClick?: () => void | Promise; @@ -57,17 +58,17 @@ export const checkTourAvailability = (tour: string): boolean => { * @param options * @returns */ -const loadRouterTour = (router: Router, options?: CustomTourGuideOptions) => { - // PATCH: Add the tour guide to localStorage - if (localStorage.getItem("tg_tours_complete") === null) { - localStorage.setItem("tg_tours_complete", ""); - } - +const loadRouterTour = (router: Router, options: CustomTourGuideOptions) => { // Initialize the tour guide const tourGuide = new TourGuideClient({ ...options, debug: process.env.NODE_ENV === "development" }); - // Load tour when route is loaded - router.afterEach(async (to) => checkTourAvailability(to.name as string) && (await loadTour(to.name as RouteRecordName, tourGuide, options))); + // Load the tour when the route is loaded + router.afterEach(async (to) => { + const userStore = useUserStore(options.app.config.globalProperties.$pinia); + if (!userStore.user?.tutorial && checkTourAvailability(to.name as string)) { + await loadTour(to.name as RouteRecordName, tourGuide, { ...options, userStore: userStore }); + } + }); }; /** @@ -111,10 +112,14 @@ const defaultOnBeforeStepChange = async (tourGuide: TourGuideClient, callback?: * @param callback * @returns */ -const defaultOnAfterExit = async (tourGuide: TourGuideClient, callback?: () => void | Promise) => { - // Don't show the tour guide again - let tours = localStorage.getItem("tg_tours_complete")?.split(",") ?? []; - localStorage.setItem("tg_tours_complete", tours.concat(tourGuide.group).join(",")); +const defaultOnAfterExit = async (tourGuide: TourGuideClient, options?: CustomTourGuideOptions, callback?: () => void | Promise) => { + // Don't show the tour guide again if the tour has been completed + const axios = options?.app.config.globalProperties.$axios; + + // Update the user in the database + await axios!.patch("/api/accounts/me", { tutorial: true }).then((response) => { + options?.userStore?.$patch({ user: { ...response.data } }); + }); // Call the callback if it exists await callback?.(); @@ -155,7 +160,7 @@ const loadTour = async (name: RouteRecordName, tourGuide: TourGuideClient, optio const onFinishCallback = async () => await defaultOnFinish(tourGuide, options, tour.callbacks?.onFinish); const onBeforeStepChangeCallback = async () => await defaultOnBeforeStepChange(tourGuide, tour.callbacks?.onBeforeStepChange); - const onAfterExitCallback = async () => await defaultOnAfterExit(tourGuide, tour.callbacks?.onAfterExit); + const onAfterExitCallback = async () => await defaultOnAfterExit(tourGuide, options, tour.callbacks?.onAfterExit); // Add the callbacks to the tour guide if they exist tourGuide.onFinish(onFinishCallback); @@ -164,12 +169,6 @@ const loadTour = async (name: RouteRecordName, tourGuide: TourGuideClient, optio tour.callbacks?.onBeforeExit && tourGuide.onBeforeExit(tour.callbacks.onBeforeExit); tourGuide.onBeforeStepChange(onBeforeStepChangeCallback); - // Check if the tour is finished - if (tourGuide.isFinished(tourName)) return; - - console.log(`Starting tour ${tourName}`); - console.log(tourGuide.tourSteps); - // Start the tour tourGuide.start(tourName); }; diff --git a/frontend/src/types/api/auth/User.ts b/frontend/src/types/api/auth/User.ts index 021eb49f6..95e06d0aa 100644 --- a/frontend/src/types/api/auth/User.ts +++ b/frontend/src/types/api/auth/User.ts @@ -1,14 +1,3 @@ -export interface LocalUser { - id: number; - displayName: string; - username: string; - email: string; - avatar: string; - role: string; - created: string; - lastLogin: string; -} - export interface APIUser { id: number; display_name: string; @@ -16,6 +5,7 @@ export interface APIUser { email: string; avatar: string; role: string; + tutorial: boolean; created: string; last_login: string; } diff --git a/frontend/src/widgets/default/ContributorsList.vue b/frontend/src/widgets/default/ContributorsList.vue index 32d680299..949049d87 100644 --- a/frontend/src/widgets/default/ContributorsList.vue +++ b/frontend/src/widgets/default/ContributorsList.vue @@ -1,30 +1,47 @@