Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1a2c96dc20 | ||
|
|
c687940cd0 |
@@ -1,9 +0,0 @@
|
||||
# Copy to .env and fill in for dev tooling
|
||||
|
||||
# Crowdin Personal Access Token scoped to at least `project.report` (Read only)
|
||||
# Needed for `qtlimport --credits-since`
|
||||
CROWDIN_REPORT_READ_TOKEN=
|
||||
|
||||
# Path for long-term cached files, like downloaded icon packs
|
||||
# Used by `icons` unless `--work-dir` is set
|
||||
CACHE_DIR=
|
||||
1
.github/CODEOWNERS
vendored
@@ -1 +0,0 @@
|
||||
* @vkbo @saga-soft-bot
|
||||
63
.github/ISSUE_TEMPLATE/01-bug-report.yml
vendored
@@ -1,63 +0,0 @@
|
||||
name: Bug Report
|
||||
description: Report a bug or issue.
|
||||
title: "[Bug] "
|
||||
labels: ["bug", "triage"]
|
||||
type: bug
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
Thank you for taking the time to fill out this bug report.
|
||||
Note that issues without a description will not be considered.
|
||||
Please also check if an issue already exists on this problem.
|
||||
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Bug Description
|
||||
description: >
|
||||
Provide a clear and concise description of what happened.
|
||||
Include screenshots where relevant.
|
||||
placeholder: Tell us what you see.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: reproduce
|
||||
attributes:
|
||||
label: Steps to Reproduce
|
||||
description: >
|
||||
Explain what to do to reproduce the issue.
|
||||
Include screenshots where relevant.
|
||||
placeholder: Tell us what to do.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
id: version
|
||||
attributes:
|
||||
label: Version
|
||||
description: What version of UmbraEdit are you running?
|
||||
placeholder: "e.g. 26.2"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
id: os
|
||||
attributes:
|
||||
label: Operating System
|
||||
description: What operating system are you running?
|
||||
placeholder: "e.g. Windows 11, macOS 26, Ubuntu 26.04"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Log or Error Output
|
||||
description: >
|
||||
If the error dialog popped up, copy/paste the content here.
|
||||
Or provide relevant log output from the console.
|
||||
render: shell
|
||||
validations:
|
||||
required: false
|
||||
34
.github/ISSUE_TEMPLATE/02-improvement.yml
vendored
@@ -1,34 +0,0 @@
|
||||
name: Suggest Improvement
|
||||
description: Suggest something that can be improved.
|
||||
title: "[Improve] "
|
||||
labels: ["enhancement", "triage"]
|
||||
type: feature
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
Thank you for taking the time to fill out this feature request.
|
||||
Note that feature requests without a description will not be considered.
|
||||
Please also check if a request already exists for this feature.
|
||||
|
||||
- type: textarea
|
||||
id: problem
|
||||
attributes:
|
||||
label: The Problem
|
||||
description: >
|
||||
Explain the problem you're facing.
|
||||
Include screenshots where relevant.
|
||||
placeholder: Tell us about the issue.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Your Suggestion
|
||||
description: >
|
||||
Provide a clear and concise description of what you'd like to see.
|
||||
Include screenshots where relevant.
|
||||
placeholder: Tell us what you need.
|
||||
validations:
|
||||
required: true
|
||||
23
.github/ISSUE_TEMPLATE/03-feature.yml
vendored
@@ -1,23 +0,0 @@
|
||||
name: Feature Request
|
||||
description: Suggest a new feature you'd like added.
|
||||
title: "[Feat] "
|
||||
labels: ["enhancement", "triage"]
|
||||
type: feature
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
Thank you for taking the time to fill out this feature request.
|
||||
Note that feature requests without a description will not be considered.
|
||||
Please also check if a request already exists for this feature.
|
||||
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Your Suggestion
|
||||
description: >
|
||||
Provide a clear and concise description of what you'd like to see.
|
||||
Include screenshots where relevant.
|
||||
placeholder: Tell us what you need.
|
||||
validations:
|
||||
required: true
|
||||
16
.github/ISSUE_TEMPLATE/bug-report.md
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
name: Bug Report
|
||||
about: Create a report to help us improve
|
||||
title: ""
|
||||
labels: bug
|
||||
---
|
||||
|
||||
**Note**: Issues without a description will not be considered.
|
||||
Please also check if an issue already exists on this problem.
|
||||
Please provide a description covering the following points, if applicable:
|
||||
|
||||
* A clear and concise description of what the bug is.
|
||||
* Steps to reproduce the behaviour
|
||||
* A clear and concise description of what you expected to happen.
|
||||
* If applicable, add screenshots to help explain your problem.
|
||||
* If the error dialog popped up, copy/paste the content here.
|
||||
5
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1,5 +0,0 @@
|
||||
blank_issues_enabled: true
|
||||
contact_links:
|
||||
- name: GitHub Community Support
|
||||
url: https://github.com/saga-soft/UmbraEdit/discussions
|
||||
about: Please ask and answer questions here.
|
||||
15
.github/ISSUE_TEMPLATE/feature-request.md
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
name: Feature Request
|
||||
about: Suggest an idea for this project
|
||||
title: ""
|
||||
labels: enhancement
|
||||
---
|
||||
|
||||
**Note**: Feature requests without a description will not be considered.
|
||||
Please also check if an issue already exists on this feature.
|
||||
Please provide a description covering the following points, if applicable:
|
||||
|
||||
* A clear and concise description of what the problem is. Ex. I'm always frustrated when ...
|
||||
* A clear and concise description of what you want to happen.
|
||||
* A clear and concise description of any alternative solutions or features you've considered.
|
||||
* If applicable, add screenshots to help explain your request.
|
||||
23
.github/pull_request_template.md
vendored
@@ -1,19 +1,24 @@
|
||||
### Summary
|
||||
<!--
|
||||
Please check the following before you make a pull request:
|
||||
|
||||
### Related Issue(s)
|
||||
* The branch you are making the pull request from (in your own fork) has a unique and descriptive
|
||||
name. Do not make a pull request directly from your copy of `main`.
|
||||
* If you are submitting translation files, only submit the files that you have added translations
|
||||
to, not the other .ts files that may have been updated in the process.
|
||||
* Make sure your contribution follows the style guide and other requirements mentioned in the
|
||||
CONTRIBUTING.md file in the repository.
|
||||
* Fill in the Summary section below, and if relevant, mention the issue numbers related to the PR.
|
||||
-->
|
||||
|
||||
<!-- i.e. Closes #1234 -->
|
||||
**Summary:**
|
||||
|
||||
### Submitter's Checklist
|
||||
**Related Issue(s):**
|
||||
|
||||
* [ ] I am familiar with, and have followed, the [Contributing Guide](https://github.com/saga-soft/UmbraEdit/blob/main/CONTRIBUTING.md)
|
||||
* [ ] I am familiar with, and have followed, the [AI Policy](https://github.com/saga-soft/UmbraEdit/blob/main/AI_POLICY.md)
|
||||
|
||||
### Reviewer's Checklist
|
||||
**Reviewer's Checklist:**
|
||||
|
||||
* [ ] The header of all files contain a reference to the repository license
|
||||
* [ ] The overall test coverage is increased or remains the same as before
|
||||
* [ ] All tests are passing
|
||||
* [ ] All linting checks are passing and the style guide is followed
|
||||
* [ ] All flake8 checks are passing and the style guide is followed
|
||||
* [ ] Documentation (as docstrings) is complete and understandable
|
||||
* [ ] Only files that have been actively changed are committed
|
||||
|
||||
26
.github/workflows/auto_approve.yml
vendored
@@ -1,26 +0,0 @@
|
||||
name: Auto-Approve
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types:
|
||||
- opened
|
||||
- reopened
|
||||
- synchronize
|
||||
- ready_for_review
|
||||
|
||||
concurrency:
|
||||
group: auto-approve-${{ github.event.pull_request.number }}
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
approve:
|
||||
name: Approve Owner PRs
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event.pull_request.draft == false && github.event.pull_request.user.login == 'vkbo'
|
||||
steps:
|
||||
- name: Approve Pull Request
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.SAGA_SOFT_BOT_TOKEN }}
|
||||
PR_URL: ${{ github.event.pull_request.html_url }}
|
||||
run: gh pr review "$PR_URL" --approve
|
||||
30
.github/workflows/build_all.yml
vendored
@@ -1,30 +0,0 @@
|
||||
name: Build All
|
||||
|
||||
on: workflow_dispatch
|
||||
|
||||
jobs:
|
||||
buildAssets:
|
||||
uses: ./.github/workflows/part_assets.yml
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
buildLinux-AppImage:
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_appimage.yml
|
||||
secrets: inherit
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
buildLinux-Flatpak:
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_flatpak.yml
|
||||
secrets: inherit
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
buildWin-X64:
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_win_x64.yml
|
||||
secrets: inherit
|
||||
permissions:
|
||||
contents: read
|
||||
23
.github/workflows/build_linux_images.yml
vendored
@@ -1,23 +0,0 @@
|
||||
name: Build Linux Images
|
||||
|
||||
on: workflow_dispatch
|
||||
|
||||
jobs:
|
||||
buildAssets:
|
||||
uses: ./.github/workflows/part_assets.yml
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
buildLinux-AppImage:
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_appimage.yml
|
||||
secrets: inherit
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
buildLinux-Flatpak:
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_flatpak.yml
|
||||
secrets: inherit
|
||||
permissions:
|
||||
contents: read
|
||||
147
.github/workflows/build_linux_native.yml
vendored
@@ -1,147 +0,0 @@
|
||||
name: Build Linux Native
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
publish:
|
||||
required: false
|
||||
description: "Publish to Cloudsmith?"
|
||||
type: boolean
|
||||
default: false
|
||||
build_number:
|
||||
required: false
|
||||
description: "Build Number"
|
||||
type: string
|
||||
default: "0"
|
||||
debian12:
|
||||
required: false
|
||||
description: "Debian 12 (Bookworm)"
|
||||
type: boolean
|
||||
default: true
|
||||
debian13:
|
||||
required: false
|
||||
description: "Debian 13 (Trixie)"
|
||||
type: boolean
|
||||
default: true
|
||||
ubuntu2404:
|
||||
required: false
|
||||
description: "Ubuntu 24.04 (Noble)"
|
||||
type: boolean
|
||||
default: true
|
||||
ubuntu2604:
|
||||
required: false
|
||||
description: "Ubuntu 26.04 (Resolute)"
|
||||
type: boolean
|
||||
default: true
|
||||
ubuntu2610:
|
||||
required: false
|
||||
description: "Ubuntu 26.10 (Stonking)"
|
||||
type: boolean
|
||||
default: true
|
||||
mint22:
|
||||
required: false
|
||||
description: "Linux Mint 22 (Wilma)"
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
jobs:
|
||||
buildAssets:
|
||||
uses: ./.github/workflows/part_assets.yml
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
buildAndPublish-Debian12:
|
||||
name: Debian 12 (Bookworm)
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_debian.yml
|
||||
with:
|
||||
publish: ${{ inputs.publish }}
|
||||
build_number: ${{ inputs.build_number }}
|
||||
codename: bookworm
|
||||
family: debian
|
||||
image: debian:12
|
||||
secrets: inherit
|
||||
if: ${{ inputs.debian12 }}
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
|
||||
buildAndPublish-Debian13:
|
||||
name: Debian 13 (Trixie)
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_debian.yml
|
||||
with:
|
||||
publish: ${{ inputs.publish }}
|
||||
build_number: ${{ inputs.build_number }}
|
||||
codename: trixie
|
||||
family: debian
|
||||
image: debian:13
|
||||
secrets: inherit
|
||||
if: ${{ inputs.debian13 }}
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
|
||||
buildAndPublish-Ubuntu2404:
|
||||
name: Ubuntu 24.04 (Noble)
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_debian.yml
|
||||
with:
|
||||
publish: ${{ inputs.publish }}
|
||||
build_number: ${{ inputs.build_number }}
|
||||
codename: noble
|
||||
family: ubuntu
|
||||
image: ubuntu:24.04
|
||||
secrets: inherit
|
||||
if: ${{ inputs.ubuntu2404 }}
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
|
||||
buildAndPublish-Ubuntu2604:
|
||||
name: Ubuntu 26.04 (Resolute)
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_debian.yml
|
||||
with:
|
||||
publish: ${{ inputs.publish }}
|
||||
build_number: ${{ inputs.build_number }}
|
||||
codename: resolute
|
||||
family: ubuntu
|
||||
image: ubuntu:26.04
|
||||
secrets: inherit
|
||||
if: ${{ inputs.ubuntu2604 }}
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
|
||||
buildAndPublish-Ubuntu2610:
|
||||
name: Ubuntu 26.10 (Stonking)
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_debian.yml
|
||||
with:
|
||||
publish: ${{ inputs.publish }}
|
||||
build_number: ${{ inputs.build_number }}
|
||||
codename: stonking
|
||||
family: ubuntu
|
||||
image: ubuntu:26.10
|
||||
secrets: inherit
|
||||
if: ${{ inputs.ubuntu2610 }}
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
|
||||
buildAndPublish-Mint22:
|
||||
name: Linux Mint 22 (Wilma)
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_debian.yml
|
||||
with:
|
||||
publish: ${{ inputs.publish }}
|
||||
build_number: ${{ inputs.build_number }}
|
||||
codename: wilma
|
||||
family: linuxmint
|
||||
image: linuxmintd/mint22-amd64
|
||||
secrets: inherit
|
||||
if: ${{ inputs.mint22 }}
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
23
.github/workflows/build_mac.yml
vendored
@@ -1,23 +0,0 @@
|
||||
name: Build MacOS
|
||||
|
||||
on: workflow_dispatch
|
||||
|
||||
jobs:
|
||||
buildAssets:
|
||||
uses: ./.github/workflows/part_assets.yml
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
buildMac-AMD64:
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_macos_amd64.yml
|
||||
secrets: inherit
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
buildMac-M1:
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_macos_m1.yml
|
||||
secrets: inherit
|
||||
permissions:
|
||||
contents: read
|
||||
26
.github/workflows/build_pypi.yml
vendored
@@ -1,26 +0,0 @@
|
||||
name: Build PyPI
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
publish:
|
||||
required: false
|
||||
description: "Publish to PyPI?"
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
buildAssets:
|
||||
uses: ./.github/workflows/part_assets.yml
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
buildAndPublish-PyPI:
|
||||
name: PyPI Package
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_pypi.yml
|
||||
with:
|
||||
publish: ${{ inputs.publish }}
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
16
.github/workflows/build_win.yml
vendored
@@ -1,16 +0,0 @@
|
||||
name: Build Windows
|
||||
|
||||
on: workflow_dispatch
|
||||
|
||||
jobs:
|
||||
buildAssets:
|
||||
uses: ./.github/workflows/part_assets.yml
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
buildWin-X64:
|
||||
needs: buildAssets
|
||||
uses: ./.github/workflows/part_win_x64.yml
|
||||
secrets: inherit
|
||||
permissions:
|
||||
contents: read
|
||||
47
.github/workflows/build_win_launcher.yml
vendored
@@ -1,47 +0,0 @@
|
||||
name: Build Windows Launcher
|
||||
|
||||
on: workflow_dispatch
|
||||
|
||||
jobs:
|
||||
buildLauncherWin64:
|
||||
runs-on: windows-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Build Launcher
|
||||
id: build
|
||||
run: |
|
||||
Set-Location setup\windows
|
||||
.\make.ps1
|
||||
|
||||
- name: Upload Unsigned Artifacts
|
||||
id: upload-unsigned-artifact
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: launcher
|
||||
path: setup/windows/UmbraEdit.exe
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
|
||||
- name: Submit Signing Request
|
||||
uses: signpath/github-action-submit-signing-request@v2
|
||||
with:
|
||||
api-token: "${{ secrets.SIGNPATH_API_TOKEN }}"
|
||||
organization-id: "0471e52c-66fa-4e9a-bfb9-36167095ca3f"
|
||||
project-slug: "UmbraEdit"
|
||||
signing-policy-slug: "release-signing"
|
||||
artifact-configuration-slug: "launcher"
|
||||
github-artifact-id: "${{ steps.upload-unsigned-artifact.outputs.artifact-id }}"
|
||||
wait-for-completion: true
|
||||
output-artifact-directory: "."
|
||||
|
||||
- name: Upload Signed Artifacts
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: launcher-signed
|
||||
path: UmbraEdit.exe
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
41
.github/workflows/i18n.yml
vendored
@@ -1,41 +0,0 @@
|
||||
name: i18n
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
- release
|
||||
paths:
|
||||
- i18n/*.ts
|
||||
|
||||
jobs:
|
||||
buildI18n:
|
||||
name: Build i18n
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Python Setup
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.14"
|
||||
architecture: x64
|
||||
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Install System Packages
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install qttools5-dev-tools
|
||||
|
||||
- name: Build Assets
|
||||
run: python pkgutils.py qtlrelease
|
||||
|
||||
- name: Upload Artifacts
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: nw-i18n
|
||||
path: umbraedit/assets/i18n/*.qm
|
||||
if-no-files-found: error
|
||||
retention-days: 7
|
||||
141
.github/workflows/part_appimage.yml
vendored
@@ -1,141 +0,0 @@
|
||||
name: Part AppImage
|
||||
|
||||
on: workflow_call
|
||||
|
||||
jobs:
|
||||
buildLinux-AppImage:
|
||||
# Needs to stay on 22.04 as long as we're using manylinux_2_28
|
||||
# as libxcb-cursor0 in 22.04 supports glibc >= 2.17
|
||||
name: Build AppImage
|
||||
runs-on: ubuntu-22.04
|
||||
permissions:
|
||||
contents: read
|
||||
env:
|
||||
PYTHON_VERSION: "3.14"
|
||||
LINUX_TAG: "manylinux_2_28"
|
||||
LINUX_ARCH: "x86_64"
|
||||
steps:
|
||||
- name: Python Setup
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.14"
|
||||
architecture: x64
|
||||
|
||||
- name: Install Packages (apt)
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install libxcb-cursor0
|
||||
|
||||
- name: Install Packages (pip)
|
||||
run: pip install python-appimage setuptools
|
||||
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Download Artifacts
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: nw-assets
|
||||
path: umbraedit/assets
|
||||
|
||||
- name: Build AppImage
|
||||
id: build
|
||||
run: |
|
||||
wget https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-$LINUX_ARCH.AppImage
|
||||
chmod +x appimagetool-$LINUX_ARCH.AppImage
|
||||
export APPIMAGE_TOOL_EXEC="$(pwd)/appimagetool-$LINUX_ARCH.AppImage"
|
||||
echo "BUILD_VERSION=$(python pkgutils.py version)" >> $GITHUB_OUTPUT
|
||||
python pkgutils.py build-appimage $LINUX_TAG $LINUX_ARCH $PYTHON_VERSION
|
||||
|
||||
- name: Upload Artifacts
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: UmbraEdit-${{ steps.build.outputs.BUILD_VERSION }}-Linux-AppImage
|
||||
path: dist_appimage/*.AppImage*
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
|
||||
smokeTest:
|
||||
name: Smoke Test AppImage (${{ matrix.distro }})
|
||||
needs: buildLinux-AppImage
|
||||
runs-on: ubuntu-22.04
|
||||
permissions:
|
||||
contents: read
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- distro: Ubuntu 22.04
|
||||
image: ubuntu:22.04
|
||||
- distro: Debian 12
|
||||
image: debian:12
|
||||
- distro: Fedora 40
|
||||
image: fedora:40
|
||||
- distro: Arch Linux
|
||||
image: archlinux:latest
|
||||
- distro: Manjaro
|
||||
image: manjarolinux/base:latest
|
||||
container:
|
||||
image: ${{ matrix.image }}
|
||||
steps:
|
||||
- name: Install Runtime Dependencies
|
||||
run: |
|
||||
if command -v apt-get >/dev/null 2>&1; then
|
||||
apt-get update
|
||||
apt-get install -y ca-certificates libgl1 libxkbcommon0 libegl1 libfontconfig1 libglib2.0-0 libdbus-1-3
|
||||
elif command -v dnf >/dev/null 2>&1; then
|
||||
dnf install -y ca-certificates coreutils mesa-libGL mesa-libEGL libxkbcommon fontconfig glib2 dbus-libs
|
||||
elif command -v pacman >/dev/null 2>&1; then
|
||||
pacman -Syu --noconfirm --needed ca-certificates coreutils mesa libxkbcommon fontconfig glib2 dbus
|
||||
fi
|
||||
|
||||
- name: Download AppImage Artifact
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
pattern: UmbraEdit-*-Linux-AppImage
|
||||
merge-multiple: true
|
||||
path: appimage-dist
|
||||
|
||||
- name: Run AppImage Smoke Test
|
||||
run: |
|
||||
set -eu
|
||||
APPIMAGE_FILE="$(find appimage-dist -maxdepth 1 -name '*.AppImage' | head -n1)"
|
||||
if [ -z "$APPIMAGE_FILE" ]; then
|
||||
echo "No AppImage artifact found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
chmod +x "$APPIMAGE_FILE"
|
||||
export QT_QPA_PLATFORM=offscreen
|
||||
export QT_NO_XDG_DESKTOP_PORTAL=1
|
||||
export APPIMAGE_EXTRACT_AND_RUN=1
|
||||
|
||||
set +e
|
||||
timeout 25s "$APPIMAGE_FILE" > smoke.log 2>&1
|
||||
EXIT_CODE=$?
|
||||
set -e
|
||||
|
||||
if [ "$EXIT_CODE" -eq 139 ]; then
|
||||
echo "AppImage crashed with segmentation fault"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if grep -Eiq 'segmentation fault|core dumped' smoke.log; then
|
||||
echo "Crash signature found in smoke log"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$EXIT_CODE" -ne 0 ] && [ "$EXIT_CODE" -ne 124 ]; then
|
||||
echo "Unexpected exit code: $EXIT_CODE"
|
||||
cat smoke.log
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Upload Smoke Logs
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: appimage-smoke-log-${{ matrix.distro }}
|
||||
path: smoke.log
|
||||
if-no-files-found: ignore
|
||||
retention-days: 14
|
||||
44
.github/workflows/part_assets.yml
vendored
@@ -1,44 +0,0 @@
|
||||
name: Part Assets
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
|
||||
jobs:
|
||||
buildAssets:
|
||||
name: Build Assets
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Install System Packages
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y qttools5-dev-tools latexmk texlive texlive-latex-extra
|
||||
|
||||
- name: Install UV and Python
|
||||
uses: astral-sh/setup-uv@v10.2.0
|
||||
with:
|
||||
python-version: "3.14"
|
||||
enable-cache: true
|
||||
|
||||
- name: Install Dependencies
|
||||
run: |
|
||||
uv sync --no-dev --group docs
|
||||
|
||||
- name: Build Assets
|
||||
run: |
|
||||
uv run --no-sync pkgutils.py build-assets
|
||||
|
||||
- name: Upload Artifacts
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: nw-assets
|
||||
path: |
|
||||
umbraedit/assets/manual*.pdf
|
||||
umbraedit/assets/sample.zip
|
||||
umbraedit/assets/i18n/*.qm
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
82
.github/workflows/part_debian.yml
vendored
@@ -1,82 +0,0 @@
|
||||
name: Part Debian
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
publish:
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
build_number:
|
||||
required: false
|
||||
type: string
|
||||
default: "0"
|
||||
codename:
|
||||
required: true
|
||||
type: string
|
||||
family:
|
||||
required: true
|
||||
type: string
|
||||
image:
|
||||
required: true
|
||||
type: string
|
||||
secrets:
|
||||
CLOUDSMITH_API_KEY:
|
||||
required: false
|
||||
|
||||
jobs:
|
||||
buildPackage:
|
||||
name: Build Debian Package
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
container:
|
||||
image: ${{ inputs.image }}
|
||||
steps:
|
||||
- name: Install Checkout Prerequisites
|
||||
run: |
|
||||
apt-get update
|
||||
apt-get install -y git ca-certificates python3
|
||||
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Download Assets Artifact
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: nw-assets
|
||||
path: umbraedit/assets
|
||||
|
||||
- name: Install Native Packages
|
||||
run: apt-get install -y $(python3 pkgutils.py build-deb-depends ${{ inputs.codename }})
|
||||
|
||||
- name: Build Package
|
||||
run: python3 pkgutils.py build-deb ${{ inputs.codename }} --build ${{ inputs.build_number }} --install-source Cloudsmith
|
||||
|
||||
- name: Upload Artifacts
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: nw-deb-${{ inputs.codename }}
|
||||
path: dist_upload/*
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
|
||||
- name: Set up Cloudsmith CLI with OIDC
|
||||
if: ${{ inputs.publish }}
|
||||
uses: cloudsmith-io/cloudsmith-cli-action@v3
|
||||
with:
|
||||
oidc-namespace: "saga-soft"
|
||||
oidc-service-slug: "github-actions-lcpr"
|
||||
verify-auth: true
|
||||
|
||||
- name: Publish to Cloudsmith
|
||||
if: ${{ inputs.publish }}
|
||||
run: |
|
||||
CHANNEL="$(python3 pkgutils.py channel)"
|
||||
REPO="stable"
|
||||
if [ "$CHANNEL" = "pre" ]; then
|
||||
REPO="testing"
|
||||
fi
|
||||
DEB_FILE="$(find dist_upload -name '*.deb')"
|
||||
cloudsmith push deb "saga-soft/$REPO/${{ inputs.family }}/${{ inputs.codename }}" "$DEB_FILE" --republish
|
||||
46
.github/workflows/part_flatpak.yml
vendored
@@ -1,46 +0,0 @@
|
||||
name: Part Flatpak
|
||||
|
||||
on: workflow_call
|
||||
|
||||
jobs:
|
||||
buildLinux-Flatpak:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Install Packages
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y flatpak flatpak-builder
|
||||
flatpak remote-add --if-not-exists --user flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Install UV and Python
|
||||
uses: astral-sh/setup-uv@v10.2.0
|
||||
with:
|
||||
python-version: "3.14"
|
||||
enable-cache: true
|
||||
|
||||
- name: Install Dependencies
|
||||
run: |
|
||||
uv sync --no-dev --group build
|
||||
|
||||
- name: Download Artifacts
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: nw-assets
|
||||
path: umbraedit/assets
|
||||
|
||||
- name: Build Flatpak
|
||||
id: build
|
||||
run: |
|
||||
echo "BUILD_VERSION=$(uv run pkgutils.py version)" >> $GITHUB_OUTPUT
|
||||
uv run --no-sync pkgutils.py build-flatpak
|
||||
|
||||
- name: Upload Artifacts
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: UmbraEdit-${{ steps.build.outputs.BUILD_VERSION }}-Linux-Flatpak
|
||||
path: dist_flatpak/*.flatpak*
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
37
.github/workflows/part_macos_amd64.yml
vendored
@@ -1,37 +0,0 @@
|
||||
name: Part MacOS AMD64
|
||||
|
||||
on: workflow_call
|
||||
|
||||
jobs:
|
||||
buildMac-AMD64:
|
||||
name: Build on MACOS AMD64
|
||||
runs-on: macos-latest
|
||||
permissions:
|
||||
contents: read
|
||||
env:
|
||||
PYTHON_VERSION: "3.13"
|
||||
PACKAGE_ARCH: x86_64
|
||||
MINICONDA_ARCH: x86_64
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Download Artifacts
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: nw-assets
|
||||
path: umbraedit/assets
|
||||
|
||||
- name: Build App Bundle
|
||||
id: build
|
||||
run: |
|
||||
echo "BUILD_VERSION=$(python pkgutils.py version)" >> $GITHUB_OUTPUT
|
||||
./setup/macos/build.sh $PYTHON_VERSION $PACKAGE_ARCH $MINICONDA_ARCH
|
||||
|
||||
- name: Upload DMG
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: UmbraEdit-${{ steps.build.outputs.BUILD_VERSION }}-MacOS-AMD64-DMG
|
||||
path: dist_macos/*.dmg*
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
37
.github/workflows/part_macos_m1.yml
vendored
@@ -1,37 +0,0 @@
|
||||
name: Part MacOS M1
|
||||
|
||||
on: workflow_call
|
||||
|
||||
jobs:
|
||||
buildMac-M1:
|
||||
name: Build on MacOS AARCH64
|
||||
runs-on: macos-latest
|
||||
permissions:
|
||||
contents: read
|
||||
env:
|
||||
PYTHON_VERSION: "3.13"
|
||||
PACKAGE_ARCH: aarch64
|
||||
MINICONDA_ARCH: arm64
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Download Artifacts
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: nw-assets
|
||||
path: umbraedit/assets
|
||||
|
||||
- name: Build App Bundle
|
||||
id: build
|
||||
run: |
|
||||
echo "BUILD_VERSION=$(python pkgutils.py version)" >> $GITHUB_OUTPUT
|
||||
./setup/macos/build.sh $PYTHON_VERSION $PACKAGE_ARCH $MINICONDA_ARCH
|
||||
|
||||
- name: Upload DMG
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: UmbraEdit-${{ steps.build.outputs.BUILD_VERSION }}-MacOS-M1-DMG
|
||||
path: dist_macos/*.dmg*
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
66
.github/workflows/part_pypi.yml
vendored
@@ -1,66 +0,0 @@
|
||||
name: Part PyPI
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
publish:
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
buildPackage:
|
||||
name: Build PyPI Package
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Download Assets Artifact
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: nw-assets
|
||||
path: umbraedit/assets
|
||||
|
||||
- name: Install UV and Python
|
||||
uses: astral-sh/setup-uv@v10.2.0
|
||||
with:
|
||||
python-version: "3.14"
|
||||
enable-cache: true
|
||||
|
||||
- name: Build Package
|
||||
run: uv run pkgutils.py build-pypi
|
||||
|
||||
- name: Upload Artifacts
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: nw-pypi
|
||||
path: |
|
||||
dist_pypi/*.whl
|
||||
dist_pypi/*.tar.gz
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
|
||||
publishPackage:
|
||||
name: Publish to PyPI
|
||||
needs: buildPackage
|
||||
if: ${{ inputs.publish }}
|
||||
runs-on: ubuntu-latest
|
||||
environment: pypi
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
steps:
|
||||
- name: Download Package Artifact
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: nw-pypi
|
||||
path: dist_pypi
|
||||
|
||||
- name: Install UV
|
||||
uses: astral-sh/setup-uv@v10.2.0
|
||||
|
||||
- name: Publish Package
|
||||
run: uv publish dist_pypi/*
|
||||
64
.github/workflows/part_win_x64.yml
vendored
@@ -1,64 +0,0 @@
|
||||
name: Part Windows X64
|
||||
|
||||
on: workflow_call
|
||||
|
||||
jobs:
|
||||
buildWin-X64:
|
||||
name: Build on Windows
|
||||
runs-on: windows-2022
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Python Setup
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.14"
|
||||
architecture: x64
|
||||
|
||||
- name: Install Packages (pip)
|
||||
run: pip install tzdata
|
||||
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Download Assets
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: nw-assets
|
||||
path: umbraedit/assets
|
||||
|
||||
- name: Build Setup Installer
|
||||
id: build
|
||||
run: |
|
||||
echo "BUILD_VERSION=$(python pkgutils.py version)" >> $Env:GITHUB_OUTPUT
|
||||
python pkgutils.py build-win-exe
|
||||
|
||||
- name: Upload Unsigned Artifacts
|
||||
id: upload-unsigned-artifact
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: UmbraEdit-${{ steps.build.outputs.BUILD_VERSION }}-Win-Setup
|
||||
path: dist/*.exe
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
|
||||
- name: Submit Signing Request
|
||||
uses: signpath/github-action-submit-signing-request@v1
|
||||
with:
|
||||
api-token: "${{ secrets.SIGNPATH_API_TOKEN }}"
|
||||
organization-id: "0471e52c-66fa-4e9a-bfb9-36167095ca3f"
|
||||
project-slug: "UmbraEdit"
|
||||
signing-policy-slug: "release-signing "
|
||||
github-artifact-id: "${{ steps.upload-unsigned-artifact.outputs.artifact-id }}"
|
||||
wait-for-completion: true
|
||||
output-artifact-directory: "dist/"
|
||||
parameters: |
|
||||
version: "${{ steps.build.outputs.BUILD_VERSION }}"
|
||||
|
||||
- name: Upload Signed Artifacts
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: UmbraEdit-${{ steps.build.outputs.BUILD_VERSION }}-Win-Setup-Signed
|
||||
path: dist/*.exe
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
17
.github/workflows/policy.yml
vendored
@@ -1,17 +0,0 @@
|
||||
name: Policy Checks
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
- release
|
||||
|
||||
jobs:
|
||||
commitPolicy:
|
||||
name: Commit Policy
|
||||
uses: saga-soft/automation/.github/workflows/saga-soft-policy.yml@main
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: read
|
||||
with:
|
||||
policy-url: https://github.com/saga-soft/UmbraEdit/blob/main/AI_POLICY.md
|
||||
44
.github/workflows/syntax.yml
vendored
@@ -1,41 +1,31 @@
|
||||
name: Syntax
|
||||
name: flake8
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
branches:
|
||||
- main
|
||||
- release
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
- release
|
||||
|
||||
jobs:
|
||||
checkSyntax:
|
||||
name: Linting and Type Checking
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Install UV and Python
|
||||
uses: astral-sh/setup-uv@v10.2.0
|
||||
- name: Python Setup
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
enable-cache: true
|
||||
|
||||
- name: Install Dependencies
|
||||
python-version: 3
|
||||
architecture: x64
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v2
|
||||
- name: Install flake8
|
||||
run: pip install flake8
|
||||
- name: Syntax Error Check
|
||||
run: |
|
||||
uv sync --no-dev --group lint --group test
|
||||
|
||||
- name: Ruff Check
|
||||
run: |
|
||||
uv run --no-sync ruff --version
|
||||
uv run --no-sync ruff format --check
|
||||
uv run --no-sync ruff check --output-format github
|
||||
|
||||
- name: Pyright Check
|
||||
run: |
|
||||
uv run --no-sync pyright --version
|
||||
uv run --no-sync pyright
|
||||
flake8 novelwriter --count --select=E9,F63,F7,F82 --show-source --statistics
|
||||
flake8 tests --count --select=E9,F63,F7,F82 --show-source --statistics
|
||||
- name: Coding Style Violations
|
||||
run: |
|
||||
flake8 novelwriter --count --max-line-length=99 --ignore E221,E226,E228,E241 --show-source --statistics
|
||||
flake8 tests --count --max-line-length=99 --ignore E221,E226,E228,E241 --show-source --statistics
|
||||
|
||||
41
.github/workflows/test_linux.yml
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
name: Linux
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
testLinux:
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: ["3.6", "3.7", "3.8", "3.9", "3.10"]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Python Setup
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
architecture: x64
|
||||
- name: Install Packages (apt)
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install libenchant-dev qttools5-dev-tools
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v2
|
||||
- name: Install Dependencies (pip)
|
||||
run: |
|
||||
pip install --upgrade pip
|
||||
pip install -r requirements.txt
|
||||
pip install -r requirements-dev.txt
|
||||
- name: Run Build Commands
|
||||
run: python setup.py qtlrelease sample
|
||||
- name: Run Tests
|
||||
run: |
|
||||
export QT_QPA_PLATFORM=offscreen
|
||||
pytest -v --cov=novelwriter --timeout=60
|
||||
- name: Upload to Codecov
|
||||
uses: codecov/codecov-action@v1
|
||||
36
.github/workflows/test_mac.yml
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
name: macOS
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
testMac:
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- name: Python Setup
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3.9
|
||||
architecture: x64
|
||||
- name: Install Packages
|
||||
run: |
|
||||
brew install enchant
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v2
|
||||
- name: Install Dependencies
|
||||
run: |
|
||||
pip install --upgrade pip
|
||||
pip install -r requirements.txt
|
||||
pip install -r requirements-dev.txt
|
||||
pip install pyobjc
|
||||
- name: Run Tests
|
||||
run: |
|
||||
export QT_QPA_PLATFORM=offscreen
|
||||
pytest -v --cov=novelwriter --timeout=60
|
||||
- name: Upload to Codecov
|
||||
uses: codecov/codecov-action@v1
|
||||
31
.github/workflows/test_win.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
name: Windows
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
testWin:
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- name: Python Setup
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3.9
|
||||
architecture: x64
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v2
|
||||
- name: Install Dependencies
|
||||
run: |
|
||||
pip install --upgrade pip
|
||||
pip install -r requirements.txt
|
||||
pip install -r requirements-dev.txt
|
||||
- name: Run Tests
|
||||
run: |
|
||||
pytest -v --cov=novelwriter --timeout=60
|
||||
- name: Upload to Codecov
|
||||
uses: codecov/codecov-action@v1
|
||||
308
.github/workflows/tests.yml
vendored
@@ -1,308 +0,0 @@
|
||||
name: Tests
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- release
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
- release
|
||||
|
||||
jobs:
|
||||
testLinux:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
python-version:
|
||||
- "3.11"
|
||||
- "3.12"
|
||||
- "3.13"
|
||||
- "3.14"
|
||||
- "3.15"
|
||||
fail-fast: false
|
||||
name: Linux Python ${{ matrix.python-version }}
|
||||
permissions:
|
||||
contents: read
|
||||
env:
|
||||
COVERAGE_FILE: .coverage.py${{ matrix.python-version }}
|
||||
steps:
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Install System Packages
|
||||
timeout-minutes: 5
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install qttools5-dev-tools
|
||||
|
||||
- name: Install UV and Python
|
||||
uses: astral-sh/setup-uv@v10.2.0
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
enable-cache: true
|
||||
|
||||
- name: Install Dependencies
|
||||
run: |
|
||||
uv sync --no-dev --group test
|
||||
|
||||
- name: Build Assets
|
||||
run: |
|
||||
uv run --no-sync pkgutils.py qtlrelease
|
||||
uv run --no-sync pkgutils.py sample
|
||||
|
||||
- name: Run Tests
|
||||
run: |
|
||||
export QT_QPA_PLATFORM=offscreen
|
||||
uv run --no-sync coverage run -m pytest -v --timeout=60
|
||||
uv run --no-sync coverage report --skip-covered --show-missing
|
||||
|
||||
- name: Upload Coverage Data
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: coverage-data-py${{ matrix.python-version }}
|
||||
path: ${{ env.COVERAGE_FILE }}
|
||||
include-hidden-files: true
|
||||
retention-days: 1
|
||||
|
||||
testMac:
|
||||
runs-on: macos-latest
|
||||
name: MacOS Python 3.14
|
||||
permissions:
|
||||
contents: read
|
||||
env:
|
||||
COVERAGE_FILE: .coverage.mac
|
||||
steps:
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Install System Packages
|
||||
run: |
|
||||
brew install enchant
|
||||
|
||||
- name: Install UV and Python
|
||||
uses: astral-sh/setup-uv@v10.2.0
|
||||
with:
|
||||
python-version: "3.14"
|
||||
enable-cache: true
|
||||
|
||||
- name: Install Dependencies
|
||||
run: |
|
||||
uv sync --no-dev --group test
|
||||
|
||||
- name: Build Assets
|
||||
run: |
|
||||
uv run --no-sync pkgutils.py sample
|
||||
|
||||
- name: Run Tests
|
||||
run: |
|
||||
export QT_QPA_PLATFORM=offscreen
|
||||
uv run --no-sync coverage run -m pytest -v --timeout=60
|
||||
uv run --no-sync coverage report --skip-covered --show-missing
|
||||
|
||||
- name: Upload Coverage Data
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: coverage-data-mac
|
||||
path: ${{ env.COVERAGE_FILE }}
|
||||
include-hidden-files: true
|
||||
retention-days: 1
|
||||
|
||||
testWin:
|
||||
runs-on: windows-latest
|
||||
name: Windows Python 3.14
|
||||
permissions:
|
||||
contents: read
|
||||
env:
|
||||
COVERAGE_FILE: .coverage.win
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
steps:
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Install UV and Python
|
||||
uses: astral-sh/setup-uv@v10.2.0
|
||||
with:
|
||||
python-version: "3.14"
|
||||
enable-cache: true
|
||||
|
||||
- name: Install Dependencies
|
||||
run: |
|
||||
uv sync --no-dev --group test
|
||||
|
||||
- name: Build Assets
|
||||
run: |
|
||||
uv run --no-sync pkgutils.py sample
|
||||
|
||||
- name: Run Tests
|
||||
run: |
|
||||
uv run --no-sync coverage run -m pytest -v --timeout=60
|
||||
uv run --no-sync coverage report --skip-covered --show-missing
|
||||
|
||||
- name: Upload Coverage Data
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: coverage-data-win
|
||||
path: ${{ env.COVERAGE_FILE }}
|
||||
include-hidden-files: true
|
||||
retention-days: 1
|
||||
|
||||
coverageReport:
|
||||
name: PR Coverage Report
|
||||
needs:
|
||||
- testLinux
|
||||
- testMac
|
||||
- testWin
|
||||
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
steps:
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Download Coverage Data
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
pattern: coverage-data-*
|
||||
merge-multiple: true
|
||||
|
||||
- name: Install UV
|
||||
uses: astral-sh/setup-uv@v10.2.0
|
||||
|
||||
- name: Combine Coverage Data
|
||||
run: |
|
||||
uvx coverage combine
|
||||
uvx coverage report --skip-covered
|
||||
|
||||
- name: Build Comment Body
|
||||
run: |
|
||||
{
|
||||
echo '<!-- coverage-report -->'
|
||||
echo '### Coverage Report (Linux, macOS, Windows)'
|
||||
echo
|
||||
uvx coverage report --skip-covered --show-missing --format=markdown --precision=3
|
||||
echo
|
||||
echo "**Total: $(uvx coverage report --format=total --precision=3)%**"
|
||||
} > coverage-comment.md
|
||||
|
||||
- name: Post PR Comment
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
PR_NUMBER: ${{ github.event.pull_request.number }}
|
||||
REPO: ${{ github.repository }}
|
||||
run: |
|
||||
comment_id=$(gh api "repos/$REPO/issues/$PR_NUMBER/comments" --paginate --jq '.[] | select(.body | startswith("<!-- coverage-report -->")) | .id' | head -n1)
|
||||
if [ -n "$comment_id" ]; then
|
||||
gh api --method PATCH "repos/$REPO/issues/comments/$comment_id" -F body=@coverage-comment.md
|
||||
else
|
||||
gh pr comment "$PR_NUMBER" --body-file coverage-comment.md
|
||||
fi
|
||||
|
||||
coverageSummary:
|
||||
name: Action Coverage Report
|
||||
needs:
|
||||
- testLinux
|
||||
- testMac
|
||||
- testWin
|
||||
if: github.event_name == 'pull_request'
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Download Coverage Data
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
pattern: coverage-data-*
|
||||
merge-multiple: true
|
||||
|
||||
- name: Install UV
|
||||
uses: astral-sh/setup-uv@v10.2.0
|
||||
|
||||
- name: Combine Coverage Data
|
||||
run: |
|
||||
uvx coverage combine
|
||||
uvx coverage report --skip-covered
|
||||
|
||||
- name: Write Coverage Summary
|
||||
run: |
|
||||
{
|
||||
echo '### Coverage Report (Linux, macOS, Windows)'
|
||||
echo
|
||||
uvx coverage report --skip-covered --show-missing --format=markdown --precision=3
|
||||
echo
|
||||
echo "**Total: $(uvx coverage report --format=total --precision=3)%**"
|
||||
} >> "$GITHUB_STEP_SUMMARY"
|
||||
|
||||
testUbuntu24:
|
||||
name: Ubuntu 24.04 & Sys Packages
|
||||
runs-on: ubuntu-24.04
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Install System Packages
|
||||
timeout-minutes: 5
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install \
|
||||
python3-pyqt6 \
|
||||
python3-pyqt6.qtsvg \
|
||||
python3-pytest \
|
||||
python3-pytestqt \
|
||||
python3-enchant \
|
||||
python3-pytest-timeout \
|
||||
qt6-image-formats-plugins
|
||||
|
||||
- name: Build Assets
|
||||
run: |
|
||||
python3 pkgutils.py sample
|
||||
|
||||
- name: Run Tests
|
||||
run: |
|
||||
export QT_QPA_PLATFORM=offscreen
|
||||
python3 -m pytest -v --timeout=60
|
||||
|
||||
testFedoraLatest:
|
||||
name: Fedora 44 & Sys Packages
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: fedora:44
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Install System Packages
|
||||
timeout-minutes: 5
|
||||
run: |
|
||||
dnf -y update
|
||||
dnf -y install \
|
||||
git \
|
||||
python3-enchant \
|
||||
python3-pyqt6 \
|
||||
python3-pytest \
|
||||
python3-pytest-qt \
|
||||
python3-pytest-timeout \
|
||||
qt6-linguist \
|
||||
qt6-qtimageformats
|
||||
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Run Build Commands
|
||||
run: |
|
||||
python pkgutils.py qtlrelease
|
||||
python pkgutils.py sample
|
||||
|
||||
- name: Run Tests
|
||||
run: |
|
||||
export QT_QPA_PLATFORM=offscreen
|
||||
python3 -m pytest -v --timeout=60
|
||||
72
.gitignore
vendored
@@ -1,87 +1,53 @@
|
||||
# Setup/Install
|
||||
/MANIFEST
|
||||
/build/
|
||||
/build_*/
|
||||
/deploy/
|
||||
/dist/
|
||||
/dist_*/
|
||||
*.spec
|
||||
*.egg-info
|
||||
setup.iss
|
||||
/umbraedit.desktop
|
||||
/UmbraEdit.pyw
|
||||
/setup/macos/Info.plist
|
||||
/setup/windows/build
|
||||
.flatpak-builder
|
||||
.venv
|
||||
.env
|
||||
/novelwriter.desktop
|
||||
/novelWriter.pyw
|
||||
|
||||
# Translations
|
||||
/umbraedit/assets/i18n/*.qm
|
||||
/novelwriter/assets/i18n/*.qm
|
||||
.qmake.stash
|
||||
i18n/*.qm
|
||||
i18n/*.qph
|
||||
|
||||
# Documentation
|
||||
/docs/build/
|
||||
/docs/source/locales/**/*.mo
|
||||
/umbraedit/assets/manual*.pdf
|
||||
.~lock.*
|
||||
/novelwriter/assets/help/
|
||||
/novelwriter/assets/manual.pdf
|
||||
*.qch
|
||||
*.qhc
|
||||
|
||||
# Python
|
||||
/.python-version
|
||||
# Python Temp
|
||||
__pycache__
|
||||
*.pyc
|
||||
|
||||
# Sample Project
|
||||
/umbraedit/assets/sample.zip
|
||||
/novelwriter/assets/sample.zip
|
||||
/sample/cache
|
||||
/sample/meta
|
||||
/sample/**/*.bak
|
||||
/sample/*.lock
|
||||
/sample/ToC.txt
|
||||
/sample/manifest.json
|
||||
/sample/versions
|
||||
*.bak
|
||||
*.lock
|
||||
ToC.txt
|
||||
|
||||
# PyTest
|
||||
/prof/
|
||||
/htmlcov/
|
||||
/tests/temp
|
||||
/tests/_temp
|
||||
/tests/lipsum/cache
|
||||
/tests/lipsum/meta
|
||||
/tests/minimal/cache
|
||||
/tests/minimal/meta
|
||||
/tests/oldproj/cache
|
||||
/.pytest_cache
|
||||
/pytestdebug.log
|
||||
|
||||
# Coverage
|
||||
/.coverage
|
||||
/.coveragerc
|
||||
/coverage.*
|
||||
|
||||
# Other
|
||||
.config
|
||||
.local
|
||||
*.patch
|
||||
|
||||
# IDE
|
||||
.vscode
|
||||
.ruff_cache
|
||||
.nvimlog
|
||||
|
||||
# No AI files
|
||||
AGENTS.md
|
||||
CLAUSE.md
|
||||
GEMINI.md
|
||||
.claude/
|
||||
.cursor*
|
||||
.codex/
|
||||
.gemini/
|
||||
|
||||
# Debug
|
||||
/debug/
|
||||
|
||||
# Clean up accidentally committed files
|
||||
# Added by B.D. Murphy 2026: exclude files accidentally committed during branding transition
|
||||
Splh.jpeg
|
||||
Oldwelcome.webp
|
||||
.DS_Store
|
||||
UmbraEdit_Projects/
|
||||
Inner_Demon_1.2a.docm
|
||||
requirements.txt
|
||||
UmbraEdit_deb_Build_Script.txt
|
||||
|
||||
24
.readthedocs.yml
Normal file
@@ -0,0 +1,24 @@
|
||||
# Read the Docs configuration file
|
||||
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
||||
|
||||
# Required
|
||||
version: 2
|
||||
|
||||
# Build documentation in the docs/ directory with Sphinx
|
||||
sphinx:
|
||||
configuration: docs/source/conf.py
|
||||
|
||||
# Build documentation with MkDocs
|
||||
#mkdocs:
|
||||
# configuration: mkdocs.yml
|
||||
|
||||
# Optionally build your docs in additional formats such as PDF
|
||||
formats:
|
||||
- htmlzip
|
||||
- epub
|
||||
- pdf
|
||||
|
||||
# Optionally set the version of Python and requirements required to build your docs
|
||||
python:
|
||||
install:
|
||||
- requirements: docs/source/requirements.txt
|
||||
59
AI_POLICY.md
@@ -1,59 +0,0 @@
|
||||
# AI Policy
|
||||
|
||||
This is the AI policy of UmbraEdit and associated projects.
|
||||
|
||||
|
||||
### Code Contributions
|
||||
|
||||
We consider code to be creative work, and we have a strong preference for feature contributions designed by actual
|
||||
humans over the average and mediocre output of agentic and generative AI.
|
||||
|
||||
While we do not have a strict No-AI policy, we want to limit its use in this project. In general, we expect any
|
||||
contributed code to hold up to maintainability and stability standards so that our users can rely on the software for
|
||||
their creative work. This implies careful review, thorough test coverage, and beta testing of all features before they
|
||||
reach live users. The requirements on code that isn't shipped to the user are less strict. This includes unit tests and
|
||||
build tooling.
|
||||
|
||||
We recognise that AI tools can be useful in a developer's toolbox, alongside other tools that can edit or add code. In
|
||||
addition to read-only operations, it is generally fine to use them for boilerplate, fixes, and otherwise editing and
|
||||
extending existing code. However, you must not contribute fully or predominantly AI-generated features or other
|
||||
bulk-generated code. This applies especially to core functionality.
|
||||
|
||||
In general, so-called vibe coding does not meet our code quality requirements, so this project is not suitable for such
|
||||
contributions in any case. The licensing implications around generated code are also unclear, as AI models are trained
|
||||
on material without consent or concern for original licensing.
|
||||
|
||||
No AI automation or agentic tools are used anywhere in this project on GitHub. Do not use your AI agents on your
|
||||
contributions on GitHub either. Commits listed in any way as authored by, signed off by, or assisted by, AI tools are
|
||||
explicitly not allowed. Pull requests containing such commits will be rejected. You should also not commit AI-specific
|
||||
files into the code repository. Most of the common ones are in the git ignore file.
|
||||
|
||||
|
||||
### Design Work
|
||||
|
||||
No design work generated by AI for UmbraEdit will be accepted. We do not control how third-party work like icon
|
||||
libraries are created, but any artwork added to the app must be made by actual people.
|
||||
|
||||
|
||||
### Translation Work
|
||||
|
||||
This project uses Crowdin to host the translation files for the user interface. Crowdin has a lot of AI integration and
|
||||
tooling, which we do not use. The Crowdin translation interface provides AI translated suggestions, which the
|
||||
translators may choose to use. All translations are proofread and approved by speakers of the respective languages.
|
||||
|
||||
|
||||
### Application Features
|
||||
|
||||
We do not believe creative writing and generative AI go together. Therefore, there will not be any tooling or features
|
||||
added to this project that will generate text for you. Language models have a real use case in text analysis that
|
||||
predates generative AI, and such supportive tools **may** be in scope depending on how intrusive they are.
|
||||
|
||||
|
||||
### Discussions and Comments
|
||||
|
||||
Please refrain from using AI to generate or respond to discussions, issues, and pull requests. Especially do not use AI
|
||||
tools to generate long and verbose issue reports. It is OK to use AI for translations of comments or for accessibility
|
||||
reasons. All text in the code or posted to this project must be in English.
|
||||
|
||||
|
||||
*Last updated on 2026-10-03.*
|
||||
146
BUILD_LINUX.md
@@ -1,146 +0,0 @@
|
||||
# UmbraEdit - Linux AMD64 Build Guide
|
||||
|
||||
UmbraEdit is developed on macOS but builds natively on Linux AMD64 and ARM64.
|
||||
This guide covers building Linux install packages from source.
|
||||
|
||||
## Source Distribution
|
||||
|
||||
The source tarball (`umbraedit-2026.11.1.tar.gz`) includes everything needed to
|
||||
build Linux packages:
|
||||
|
||||
```
|
||||
umbraedit-2026.11.1/
|
||||
├── pyproject.toml # Project metadata & dependencies
|
||||
├── UmbraEdit.py # Application entry point
|
||||
├── pkgutils.py # Packaging utility
|
||||
├── run_tests.py # Test runner
|
||||
├── setup/ # Packaging assets
|
||||
│ ├── data/ # .desktop file, MIME type XML
|
||||
│ ├── macos/ # macOS-specific packaging
|
||||
│ └── windows/ # Windows-specific packaging
|
||||
├── utils/ # Build scripts
|
||||
│ ├── build_debian.py # .deb package builder
|
||||
│ ├── build_appimage.py # AppImage builder
|
||||
│ ├── build_all.py # Multi-platform build orchestrator
|
||||
│ └── ...
|
||||
├── umbraedit/ # Application source code
|
||||
└── tests/ # Test suite
|
||||
```
|
||||
|
||||
## Prerequisites on Linux
|
||||
|
||||
### Debian/Ubuntu
|
||||
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install \
|
||||
python3 python3-pip \
|
||||
python3-pyqt6 python3-pyqt6.qtsvg \
|
||||
python3-enchant \
|
||||
qt6-image-formats-plugins qt6-svg-plugins \
|
||||
dh-python debhelper python3-build python3-setuptools \
|
||||
python3-pytest python3-pytestqt python3-pytest-timeout \
|
||||
appimagetool
|
||||
```
|
||||
|
||||
### Fedora/RHEL
|
||||
|
||||
```bash
|
||||
sudo dnf install \
|
||||
python3 python3-pip \
|
||||
python3-pyqt6 python3-enchant \
|
||||
qt6-qtimageformats qt6-qtsvg \
|
||||
python3-build python3-setuptools \
|
||||
dpkg rpm-build appimagetool
|
||||
```
|
||||
|
||||
### Arch Linux
|
||||
|
||||
```bash
|
||||
sudo pacman -S \
|
||||
python python-pip \
|
||||
python-pyqt6 python-enchant \
|
||||
qt6-imageformats qt6-svg \
|
||||
python-build python-setuptools \
|
||||
dpkg appimagetool
|
||||
```
|
||||
|
||||
## Build Options
|
||||
|
||||
### Option 1: Install via Wheel (Simplest)
|
||||
|
||||
The pure Python wheel requires no compilation:
|
||||
|
||||
```bash
|
||||
pip install umbraedit-2026.11.1-py3-none-any.whl
|
||||
umbraedit
|
||||
```
|
||||
|
||||
### Option 2: Install from Source Tarball
|
||||
|
||||
```bash
|
||||
tar xzf umbraedit-2026.11.1.tar.gz
|
||||
cd umbraedit-2026.11.1
|
||||
pip install .
|
||||
umbraedit
|
||||
```
|
||||
|
||||
### Option 3: Build .deb Package
|
||||
|
||||
```bash
|
||||
tar xzf umbraedit-2026.11.1.tar.gz
|
||||
cd umbraedit-2026.11.1
|
||||
|
||||
# Build for Ubuntu Noble (24.04)
|
||||
python3 utils/build_debian.py --distro noble --build 1
|
||||
|
||||
# The .deb will be in dist_deb/
|
||||
sudo dpkg -i dist_deb/umbraedit_*_amd64.deb
|
||||
```
|
||||
|
||||
Available distro targets: `bookworm`, `trixie`, `noble`, `resolute`, `stonking`, `wilma`
|
||||
|
||||
### Option 4: Build AppImage
|
||||
|
||||
```bash
|
||||
pip install python-appimage
|
||||
sudo apt-get install appimagetool
|
||||
|
||||
tar xzf umbraedit-2026.11.1.tar.gz
|
||||
cd umbraedit-2026.11.1
|
||||
|
||||
python3 utils/build_appimage.py --linux ubuntu --arch amd64 --python 3.12
|
||||
|
||||
chmod +x dist_appimage/umbraedit-2026.11-amd64.AppImage
|
||||
./dist_appimage/umbraedit-2026.11-amd64.AppImage
|
||||
```
|
||||
|
||||
### Option 5: Build All Linux Packages
|
||||
|
||||
```bash
|
||||
tar xzf umbraedit-2026.11.1.tar.gz
|
||||
cd umbraedit-2026.11.1
|
||||
|
||||
python3 utils/build_all.py --platform linux --arch amd64
|
||||
```
|
||||
|
||||
## Project Storage
|
||||
|
||||
UmbraEdit projects are stored in plain folders with an `nwProject.nwx` file.
|
||||
The sample project included in the distribution can be used for testing:
|
||||
|
||||
```bash
|
||||
umbraedit # Opens the welcome dialog
|
||||
# Select "Sample Project" from the list, or browse to your .nwx file
|
||||
```
|
||||
|
||||
## Version
|
||||
|
||||
Current development version: **2026.11.0004**
|
||||
|
||||
## License
|
||||
|
||||
GPL-3.0-or-later AND Apache-2.0 AND ISC AND MIT
|
||||
|
||||
UmbraEdit is based on novelWrite 2026.02 by Veronica Berglyd Olsen
|
||||
(novelWriter.io), licenced under the same GPL v3.0 license.
|
||||
4383
CHANGELOG.md
@@ -0,0 +1,76 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as
|
||||
contributors and maintainers pledge to making participation in our project and
|
||||
our community a harassment-free experience for everyone, regardless of age, body
|
||||
size, disability, ethnicity, sex characteristics, gender identity and expression,
|
||||
level of experience, education, socio-economic status, nationality, personal
|
||||
appearance, race, religion, or sexual identity and orientation.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment
|
||||
include:
|
||||
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or
|
||||
advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or electronic
|
||||
address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Our Responsibilities
|
||||
|
||||
Project maintainers are responsible for clarifying the standards of acceptable
|
||||
behavior and are expected to take appropriate and fair corrective action in
|
||||
response to any instances of unacceptable behavior.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or
|
||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||
permanently any contributor for other behaviors that they deem inappropriate,
|
||||
threatening, offensive, or harmful.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies both within project spaces and in public spaces
|
||||
when an individual is representing the project or its community. Examples of
|
||||
representing a project or community include using an official project e-mail
|
||||
address, posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event. Representation of a project may be
|
||||
further defined and clarified by project maintainers.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported by contacting the project leader at issues (at) novelwriter.io. All
|
||||
complaints will be reviewed and investigated and will result in a response that
|
||||
is deemed necessary and appropriate to the circumstances. The project team is
|
||||
obligated to maintain confidentiality with regard to the reporter of an incident.
|
||||
Further details of specific enforcement policies may be posted separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good
|
||||
faith may face temporary or permanent repercussions as determined by other
|
||||
members of the project's leadership.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
||||
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
|
||||
For answers to common questions about this code of conduct, see
|
||||
https://www.contributor-covenant.org/faq
|
||||
|
||||
247
CONTRIBUTING.md
@@ -1,179 +1,122 @@
|
||||
# Contributing Guide
|
||||
|
||||
See also our [Code of Conduct](https://github.com/saga-soft/UmbraEdit?tab=coc-ov-file#code-of-conduct)
|
||||
and our [AI Policy](https://github.com/saga-soft/UmbraEdit/blob/main/AI_POLICY.md).
|
||||
When contributing to this repository, please first discuss the change you wish to make via the
|
||||
issue tracker or the discussions page with the owner of this repository. Especially if it is
|
||||
regarding new features. If you just want to make a minor correction, like fix a typo or similar,
|
||||
feel free to just make a pull request directly.
|
||||
|
||||
When contributing to this repository, please first discuss the change you wish to make with the
|
||||
maintainers. For new and complex ideas, it is better to open a discussion before adding a new
|
||||
feature request. If you just want to make a minor correction, like fix a typo or similar, feel free
|
||||
to just make a pull request directly.
|
||||
|
||||
**The following contributions are welcome:**
|
||||
The following contributions are welcome:
|
||||
|
||||
* Bugfixes for new or existing bugs. Please also report new bugs in the issue tracker even if you
|
||||
also provide a fix. It makes it easier to keep track of what has been fixed and when and to
|
||||
populate our changelog.
|
||||
* Translations made via the [Crowdin project page](https://crowdin.com/project/umbraedit).
|
||||
* Translations of the documentation. These need to use Sphinx i18n tooling. Please start a
|
||||
discussion before beginning such work as it requires some coordination.
|
||||
also provide a fix. It makes it easier to keep track of what has been fixed and when.
|
||||
* Translations via the [crowdin project page](https://crowdin.com/project/novelwriter).
|
||||
* Improvements to the documentation. Particularly if the documentation is unclear. Please don't
|
||||
make any larger changes to the documentation without discussing them with a maintainer first.
|
||||
make any larger changes to the documentation without discussing if with the maintainer first.
|
||||
* Adaptations, installation or packaging features targeting specific operating systems.
|
||||
* Using AI as a coding assistant is fine as long as the code is of good quality and the scope of
|
||||
change is small, but do not generate large chunks of code. Generated code is not only hard to
|
||||
maintain, but also poses licensing issues.
|
||||
|
||||
**Please do not:**
|
||||
Please do not:
|
||||
|
||||
* Make a pull request that restructures or reformats existing code. If you think some part of the
|
||||
* Make a pull request that restructures or reformats existing code. If you think some parts of the
|
||||
code could be improved, please make an issue thread or start a discussion. The same applies to
|
||||
any text document in the repository.
|
||||
* Make pull requests with AI generated code. This is not a project suitable for vibe coding.
|
||||
Outright slop will result in the account being blocked.
|
||||
|
||||
## Pull Requests
|
||||
|
||||
## Running from Source
|
||||
This project follows the [OneFlow](https://www.endoflineblog.com/oneflow-a-git-branching-model-and-workflow)
|
||||
model. The `main` branch is the default branch. For general changes, please make a new branch in
|
||||
your own fork from the current `main` branch. Do not make pull requests from your own `main`
|
||||
branch.
|
||||
|
||||
This project uses [uv](https://docs.astral.sh/uv/) to maintain dependencies. In order to run
|
||||
UmbraEdit directly from checked out source, simply call from the root folder with:
|
||||
**Note:** If your contribution is a bugfix for a specific version, please make a bugfix branch from
|
||||
the tag you want the fix to be applied to, not directly from the `main` branch. This is important.
|
||||
|
||||
```bash
|
||||
uv run umbraedit
|
||||
```
|
||||
Also check the following:
|
||||
|
||||
To set up a development environment with all needed dependencies, run:
|
||||
|
||||
```bash
|
||||
uv sync
|
||||
```
|
||||
|
||||
Many tasks, like building assets from source, are handled by the `pkgutils.py` helper tool.
|
||||
This tool requires no dependencies for most commands, so you can either run it directly with
|
||||
Python, or using `uv run`.
|
||||
|
||||
```bash
|
||||
python pkgutils.py --help
|
||||
```
|
||||
|
||||
The translation files needed at runtime can be built with:
|
||||
|
||||
```bash
|
||||
python pkgutils.py qtlrelease
|
||||
```
|
||||
|
||||
Default icon themes can be updated with:
|
||||
|
||||
```bash
|
||||
python pkgutils.py icons default
|
||||
```
|
||||
|
||||
|
||||
### Running Tests
|
||||
|
||||
* New code must not break any existing tests.
|
||||
* New code must come with tests that cover the code in full. This includes branch coverage. If the
|
||||
code has branches that only runs on some OSes, they only need to be covered when test are run on
|
||||
that OS. The test suite runs on Linux, Windows and MacOS.
|
||||
* It is ok to use `pragma` comments with `no cover` and `no branch` if the code is not expected to
|
||||
touch those areas or branches at runtime.
|
||||
|
||||
A helper script is provided for running tests. It simplifies coverage reporting and a few other
|
||||
things. Run the following to see all details:
|
||||
|
||||
```bash
|
||||
uv run run_tests.py --help
|
||||
```
|
||||
|
||||
For instance, this command will run all tests off screen (`-o`), generate a coverage XML report for
|
||||
your code editor (`-r`), and produce a terminal report with all missing lines and branches (`-l`).
|
||||
|
||||
```bash
|
||||
uv run run_tests.py -orl
|
||||
```
|
||||
|
||||
|
||||
## Picking the Correct Branch for a Pull Request
|
||||
|
||||
Pre-releases are generally made from the `main` branch, and full releases are always made from the
|
||||
`release` branch. If you are submitting a fix to a current release you must do so from the
|
||||
`release` branch. If you make such a fix on the `main` branch, **it cannot be included in a patch
|
||||
release**. This also applies to the documentation for the latest release published on the main
|
||||
website.
|
||||
|
||||
New features are only added in full releases, so a feature pull request must be made to the `main`
|
||||
branch. However, if the `main` branch is very close to a new full release, pull requests may not be
|
||||
merged until the release is completed.
|
||||
|
||||
This project uses GitHub milestones to plan releases, and only pull requests included in the
|
||||
current release cycle will be merged to `main`. Milestone tickets are not set in stone and are
|
||||
often moved to the next milestones.
|
||||
|
||||
|
||||
### Pull Request Check List
|
||||
|
||||
Make sure the pull request follows these rules:
|
||||
|
||||
* The `main` branch is the default branch. For general changes, please make a new branch in your
|
||||
own fork from the current `main` branch. Do not make pull requests from your copy of the `main`
|
||||
branch. The same applies to the `release` branch.
|
||||
* Make sure your code passes all tests and conforms to the style guide. You can check that the
|
||||
code generally conforms by running the Python linting tool `flake8` from the root of the project
|
||||
folder, although it doesn't check everything. The same check is also run on pull requests by the
|
||||
maintainer.
|
||||
* Please provide a description of the changes in the pull request under the summary section of the
|
||||
pull request template, and reference any related issues by providing the issue number. Do not
|
||||
post links to issue numbers as that breaks the integration. Stating the issue number on the form
|
||||
`Closes #1234` is enough.
|
||||
* Do not change the version number. This is done during the release process.
|
||||
* Make sure the formatting and linting tools have been run locally before the pull request is made.
|
||||
pull request template, and reference any related issues by providing the issue number.
|
||||
* Do not change the version number.
|
||||
* Do not submit files that were not actively changed but have otherwise been modifed. This is
|
||||
mostly an issue with translation files. The language tool may update all files in the `i18n`
|
||||
folder.
|
||||
|
||||
## Code of Conduct
|
||||
|
||||
## Code Style
|
||||
There is a code of conduct. Please follow it in all your interactions with the project.
|
||||
|
||||
This code base uses camelCase convention for function and variable names. This differs from the
|
||||
common convention of snake_case in Python. The reason for this is that UmbraEdit is built on the
|
||||
Qt framework, where everything is camelCase.
|
||||
### Our Pledge
|
||||
|
||||
Pretty much everything else regarding formatting is handled by the linter and formatter. This
|
||||
project uses [ruff](https://docs.astral.sh/ruff/) for linting and formatting and
|
||||
[pyright](https://github.com/microsoft/pyright) for type checking. The settings for these tools
|
||||
are defined in `pyproject.toml`, and any submitted code must pass the following three commands:
|
||||
In the interest of fostering an open and welcoming environment, we as contributors and maintainers
|
||||
pledge to making participation in our project and our community a harassment-free experience for
|
||||
everyone, regardless of age, body size, disability, ethnicity, gender identity and expression,
|
||||
level of experience, nationality, personal appearance, race, religion, or sexual identity and
|
||||
orientation.
|
||||
|
||||
Please see the [CODE_OF_CONDUCT](CODE_OF_CONDUCT.md) file for the full text.
|
||||
|
||||
## Code Style Guide
|
||||
|
||||
The source code of novelWriter broadly follows the [PEP8](https://www.python.org/dev/peps/pep-0008)
|
||||
style guide, but with a few exceptions. Some key points are listed below.
|
||||
|
||||
**Line Length:**
|
||||
|
||||
* Source code lines can extend to the upper limit of 99 characters allowed by PEP8. 79 characters
|
||||
is the recommended line length in PEP8, but this is often too restrictive. 99 characters are
|
||||
acceptable when that is more practical. Readability has priority. Generally, if a code statement
|
||||
requires multiple lines, the lines should wrap at 79 characters if possible. If wrapping can be
|
||||
avoided by going to 99, then that is generally preferrable.
|
||||
* For text files, the text should be wrapped at 99 character. The exception is markdown image tags
|
||||
and urls which can run past that limit.
|
||||
|
||||
**Variable and Function Names**
|
||||
|
||||
* PEP8 allows for camelCase for consistency with existing code. The Qt library uses camelCase, so
|
||||
the Python source code does too.
|
||||
* The exception to the above is for constants. They should always be in upper snake case, like PEP8
|
||||
states.
|
||||
|
||||
**Spaces, Indentation and Alignment**
|
||||
|
||||
* Only indentation by multiples of 4 spaces is allowed.
|
||||
* No trailing spaces should occur on any line in the source code, including empty lines.
|
||||
* Ideally, a function should end on the same indention level as it started. Exceptions are allowed
|
||||
if it makes the code easier to follow.
|
||||
* Aligning operators and attributes in columns with multiple spaces is not allowed by PEP8. The
|
||||
rule is relaxed a bit here. Alignment is allowed when populating large dictionaries or setting
|
||||
many class attributes. It does improve readability in such cases, but should not be overused.
|
||||
|
||||
### Linting with `flake8`
|
||||
|
||||
A good tool for checking Python code for errors and code style is `flake8`. The documentation is
|
||||
available [here](https://flake8.pycqa.org/en/latest/).
|
||||
|
||||
The `setup.cfg` file in the root of this project has the following settings for `flake8` that
|
||||
matches the above code style:
|
||||
```conf
|
||||
[flake8]
|
||||
ignore = E221,E226,E228,E241
|
||||
max-line-length = 99
|
||||
exclude = docs/*
|
||||
```
|
||||
|
||||
The command line equivalent, with reporting, is:
|
||||
```bash
|
||||
uv run ruff check
|
||||
uv run ruff format
|
||||
uv run pyright
|
||||
flake8 . --count --ignore E221,E226,E228,E241 --max-line-length=99 --show-source --statistics
|
||||
```
|
||||
|
||||
### Line Length
|
||||
Passing this check is required before contributions are merged. This is checked automatically when
|
||||
you make a pull request. You can run the `flake8` command locally to check beforehand. The full
|
||||
command will give you a detailed description of the code lines that do not conform to the standard.
|
||||
|
||||
* The line length of the source code is enforced by the formatter, and is set to 120 characters.
|
||||
Docstrings should be wrapped manually at 79 characters for better readability.
|
||||
* For text files, the text should be wrapped 120 character or less. The exception is Markdown image
|
||||
tags and URLs which can run past that limit.
|
||||
Two of the ignored errors are due to the relaxed restriction on column alignment, these are the
|
||||
E221 and E241 error codes.
|
||||
|
||||
|
||||
### Internationalisation
|
||||
|
||||
* All comments and docstrings in the code must be in English.
|
||||
* All text presented to the user must be wrapped in calls to Qt's translation framework, and the
|
||||
spelling of this text **must** be British English. US English spelling **is not allowed** for
|
||||
these strings. A US English translation is provided via the translation framework.
|
||||
* Commit descriptions and pull requests must also be in English.
|
||||
|
||||
|
||||
### License Headers and Credits
|
||||
|
||||
All code should add the license header on the exact format as used in other files. Update the title
|
||||
as needed, and the copyright line. The year should be the year the code module was first created.
|
||||
The default is:
|
||||
|
||||
```
|
||||
Copyright (C) <YEAR> <Original Author Name> and UmbraEdit contributors.
|
||||
```
|
||||
|
||||
For major changes to an existing file, don't touch the year, but you can append your name. By major
|
||||
contributions is meant new code, like added new classes or larger functions, not modifications. Use
|
||||
common sense since "UmbraEdit contributors" includes most modifications and changes.
|
||||
|
||||
```
|
||||
Copyright (C) <YEAR> <Original Author Name>, <Your Name> and UmbraEdit contributors.
|
||||
```
|
||||
|
||||
Make sure the `CREDITS.md` and `credits_en.htm` files are updated too if appropriate.
|
||||
The code E226 is ignored becuse it doesn't actually follow the
|
||||
[PEP8 recommendation](https://www.python.org/dev/peps/pep-0008/#other-recommendations)
|
||||
of grouping longer equations by operator precedence like `2*a + 3*b` instead of `a * a + 3 * b`.
|
||||
Generally, don't use spaces around `*`, `/` and `**`, but _do_ use spaces around `+` and `-`.
|
||||
The same applies to the modulo operator `%`, hence E228 is also ignored.
|
||||
|
||||
140
CREDITS.md
@@ -1,136 +1,42 @@
|
||||
# Credits
|
||||
|
||||
## Main Developer novelWriter
|
||||
## Main Developer
|
||||
|
||||
* Veronica Berglyd Olsen
|
||||
* Veronica Berglyd Olsen (@vkbo)
|
||||
|
||||
## Main Product Manager / Developer
|
||||
## Main Contributors
|
||||
|
||||
* B.D. Murphy
|
||||
|
||||
## Contributors
|
||||
|
||||
Larger contributions were made by:
|
||||
|
||||
* Early Concept: Marian Lückhof
|
||||
* Internationalisation: Bruno Meneguello
|
||||
* Setup and Packaging: Rachel Powers
|
||||
* Vim Mode: Alexis Dumelie
|
||||
* UmbraEdit Rebranding and Word DOCX/DOCM Import: B.D. Murphy
|
||||
|
||||
For other contributions, see the project's [Contributors](https://github.com/saga-soft/UmbraEdit/graphs/contributors) page.
|
||||
|
||||
## Artwork
|
||||
|
||||
The artwork on the Welcome dialog was generated with AI by B.D. Murphy. Reading print options through time.
|
||||
UmbraEdit icon by B.D. Murphy using AI.
|
||||
* Concept: Marian Lückhof (@Number042)
|
||||
* Internationalisation: Bruno Meneguello (@bkmeneguello)
|
||||
|
||||
## Translations
|
||||
|
||||
The default language is English (UK) with English (US) as an option. These are the original
|
||||
translators for the languages currently available:
|
||||
|
||||
* **Catalan:** Jaume Planas (jaumeplanas)
|
||||
* **Czech:** Tomáš Zmek (perteus)
|
||||
* **Dutch:** Martijn van der Kleijn (mvdkleijn)
|
||||
* **French:** Jan Lüdke (jyhelle)
|
||||
* **German:** Myian (HeyMyian)
|
||||
* **Italian:** Riccardo Mangili
|
||||
* **Japanese:** hebekeg
|
||||
* **Latin American Spanish:** Tommy Marplatt (tmarplatt)
|
||||
* **Norwegian:** Veronica Berglyd Olsen (vkbo)
|
||||
* **Polish:** Anna Maria Polak (Nauthiz)
|
||||
* **Portuguese:** Bruno Meneguello (bkmeneguello)
|
||||
* **Russian:** Konstantin Tan (k1kimosha)
|
||||
* **Simplified Chinese:** Qianzhi Long (longqzh)
|
||||
|
||||
Additional larger translation contributions:
|
||||
|
||||
* **Dutch:** Lise Blok (risingphoenix73)
|
||||
* **French:** Albert Aribaud (aaribaud)
|
||||
* **Portuguese:** Oli Maia (olimaia)
|
||||
|
||||
Translations of the documentation:
|
||||
|
||||
* **French:** Jean-Michel Heras (Karduin)
|
||||
|
||||
After the fork to UmbraEdit translations of text in the program are done via AI.
|
||||
* French: Jan Lüdke (@jyhelle)
|
||||
* Norwegian: Veronica Berglyd Olsen (@vkbo)
|
||||
* Portuguese: Bruno Meneguello (@bkmeneguello)
|
||||
* Simplified Chinese: Qianzhi Long (@longqzh)
|
||||
* Latin American Spanish: Tommy Marplatt (@tmarplatt)
|
||||
|
||||
## Libraries
|
||||
|
||||
The following libraries are dependencies of UmbraEdit:
|
||||
The following libraries are dependencies of novelWriter:
|
||||
|
||||
* **Qt6** by Qt Company
|
||||
* **PyQt6** by Riverbank Computing
|
||||
* **Enchant** by Dom Lachowicz
|
||||
* **PyEnchant** by Dimitri Merejkowsky
|
||||
* Qt5 by [Qt Company](https://www.qt.io/)
|
||||
* PyQt5 by [Riverbank Computing](https://www.riverbankcomputing.com/software/pyqt/)
|
||||
* lxml by [Martijn Faassen](https://lxml.de/)
|
||||
* Enchant by [Dom Lachowicz](https://abiword.github.io/enchant/)
|
||||
* PyEnchant by [Dimitri Merejkowsky](https://pyenchant.github.io/pyenchant/)
|
||||
|
||||
## Icon Themes
|
||||
## Assets
|
||||
|
||||
The default icon themes are subsets of icons from:
|
||||
Some of the assets bundled with novelWriter were adapted from the following sources:
|
||||
|
||||
* **Fluent UI** by Microsoft (MIT License)
|
||||
* **Lucide** by Cole Bemis and Lucide Contributors (ISC License)
|
||||
* **Material Symbols** by Google Inc (Apache 2.0)
|
||||
|
||||
## Colour Themes
|
||||
|
||||
Colour themes included with UmbraEdit were adapted from the following sources:
|
||||
|
||||
* **Aura** themes by Dalton Menezes
|
||||
* **B2T** themes by Bram de Haan
|
||||
* **B4T** themes by Bram de Haan
|
||||
* **Catppuccin** themes by Catppuccin Org
|
||||
* **Dracula** theme by Zeno Rocha
|
||||
* **Espresso** theme by Sainnhe Park and Antoine Cotten
|
||||
* **Everforest** themes by Sainnhe Park
|
||||
* **Horizon** themes by Jonathan Olaleye
|
||||
* **New Moon** theme by Tania Rascia
|
||||
* **Noctis** themes by Liviu Schera and contributors
|
||||
* **Nord** theme by Sven Greb
|
||||
* **Owl** themes by Sarah Drasner
|
||||
* **Primer** themes by GitHub, Inc. and Myian
|
||||
* **Rosé Pine** themes by Rosé Pine
|
||||
* **Snazzy Light** theme by Florian Reuschel
|
||||
* **Solarized** themes by Ethan Schoonover
|
||||
* **Tango** themes by the Tango Desktop Project
|
||||
* **Tomorrow** themes by Chris Kempson
|
||||
|
||||
Other themes were created for UmbraEdit:
|
||||
|
||||
* **Aura Bright** theme by Myian
|
||||
* **Blue Streak** themes by Veronica Berglyd Olsen
|
||||
* **Castle** themes by Myian
|
||||
* **Chalky Soil** theme by Myian
|
||||
* **Chernozem** theme by Myian
|
||||
* **Cyberpunk Night** theme by Anders Lemvigh
|
||||
* **Dark Arts** theme by Myian
|
||||
* **Floral** themes by Myian
|
||||
* **Friendly** themes by Myian
|
||||
* **Full Moon** theme by Myian
|
||||
* **Jewel Case** themes by Myian
|
||||
* **LCARS** theme by Veronica Berglyd Olsen
|
||||
* **Nordlicht** theme by Myian
|
||||
* **Otium** themes by Myian
|
||||
* **Paragon** theme by Myian
|
||||
* **Ruby** themes by Myian
|
||||
* **Selenium** themes by Myian
|
||||
* **Sepia** themes by Myian
|
||||
* **Sultana** themes by Myian
|
||||
* **Today** themes by Veronica Berglyd Olsen
|
||||
* **Vivid** themes by Myian
|
||||
* **Warpgate** theme by Myian
|
||||
* **Waterlily** themes by Myian
|
||||
|
||||
## Fonts
|
||||
|
||||
The font used for the main UmbraEdit logo, mimetype and text banners is Pridi.
|
||||
|
||||
* **Pridi** by Cadson Demak (Open Font License, Version 1.1)
|
||||
|
||||
--> Caladea <--
|
||||
* Typicons icons by Stephen Hutchings (CC BY-SA 4.0)
|
||||
* Tomorrow syntax themes by Chris Kempson (MIT License)
|
||||
* Owl syntax themes by Sarah Drasner (MIT License)
|
||||
* Solarized themes by Ethan Schoonover, added by @nullbasis (MIT License)
|
||||
|
||||
## Special Mentions
|
||||
|
||||
Additional thanks to John Blommers who was an early user and who has provided a lot of very useful
|
||||
Additional thanks to @johnblommers who was an early user and who has provided a lot of very useful
|
||||
feedback over the years.
|
||||
|
||||
29
MANIFEST.in
@@ -1,28 +1,7 @@
|
||||
include README.md
|
||||
include setup.py
|
||||
include LICENSE.md
|
||||
include CONTRIBUTING.md
|
||||
include CREDITS.md
|
||||
include CHANGELOG.md
|
||||
include AI_POLICY.md
|
||||
include pyproject.toml
|
||||
include UmbraEdit.py
|
||||
include pkgutils.py
|
||||
include run_tests.py
|
||||
include build-linux.sh
|
||||
|
||||
include setup/macos/*
|
||||
include setup/windows/*
|
||||
include setup/linux/*
|
||||
include setup/flatpak/*
|
||||
include setup/data/*
|
||||
include setup/appimage_launcher.sh
|
||||
|
||||
include utils/*.py
|
||||
include utils/build_*.py
|
||||
|
||||
recursive-include docs *
|
||||
recursive-include i18n *
|
||||
recursive-exclude *.pyc
|
||||
recursive-exclude __pycache__
|
||||
global-exclude .DS_Store
|
||||
global-exclude .gitkeep
|
||||
recursive-include setup *
|
||||
recursive-include novelwriter/assets *
|
||||
recursive-include sample *.nwx *.nwd
|
||||
|
||||
BIN
NW_Splash.png
|
Before Width: | Height: | Size: 19 KiB |
213
README.md
@@ -1,73 +1,192 @@
|
||||
# UmbraEdit
|
||||
# novelWriter
|
||||
|
||||
<img align="left" style="margin: 0 0 4px 0;" src="https://git.umbratools.com/umbragit/UmbraEdit/raw/main/umbraedit/assets/icons/umbraedit.svg">
|
||||
[](https://github.com/vkbo/novelWriter/actions/workflows/test_linux.yml)
|
||||
[](https://github.com/vkbo/novelWriter/actions/workflows/test_win.yml)
|
||||
[](https://github.com/vkbo/novelWriter/actions/workflows/test_mac.yml)
|
||||
[](https://github.com/vkbo/novelWriter/actions)
|
||||
[](https://codecov.io/gh/vkbo/novelWriter)
|
||||
[](https://novelwriter.readthedocs.io/en/latest/?badge=latest)
|
||||
[](https://github.com/vkbo/novelWriter/releases)
|
||||
[](https://pypi.org/project/novelWriter)
|
||||
[](https://pypi.org/project/novelWriter)
|
||||
[](https://crowdin.com/project/novelwriter)
|
||||
|
||||
UmbraEdit is a plain text editor designed for writing novels assembled from many smaller text
|
||||
<img align="left" style="margin: 0 16px 4px 0;" src="https://raw.githubusercontent.com/vkbo/novelWriter/main/setup/novelwriter.png">
|
||||
|
||||
novelWriter is a plain text editor designed for writing novels assembled from many smaller text
|
||||
documents. It uses a minimal formatting syntax inspired by Markdown, and adds a meta data syntax
|
||||
for comments, synopsis, and cross-referencing. It's designed to be a simple text editor that allows
|
||||
for easy organisation of text and notes, using human readable text files as storage for robustness.
|
||||
The project format is well suited both for version control software and file synchronisation tools.
|
||||
|
||||
UmbraEdit is based on novelWrite 2026.02 by Veronica Berglyd Olsen (novelWriter.io) and is
|
||||
licensed under the same GPL v3.0 license.
|
||||
The project storage is suitable for version control software, and also well suited for file
|
||||
synchronisation tools. All text is saved as plain text files with a meta data header. The core
|
||||
project structure is stored in a single project XML file. Other meta data is primarily saved as
|
||||
JSON files.
|
||||
|
||||
B.D. Murphy is modifying the original using AI to make it part of his Umbratools publishing system.
|
||||
The full documentation is available at
|
||||
[novelwriter.readthedocs.io](https://novelwriter.readthedocs.io).
|
||||
|
||||
The ideas:
|
||||
|
||||
1) Write the novel. Make it simple while writing. Formatting is later.
|
||||
2) Have the entire project together. Not the novel text here and metadata you need somewhere else. All together. 2.a) ePub, paperback (print pdf), audio all start with the same story text, but each needs something different. Put everything into one project ISBN, book blurb, search terms, genere/categories BISAC codes, cover, etc
|
||||
3) With everything together publishing is simpler
|
||||
4) The goal is to write (human written) a novel, then use AI to help with everything else. At the end of the process there will be ePub, Paperback/Hard cover, audio versions in 10 languages.
|
||||
|
||||
For more details, and how to install and use UmbraEdit, please see the main website and documentation.
|
||||
|
||||
This project is a fork of novelWrite. Taking the great start and extending it. I use AI to help.
|
||||
|
||||
**Project Links**
|
||||
|
||||
* Website: [UmbraEdit](https://umbratools.com/umbraedit)
|
||||
* Documentation: [UmbraEdit Docs](https://umbratools.com/umbraedit/docs)
|
||||
|
||||
This project is a fork of novelWrite. Taking the great start and extending it. I use AI to help._
|
||||
The full credits are listed in
|
||||
[CREDITS.md](https://github.com/vkbo/novelWriter/blob/main/CREDITS.md).
|
||||
|
||||
## Implementation
|
||||
|
||||
UmbraEdit is written in Python and uses Qt6 with PyQt6 Python binding as the UI framework. It
|
||||
runs on Linux, Windows and MacOS. It can in principle run on any Operating System that also
|
||||
supports Qt, PyQt and Python.
|
||||
The application is written in Python 3 (3.6+) using Qt5 and PyQt5 (5.3+). It is developed on Linux,
|
||||
but should in principle work fine on other operating systems as well as long as dependencies are
|
||||
met. It is regularly tested on Debian and Ubuntu Linux, Windows, and macOS.
|
||||
|
||||
<p align="center">
|
||||
<img width="80%" src="https://raw.githubusercontent.com/saga-soft/UmbraEdit/main/setup/screenshot.png">
|
||||
</p>
|
||||
## Installation
|
||||
|
||||
### Linux Mint, Ubuntu and Debian
|
||||
|
||||
The Releases page has a `.deb` package that should install on Mint, Ubuntu and Debian.
|
||||
|
||||
You can also use the novelWriter [PPA](https://launchpad.net/~vkbo/+archive/ubuntu/novelwriter).
|
||||
For more details, check the [Getting Started](https://novelwriter.readthedocs.io/en/latest/int_started.html)
|
||||
section in the documentation.
|
||||
|
||||
### Windows 10+
|
||||
|
||||
The Release page has a `setup.exe` file for Windows 10, that should also work on other Windows
|
||||
versions. The installer includes Python 3.10 and the library dependencies.
|
||||
|
||||
### Other Install Options
|
||||
|
||||
You can also download and install one of the minimal zip files from the
|
||||
[Releases](https://github.com/vkbo/novelWriter/releases) page or the
|
||||
[novelwriter.io](https://novelwriter.io/) website.
|
||||
The [Getting Started](https://novelwriter.readthedocs.io/en/latest/int_started.html) section of the
|
||||
documentation has detailed install instructions for these packages, and for installation via the
|
||||
Python Package Index.
|
||||
|
||||
## Project Contributions
|
||||
|
||||
Please don't make feature pull requests without first having discussed them with the maintainer.
|
||||
You can make a feature request in the [issues tracker](https://github.com/saga-soft/UmbraEdit/issues),
|
||||
or if the idea isn't fully formed, start a [discussion](https://github.com/saga-soft/UmbraEdit/discussions).
|
||||
Please also don't make pull requests to reformat or rewrite existing code unless there is a very
|
||||
good reason for doing so. Please do not submit AI generated content.
|
||||
See our [AI Policy](https://github.com/saga-soft/UmbraEdit/blob/main/AI_POLICY.md) for details.
|
||||
You can make a feature request in the issue tracker, or if the idea isn't fully formed, start a
|
||||
discussion on the discussion page. Please also don't make pull requests to reformat or rewrite
|
||||
existing code unless there is a very good reason for doing so.
|
||||
|
||||
Fixes and patches are welcome. Contributions related to packaging and installing UmbraEdit will
|
||||
also be appreciated. Before contributing any code, please read the full
|
||||
[Contributing Guide](https://github.com/saga-soft/UmbraEdit/blob/main/CONTRIBUTING.md).
|
||||
Fixes and patches are welcome. Contributions related to packaging and installing novelWriter will
|
||||
also be appreciated, but please make an issue or a discussion topic first. Before contributing any
|
||||
code, please also read the full
|
||||
[Contributing Guide](https://github.com/vkbo/novelWriter/blob/main/CONTRIBUTING.md).
|
||||
|
||||
## Original Credits
|
||||
### Translations
|
||||
|
||||
Project credits are available in [CREDITS.md](https://github.com/saga-soft/novelwriter/blob/main/CREDITS.md).
|
||||
New translations are always welcome. This project uses Crowdin to maintain translations, and you
|
||||
can contribute translations at the [Crowdin project page](https://crowdin.com/project/novelwriter).
|
||||
If you have any questions, feel free to post them to the
|
||||
[Translations of novelWriter](https://github.com/vkbo/novelWriter/issues/93) issue thread.
|
||||
|
||||
**Note:** New features and most pre-releases are made on the `main` branch. Full releases are made
|
||||
from the `release` branch. So if you're submitting a fix to a current release, **including changes
|
||||
to documentation**, they must be made to the `release` branch.
|
||||
For more details, and how to use Qt Linguist for translations, see the
|
||||
[i18n instructions](https://github.com/vkbo/novelWriter/blob/main/i18n/README.md).
|
||||
|
||||
## Key Features
|
||||
|
||||
Some key features of novelWriter are listed below. The
|
||||
[documentation](https://novelwriter.readthedocs.io) has a lot more information.
|
||||
|
||||
### Formatting Codes
|
||||
|
||||
Although novelWriter is a plain text editor, it uses a Markdown-like syntax to allow for a minimal
|
||||
set of formatting that is useful for the specific task of writing novels.
|
||||
|
||||
| Code | Usage | Description |
|
||||
|------------|----------|-------------|
|
||||
| `#` | Prefix | Headings level 1 to 4. |
|
||||
| `_` | Wrapped | Emphasised (italicised) text. |
|
||||
| `**` | Wrapped | Strongly emphasised (bold) text. |
|
||||
| `~~` | Wrapped | Strikethrough text. |
|
||||
| `%` | Prefix | A comment; does not count towards the word count.<sup>1</sup> |
|
||||
| `@` | Prefix | The following text is parsed as a keyword/value command for meta data. |
|
||||
| `>` | Prefix | The paragraph is indented one tab width from the left. |
|
||||
| `<` | Suffix | The paragraph is indented one tab width from the right. |
|
||||
| `>>` | Prefix | The paragraph is right-aligned. |
|
||||
| `<<` | Suffix | The paragraph is left-aligned. |
|
||||
| `>>`, `<<` | Wrapped | The paragraph is centred. |
|
||||
|
||||
<sup>1</sup> If the first word of the comment is `synopsis:`, the comment is indexed and treated as
|
||||
the synopsis for the section of text where it occurs. These synopsis comments can be used to build
|
||||
an outline and exported to external documents.
|
||||
|
||||
### Export Formats
|
||||
|
||||
The core export formats of novelWriter are Open Document and HTML5. Open Document is an open
|
||||
standard for office type documents that is supported by most office applications. See
|
||||
[Open Document > Application Support](https://en.wikipedia.org/wiki/OpenDocument#Application_support)
|
||||
for more details.
|
||||
|
||||
You can also export the entire project as a single novelWriter-markup document. These can later be
|
||||
imported again into novelWriter. In addition, printing and export to PDF is offered through the Qt
|
||||
library, although with limitations to formatting.
|
||||
|
||||
### Colour Themes
|
||||
|
||||
The editor has syntax highlighting for the features it supports, and includes a set of different
|
||||
syntax highlighting themes. Optional GUI themes are also available, including dark themes.
|
||||
|
||||
### Easy Organising of Project Files
|
||||
|
||||
The structure of the project is shown on the left hand side of the main window. Project files are
|
||||
organised into root folders, indicating what class of file they are. The most important root folder
|
||||
is the `Novel` folder, which contains all of the files that make up the novel itself. Each root
|
||||
folder can have subfolders. Subfolders have no impact on the final project structure, they are
|
||||
there for you to organise your files in whatever way you want.
|
||||
|
||||
The editor supports four levels of headings, which determine what level the following text belongs
|
||||
to. Headings of level one signify a book or partition title. Headings of level two signify the
|
||||
start of a new chapter. Headings of level three signify the start of a new scene. Headings of level
|
||||
four can be used internally in each scene to create separate sections.
|
||||
|
||||
See the [documentation](https://novelwriter.readthedocs.io) for further details.
|
||||
|
||||
### Project Notes
|
||||
|
||||
Supporting notes can be added for the story plot, characters, locations, story timeline, etc. These
|
||||
have their separate root folders and are optional to use.
|
||||
|
||||
### Visualisation of Story Elements
|
||||
|
||||
The different notes can be assigned tags, which other files can refer back to using `@`-prefixed
|
||||
meta keywords. This information can be used to display an outline of the story, showing where each
|
||||
scene connects to the plot, and which characters, etc. occur in them. In addition, the tags
|
||||
themselves are clickable in the document view pane, and control-clickable in the editor. They make
|
||||
it possible to quickly navigate between the documents while writing.
|
||||
|
||||
## Installing or Running from Source
|
||||
|
||||
If you want to run novelWriter directly from the source code, you must run the `novelWriter.py`
|
||||
file from command line.
|
||||
|
||||
Dependencies can generally be installed from PyPi with:
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
On Linux, the dependencies are generally available in the standard package repository.
|
||||
|
||||
For more details on running or installing from source, see
|
||||
[Other Setup Methods](https://novelwriter.readthedocs.io/en/latest/setup_other.html).
|
||||
|
||||
## Debugging
|
||||
|
||||
If you need to debug novelWriter, you must run it from the command line. It takes a few parameters,
|
||||
which can be listed with the switch `--help`. The `--info`, `--debug` or `--verbose` flags are
|
||||
particularly useful for increasing logging output for debugging.
|
||||
|
||||
## Licence
|
||||
|
||||
This is Open Source software, and UmbraEdit is licensed under GPLv3. See the
|
||||
This is Open Source software, and novelWriter is licenced under GPLv3. See the
|
||||
[GNU General Public License website](https://www.gnu.org/licenses/gpl-3.0.en.html) for more
|
||||
details, or consult the [License](https://github.com/saga-soft/UmbraEdit/blob/main/LICENSE.md)
|
||||
document. Bundled assets and their licenses are listed in the
|
||||
[Credits](https://github.com/saga-soft/UmbraEdit/blob/main/CREDITS.md) document.
|
||||
details, or consult the [LICENSE](https://github.com/vkbo/novelWriter/blob/main/LICENSE.md) file.
|
||||
|
||||
Bundled assets and their licences are listed in
|
||||
[CREDITS](https://github.com/vkbo/novelWriter/blob/main/CREDITS.md).
|
||||
|
||||
## Screenshots
|
||||
|
||||
**novelWriter with default system theme:**
|
||||

|
||||
|
||||
**novelWriter with dark theme:**
|
||||

|
||||
|
||||
157
RELEASE.md
@@ -1,157 +0,0 @@
|
||||
# UmbraEdit - Release Process
|
||||
|
||||
This document describes the release process for UmbraEdit, including versioning,
|
||||
platform support, build workflows, and publishing.
|
||||
|
||||
## Versioning
|
||||
|
||||
UmbraEdit uses a **YYYY/MM.P####** versioning scheme:
|
||||
|
||||
| Component | Meaning |
|
||||
|-----------|---------|
|
||||
| `YYYY` | Release year (e.g., 2026) |
|
||||
| `MM` | Release month (e.g., 11) |
|
||||
| `####` | Patch/build sequence (e.g., 0001) |
|
||||
|
||||
Examples:
|
||||
- `2026.11` - Major monthly release (November 2026)
|
||||
- `2026.11.0001` - First development build of November 2026
|
||||
- `2026.11.0002` - Second development build (e.g., new feature)
|
||||
|
||||
Git tags follow the format: `v2026.11`, `v2026.11.0001`, etc.
|
||||
|
||||
## Supported Platforms
|
||||
|
||||
| Platform | Architecture | Package Format | Build Host |
|
||||
|----------|-------------|----------------|------------|
|
||||
| Linux | amd64 | .deb, .rpm, AppImage | Linux |
|
||||
| Linux | arm64 | .deb, .rpm, AppImage | Linux (ARM64) |
|
||||
| macOS | arm64 | .dmg, .app | macOS (Apple Silicon) |
|
||||
| macOS | amd64 | .dmg, .app | macOS (Intel) |
|
||||
| Windows | amd64 | .msi, .exe | Windows |
|
||||
| Windows | arm64 | .msi, .exe | Windows (ARM64) |
|
||||
| iOS/iPadOS | arm64 | **NOT SUPPORTED** | N/A |
|
||||
|
||||
### iOS/iPadOS Support
|
||||
|
||||
UmbraEdit is **not available for iOS/iPadOS**. PyQt6 does not support iOS,
|
||||
and UmbraEdit requires a full desktop Qt environment with keyboard, mouse,
|
||||
and file system access. Porting to iOS would require a complete rewrite
|
||||
using SwiftUI or a different cross-platform framework.
|
||||
|
||||
Users on iPad should use UmbraEdit via a VNC/remote desktop connection to a
|
||||
desktop machine running UmbraEdit, or use a compatible web-based alternative.
|
||||
|
||||
## Release Workflow
|
||||
|
||||
### 1. Prepare Release
|
||||
|
||||
```bash
|
||||
# Ensure working tree is clean
|
||||
git status
|
||||
|
||||
# Update version in umbraedit/__init__.py
|
||||
# __version__ = "2026.12.0001"
|
||||
|
||||
# Update CHANGELOG.md with new release entry
|
||||
|
||||
# Commit and tag
|
||||
git add -A
|
||||
git commit -m "release: prepare v2026.12"
|
||||
git tag -a v2026.12 -m "Release v2026.12"
|
||||
git push origin main --tags
|
||||
```
|
||||
|
||||
### 2. Build All Platforms
|
||||
|
||||
On each target platform, run:
|
||||
|
||||
```bash
|
||||
# Clone the tagged release
|
||||
git clone https://git.umbratools.com/umbragit/UmbraEdit.git
|
||||
cd UmbraEdit
|
||||
git checkout v2026.12
|
||||
|
||||
# Build all packages for this platform
|
||||
python utils/build_all.py --platform <platform> --arch <arch>
|
||||
```
|
||||
|
||||
Available platforms: `linux`, `macos`, `windows`
|
||||
Available architectures: `amd64`, `arm64`
|
||||
|
||||
### 3. Publish
|
||||
|
||||
Upload all build artifacts to the release server:
|
||||
|
||||
```bash
|
||||
# Example: upload to Gitea releases
|
||||
# Files to upload:
|
||||
# Linux: dist_deb/umbraedit_*.deb, dist_appimage/*.AppImage
|
||||
# macOS: dist_macos/umbraedit-*.dmg
|
||||
# Windows: dist_win/umbraedit-*.exe, dist_win/umbraedit-*.msi
|
||||
# Source: dist/umbraedit-*.tar.gz, dist/umbraedit-*.whl
|
||||
```
|
||||
|
||||
Create a release on Gitea/GitHub and attach all artifacts.
|
||||
|
||||
## Build Artifacts
|
||||
|
||||
Each platform produces the following artifacts:
|
||||
|
||||
### Linux (.deb + AppImage)
|
||||
|
||||
| File | Location | Description |
|
||||
|------|----------|-------------|
|
||||
| `umbraedit_<version>_amd64.deb` | `dist_deb/` | Debian package |
|
||||
| `umbraedit-<version>-amd64.AppImage` | `dist_appimage/` | Portable AppImage |
|
||||
|
||||
### macOS (.dmg + .app)
|
||||
|
||||
| File | Location | Description |
|
||||
|------|----------|-------------|
|
||||
| `umbraedit-<version>-arm64.dmg` | `dist_macos/` | macOS disk image |
|
||||
| `UmbraEdit.app` | inside .dmg | macOS application bundle |
|
||||
|
||||
### Windows (.exe + .msi)
|
||||
|
||||
| File | Location | Description |
|
||||
|------|----------|-------------|
|
||||
| `umbraedit-<version>-amd64.exe` | `dist_win/` | Windows installer |
|
||||
| `umbraedit-<version>-amd64.msi` | `dist_win/` | Windows MSI installer |
|
||||
|
||||
### Source
|
||||
|
||||
| File | Location | Description |
|
||||
|------|----------|-------------|
|
||||
| `umbraedit-<version>.tar.gz` | `dist/` | Source tarball |
|
||||
| `umbraedit-<version>-py3-none-any.whl` | `dist/` | Pure Python wheel |
|
||||
|
||||
## Build Scripts
|
||||
|
||||
| Script | Purpose |
|
||||
|--------|---------|
|
||||
| `utils/build_all.py` | Unified build orchestrator for all platforms |
|
||||
| `utils/build_debian.py` | Debian/Ubuntu .deb package builder |
|
||||
| `utils/build_appimage.py` | AppImage builder |
|
||||
| `utils/build_windows.py` | Windows installer builder |
|
||||
| `setup/macos/build.sh` | macOS .dmg builder |
|
||||
|
||||
## Release Checklist
|
||||
|
||||
- [ ] Update version in `umbraedit/__init__.py`
|
||||
- [ ] Update `CHANGELOG.md` with release notes
|
||||
- [ ] Tag release: `git tag -a vYYYY.MM -m "Release vYYYY.MM"`
|
||||
- [ ] Push tag: `git push origin vYYYY.MM`
|
||||
- [ ] Build packages for all platforms
|
||||
- [ ] Test installation on each platform
|
||||
- [ ] Create release on Gitea/GitHub
|
||||
- [ ] Attach all build artifacts
|
||||
- [ ] Publish release notes
|
||||
- [ ] Announce release
|
||||
|
||||
## Credits
|
||||
|
||||
UmbraEdit is based on novelWrite 2026.02 by Veronica Berglyd Olsen
|
||||
(novelWriter.io), licenced under the same GPL v3.0 license.
|
||||
|
||||
Current development lead: B.D. Murphy
|
||||
213
UMBRAEDIT.md
@@ -1,213 +0,0 @@
|
||||
# UmbraEdit — Project Scan & Structure
|
||||
|
||||
Copyright (C) 2026 B.D. Murphy and novelWriter contributors.
|
||||
Documentation for the UmbraEdit project (renamed from novelWriter).
|
||||
|
||||
This document is a structural scan of the **UmbraEdit** codebase. It is intended for developers who want to modify or extend the project.
|
||||
|
||||
> UmbraEdit was created by cloning **novelWriter** (vkbo/saga-soft) into this folder and renaming the project to `UmbraEdit`. The full upstream git history is preserved (see §6).
|
||||
|
||||
---
|
||||
|
||||
## 1. Overview
|
||||
|
||||
| Property | Value |
|
||||
|---|---|
|
||||
| **Project name** | UmbraEdit |
|
||||
| **Origin** | Renamed/rebased from [novelWriter](https://github.com/vkbo/novelWriter) (vkbo / saga-soft) |
|
||||
| **Inherited version** | 26.3b1 (novelWriter v26 series; see `umbraedit/__init__.py`) |
|
||||
| **Base version** | Based on novelWrite 2026.02 by Veronica Berglyd Olsen (novelWriter.io), GPL v3.0 |
|
||||
| **Language** | Python 3.11+ |
|
||||
| **UI framework** | Qt6 via PyQt6 |
|
||||
| **Platforms** | Linux, Windows, macOS |
|
||||
| **Storage model** | Plain-text project files (one document per scene + a project XML), well suited to Git and file-sync tools |
|
||||
| **Formatting** | Minimal Markdown-like syntax plus a metadata syntax for comments, synopsis, and cross-references |
|
||||
| **License** | `GPL-3.0-or-later AND Apache-2.0 AND ISC AND MIT` (see `pyproject.toml`, `LICENSE.md`) |
|
||||
| **Entry point** | `UmbraEdit.py` → `umbraedit:main()` |
|
||||
|
||||
**Core idea:** a novel is built from many small plain-text documents organised in a binder/tree, with a composing editor and a compile/export step (DOCX, EPUB, HTML, ODT, Markdown, raw text, QDoc).
|
||||
|
||||
---
|
||||
|
||||
## 2. Repository layout (top level)
|
||||
|
||||
```
|
||||
UmbraEdit/ <- this folder (was novelWriter2)
|
||||
├── UmbraEdit.py <- application start script (imports umbraedit, calls main)
|
||||
├── pyproject.toml <- project metadata, dependencies, ruff/pytest config
|
||||
├── uv.lock <- dependency lockfile (regenerate if deps change)
|
||||
├── run_tests.py <- pytest runner wrapper
|
||||
├── pkgutils.py <- packaging / i18n utility script
|
||||
├── README.md <- user-facing project page (mechanically renamed to UmbraEdit)
|
||||
├── LICENSE.md
|
||||
├── CHANGELOG.md <- historical novelWriter changelog (retains original attribution)
|
||||
├── CONTRIBUTING.md
|
||||
├── CREDITS.md
|
||||
├── AI_POLICY.md
|
||||
├── .gitignore
|
||||
├── .env.example
|
||||
├── docs/ <- Sphinx documentation source
|
||||
├── i18n/ <- Qt translation sources (ue_XX.ts) — compiled .qm are gitignored
|
||||
├── sample/ <- sample novel project (.nwx + content)
|
||||
├── setup/ <- packaging: deb, windows, flatpak, macOS, appimage, icons
|
||||
├── tests/ <- pytest suite (core, editor, gui, manuscript, models, story, text, tools, …)
|
||||
├── umbraedit/ <- main Python package (was novelwriter/)
|
||||
└── utils/ <- build scripts (appimage, debian, flatpak, pypi, windows, assets, docs)
|
||||
```
|
||||
|
||||
**Note:** `AGENTS.md` is gitignored by this project (`.gitignore` line 68). This scan lives in `UMBRAEDIT.md` instead.
|
||||
|
||||
---
|
||||
|
||||
## 3. Package layout — `umbraedit/`
|
||||
|
||||
| Module / package | Responsibility |
|
||||
|---|---|
|
||||
| `__init__.py` | Application bootstrap, `__version__`, `main()` entry |
|
||||
| `config.py` | Runtime configuration, paths, locale/i18n loading (`_ueLangPath`) |
|
||||
| `constants.py` | Application-wide constants |
|
||||
| `shared.py` | Shared data / singleton state |
|
||||
| `enum.py`, `types.py`, `error.py` | Enums, shared types, error handling |
|
||||
| `splash.py` | Splash screen |
|
||||
| `guimain.py` | Main window / GUI assembly |
|
||||
| `core/` | Project model: project, projectdata, projectxml, tree, item, document, storage, sessions, index, indexdata, projectsearch, spellcheck, status, options, coretools |
|
||||
| `editor/` | The composing editor: editor, editordocument, highlighter, history, hovercard, header/footer, toolbars, viewer, search, completion, vim mode |
|
||||
| `gui/` | Widgets/views: main menu, novel tree, project tree, sidebar, status bar, item details, search, theme |
|
||||
| `manuscript/` | Compile/export: manuscript build, document build, settings |
|
||||
| `models/` | Qt item models: item, novel, outline, search |
|
||||
| `story/` | Outline/story view, story settings |
|
||||
| `text/` | Text processing: counting, patterns, formats, autoreplace |
|
||||
| `tools/` | Dictionaries, lorem ipsum, welcome, writing stats |
|
||||
| `formats/` | Import/export filters: to/from DOCX, EPUB, HTML, ODT, Markdown, QDoc, raw text, TOML, QDoc |
|
||||
| `dialogs/` | Preferences, project settings, about, split/merge, labels, links, quotes, word list |
|
||||
| `extensions/` | Custom widgets: tab widget, switch, progress bars, event filters, etc. |
|
||||
| `assets/` | Icons, images, themes (`.toml`), i18n project JSON, manual, credits |
|
||||
|
||||
---
|
||||
|
||||
## 4. How to build and run
|
||||
|
||||
### Requirements
|
||||
- Python ≥ 3.11 (system Python 3.9.6 is **too old** — `match`/`case` syntax requires 3.10+)
|
||||
- `pyqt6>=6.4`, `pyenchant>=3.3.0`
|
||||
- macOS only: `pyobjc-framework-Cocoa`
|
||||
|
||||
### Run the application
|
||||
```bash
|
||||
cd /Volumes/1TB_APL_Storage/UmbraEdit
|
||||
python3 UmbraEdit.py
|
||||
# or, with the package on PYTHONPATH:
|
||||
python3 -c "import umbraedit; umbraedit.main()"
|
||||
```
|
||||
|
||||
### Syntax check (Python 3.11+)
|
||||
```bash
|
||||
/Volumes/Dock/worstauthor/.local/bin/python3.11 -m py_compile umbraedit/*.py umbraedit/**/*.py
|
||||
```
|
||||
|
||||
### Tests
|
||||
```bash
|
||||
python3 run_tests.py # full pytest suite
|
||||
python3 run_tests.py -m core # run a test marker group
|
||||
```
|
||||
Test configuration lives in `pyproject.toml` (`[tool.pytest.ini_options]`, testpaths=`tests`).
|
||||
|
||||
### Linting
|
||||
The project uses **ruff** (see `[tool.ruff]` in `pyproject.toml`) and **pyright**.
|
||||
|
||||
### Packaging
|
||||
See `setup/` and `utils/`:
|
||||
- `utils/build_debian.py`, `build_windows.py`, `build_flatpak.py`, `build_appimage.py`, `build_pypi.py`
|
||||
- `setup/windows/`, `setup/macos/`, `setup/debian/`, `setup/flatpak/`
|
||||
|
||||
---
|
||||
|
||||
## 5. i18n (translations)
|
||||
|
||||
- Translation sources: `i18n/ue_XX.ts` (renamed from `nw_XX.ts`)
|
||||
- Compiled `.qm` files are **gitignored** (`i18n/*.qm`, `/umbraedit/assets/i18n/*.qm`) and generated at build time
|
||||
- `umbraedit/config.py` loads `ue_<locale>.qm` from `_ueLangPath` (`umbraedit/assets/i18n`)
|
||||
- Add a new language: create `i18n/ue_XX.ts` and regenerate the `.qm` with Qt Linguist / `lrelease`
|
||||
|
||||
---
|
||||
|
||||
## 6. Git system & Gitea publishing
|
||||
|
||||
### Current remote state
|
||||
```
|
||||
upstream https://github.com/vkbo/novelWriter.git (original novelWriter, preserved as reference)
|
||||
```
|
||||
There is **no `origin`** yet.
|
||||
|
||||
### What was done in this session
|
||||
1. Cloned `https://github.com/vkbo/novelWriter.git` into this folder (`novelWriter2`).
|
||||
2. Renamed the project `novelWriter` → `UmbraEdit` (package `novelwriter` → `umbraedit`, entry `novelWriter.py` → `UmbraEdit.py`, i18n `nw_*.ts` → `ue_*.ts`, packaging files, all imports/docs/tests/workflows).
|
||||
3. Committed the rename:
|
||||
- `70d74e675 chore: rename project from novelWriter to UmbraEdit` (474 files, all renames detected by git)
|
||||
4. Archived the previous UmbraEdit (Rust/Tauri, pre-implementation spec project) preserving its git history:
|
||||
- `/Volumes/1TB_APL_Storage/Archive/UmbraEdit_archived_20261105/`
|
||||
5. Working tree is clean; branch is `main`.
|
||||
|
||||
### To publish as UmbraEdit on your Gitea server
|
||||
A Gitea credential is **not** configured in this environment, and the Gitea server URL is not known yet, so `origin` was intentionally left unset. When ready:
|
||||
|
||||
```bash
|
||||
# 1. Create the "UmbraEdit" repository on your Gitea server first
|
||||
# 2. Add it as origin
|
||||
git remote add origin <GITEA_URL>/UmbraEdit.git
|
||||
|
||||
# 3. Push
|
||||
git push -u origin main
|
||||
|
||||
# 4. (Optional) keep pulling upstream novelWriter improvements
|
||||
git fetch upstream
|
||||
git merge upstream/main # or cherry-pick as desired
|
||||
```
|
||||
|
||||
### Project URLs to update
|
||||
`README.md` and `pyproject.toml` currently carry mechanically-renamed GitHub URLs
|
||||
(`https://github.com/saga-soft/UmbraEdit`, etc.). Before publishing, replace these
|
||||
with your Gitee instance URLs, e.g.:
|
||||
- Repository → `https://<gitea>/<owner>/UmbraEdit`
|
||||
- Issues → `https://<gitea>/<owner>/UmbraEdit/issues`
|
||||
- Homepage / Documentation → your UmbraEdit docs site
|
||||
|
||||
---
|
||||
|
||||
## 7. Extension guidance (adding features)
|
||||
|
||||
The codebase is organised by concern, which makes it straightforward to extend:
|
||||
|
||||
| To add… | Touch… |
|
||||
|---|---|
|
||||
| New editor feature / syntax highlighting | `umbraedit/editor/` (editor, highlighter, history) |
|
||||
| New project-tree / binder operation | `umbraedit/core/` (tree, project, projectdata, projectxml) |
|
||||
| New import/export format | `umbraedit/formats/` (add a `toXxx` / `fromXxx` module) |
|
||||
| New settings / preferences UI | `umbraedit/dialogs/preferences.py`, `umbraedit/config.py` |
|
||||
| New view / dock panel | `umbraedit/gui/`, `umbraedit/guimain.py` |
|
||||
| New data model / Qt model | `umbraedit/models/`, `umbraedit/core/item.py` |
|
||||
| New compile/export target | `umbraedit/manuscript/` + a format module |
|
||||
| New theme | `umbraedit/assets/themes/*.toml` |
|
||||
| New translation | `i18n/ue_XX.ts` (§5) |
|
||||
|
||||
### Recommended workflow for new features
|
||||
1. Create a feature branch off `main`: `git checkout -b feature/<name>`
|
||||
2. Implement + add tests under `tests/` mirroring the source layout
|
||||
3. Run `python3 run_tests.py` and `ruff` lint
|
||||
4. Commit on the feature branch, then merge to `main`
|
||||
5. Never let a week of work sit uncommitted (per project convention)
|
||||
|
||||
---
|
||||
|
||||
## 8. Files intentionally left as-is
|
||||
|
||||
| File | Reason |
|
||||
|---|---|
|
||||
| `uv.lock` | Dependency lockfile; still references `novelwriter` — regenerate (`uv lock`) if dependencies change |
|
||||
| `setup/windows/novelWriter.exe` | Binary executable |
|
||||
| `umbraedit/assets/images/welcome.webp` | Binary image (may still render "novelWriter" text) |
|
||||
| `CHANGELOG.md`, `CREDITS.md` | Historical records retaining original novelWriter attribution |
|
||||
|
||||
---
|
||||
|
||||
*Generated as part of the UmbraEdit project setup. Scan date: 2026-11-05.*
|
||||
@@ -1,245 +0,0 @@
|
||||
# UmbraEdit — Toolchain & Dependency Update Plan
|
||||
|
||||
Copyright (C) 2026 B.D. Murphy and novelWriter contributors.
|
||||
Plan for upgrading UmbraEdit (Python/PyQt6) toolchain and dependencies.
|
||||
|
||||
**Goal:** Bring UmbraEdit (Python/PyQt6) up to the latest stable versions of its tools and dependencies, starting from the current baseline.
|
||||
|
||||
**Baseline (as of 2026-11-05):**
|
||||
- System Python: 3.9.6 (`/usr/bin/python3`) — **below** the project's `requires-python >=3.11`
|
||||
- Available runtimes: Python 3.11.15, 3.12.13 (via `uv` in `~/.local/bin`)
|
||||
- `uv`: 0.11.7 (2026-04-15) — outdated
|
||||
- PyQt6: not yet installed in the 3.11 environment
|
||||
- `pyproject.toml` deps: `pyqt6>=6.4`, `pyenchant>=3.3.0`, `pyobjc-framework-Cocoa` (darwin)
|
||||
- Lockfile: `uv.lock` (references `novelwriter` package name — will need regen)
|
||||
|
||||
---
|
||||
|
||||
## 1. Target Versions
|
||||
|
||||
| Tool | Current | Target | Source |
|
||||
|---|---|---|---|
|
||||
| Python runtime | 3.9.6 (system) | 3.12.x (latest 3.12) or 3.13.x | `uv` / python.org |
|
||||
| PyQt6 | not installed | latest 6.x | PyPI |
|
||||
| pyenchant | >=3.3.0 | latest 3.x | PyPI |
|
||||
| pyobjc-framework-Cocoa | pinned by pyproject | latest (macOS only) | PyPI |
|
||||
| uv | 0.11.7 | latest | github.com/astral-sh/uv |
|
||||
| ruff | (in `uv.lock`) | latest | PyPI |
|
||||
| pyright | (in `uv.lock`) | latest | npm/PyPI |
|
||||
| pytest | (in `uv.lock`) | latest 8.x | PyPI |
|
||||
| pytest-qt | (in `uv.lock`) | latest | PyPI |
|
||||
| coverage | (in `uv.lock`) | latest | PyPI |
|
||||
| Sphinx + theme | (in `uv.lock`) | latest | PyPI |
|
||||
| setuptools | 82.0.1 | latest | PyPI |
|
||||
| pip | 26.0.1 | latest | ensure via `uv` |
|
||||
|
||||
> Prefer Python **3.12** as the primary target (mature, PyQt6 wheels widely available). Keep **3.11** as a secondary CI matrix entry since `requires-python` is `>=3.11`.
|
||||
|
||||
---
|
||||
|
||||
## 2. Phased Execution
|
||||
|
||||
### Phase 0 — Preparation & Safety
|
||||
1. Ensure working tree is clean and all changes committed on `main` (already done).
|
||||
2. Tag the current state as a rollback point:
|
||||
```bash
|
||||
git tag umbraedit/pre-toolchain-update
|
||||
git push origin umbraedit/pre-toolchain-update
|
||||
```
|
||||
3. Record current working commands (`python3 UmbraEdit.py`, test runner) so you can compare before/after.
|
||||
4. Back up `uv.lock` and `pyproject.toml`.
|
||||
|
||||
### Phase 1 — Upgrade `uv` and Python runtimes
|
||||
1. Upgrade `uv` itself:
|
||||
```bash
|
||||
uv self upgrade
|
||||
# or: curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
```
|
||||
2. Install the target Python(s) via `uv` (so they are isolated and reproducible):
|
||||
```bash
|
||||
uv python install 3.12
|
||||
uv python install 3.11 # keep for CI matrix
|
||||
uv python list
|
||||
uv python pin 3.12 # sets default for this project (writes .python-version)
|
||||
```
|
||||
3. Verify:
|
||||
```bash
|
||||
uv run python --version # should report 3.12.x
|
||||
```
|
||||
|
||||
### Phase 2 — Upgrade core runtime dependencies
|
||||
Create a fresh virtual environment with the target Python and install the project's runtime deps at their latest compatible versions:
|
||||
|
||||
```bash
|
||||
cd /Volumes/1TB_APL_Storage/UmbraEdit
|
||||
uv venv --python 3.12
|
||||
uv pip install "pyqt6>=6.4" "pyenchant>=3.3.0"
|
||||
# macOS only:
|
||||
uv pip install "pyobjc-framework-Cocoa"
|
||||
```
|
||||
|
||||
Then:
|
||||
1. Run the app to confirm it starts:
|
||||
```bash
|
||||
uv run python UmbraEdit.py
|
||||
# or, after venv activation:
|
||||
python UmbraEdit.py
|
||||
```
|
||||
2. If `pyqt6` wheels fail on the target Python, fall back to 3.11 or file an issue.
|
||||
|
||||
### Phase 3 — Upgrade build / lint / test tooling
|
||||
Update the dependency groups in `pyproject.toml` (`build`, `docs`, `test`, `lint`) to latest, then sync:
|
||||
|
||||
```toml
|
||||
[dependency-groups]
|
||||
dev = [
|
||||
{ include-group = "build" },
|
||||
{ include-group = "docs" },
|
||||
{ include-group = "test" },
|
||||
{ include-group = "lint" },
|
||||
]
|
||||
build = ["pyyaml", "tzdata; sys_platform == 'win32'"]
|
||||
docs = [
|
||||
"docutils>=0.17.1",
|
||||
"pygments>=2.7",
|
||||
"sphinx-book-theme",
|
||||
"sphinx-copybutton",
|
||||
"sphinx-design",
|
||||
"sphinx-favicon",
|
||||
"sphinx-intl",
|
||||
"sphinx>=5.0",
|
||||
]
|
||||
test = [
|
||||
"coverage>=7.16.0",
|
||||
"pytest-qt",
|
||||
"pytest-timeout",
|
||||
"pytest>=6.0.0",
|
||||
"tzdata; sys_platform == 'win32'",
|
||||
]
|
||||
lint = ["pyright", "ruff"]
|
||||
```
|
||||
|
||||
Suggested edits:
|
||||
- Bump `pytest>=6.0.0` → `pytest>=8.0` (check PyPI for latest 8.x)
|
||||
- Bump `coverage>=7.16.0` → latest
|
||||
- Bump `sphinx>=5.0` → latest 7.x/8.x
|
||||
- Keep `ruff` and `pyright` unpinned or with generous lower bounds so `uv lock` resolves latest
|
||||
|
||||
Then sync:
|
||||
```bash
|
||||
uv lock --upgrade # resolve all groups to latest
|
||||
uv sync --all-groups # create .venv with everything
|
||||
```
|
||||
|
||||
### Phase 4 — Regenerate `uv.lock`
|
||||
`uv.lock` currently references the old `novelwriter` package name and is stale.
|
||||
```bash
|
||||
uv lock --upgrade
|
||||
git diff uv.lock # review before committing
|
||||
```
|
||||
Commit the regenerated lockfile with the toolchain update.
|
||||
|
||||
### Phase 5 — Update `requires-python` and classifiers (optional)
|
||||
If you want to drop 3.11 and standardize on 3.12+:
|
||||
```toml
|
||||
requires-python = ">=3.12"
|
||||
```
|
||||
And update classifiers accordingly. Otherwise keep `>=3.11` and test both 3.11 and 3.12 in CI.
|
||||
|
||||
### Phase 6 — Update Gitea CI workflows
|
||||
The `.github/workflows/*.yml` files reference Python setup steps. Update them to:
|
||||
- Use `actions/setup-python` with `python-version: ["3.11", "3.12"]` (or your Gitea Actions equivalent)
|
||||
- Install via `uv sync --all-groups` instead of `pip install -e .`
|
||||
- Run `uv run ruff check`, `uv run pyright`, `uv run pytest`
|
||||
|
||||
If your Gitea instance uses Gitea Actions, mirror the same matrix. If not, update the workflows to call `uv` explicitly.
|
||||
|
||||
### Phase 7 — Packaging scripts review
|
||||
The `utils/` build scripts (`build_appimage.py`, `build_debian.py`, `build_flatpak.py`, `build_pypi.py`, `build_windows.py`) and `setup/` packaging may pin Python/Qt versions. Check each for:
|
||||
- Hardcoded `python3` → should target the new runtime
|
||||
- `qt_version = "6.11"` in `[tool.novelwriter.build] flatpak` → verify against latest Qt6
|
||||
- `pyqt6>=6.4` lower bound → keep or raise
|
||||
|
||||
### Phase 8 — Validation
|
||||
1. **Syntax/compile:** `uv run python -m py_compile umbraedit/ tests/ utils/`
|
||||
2. **Import smoke:** `uv run python -c "import umbraedit; umbraedit.main(['--help'])"`
|
||||
3. **Lint:** `uv run ruff check .` and `uv run pyright`
|
||||
4. **Tests:** `uv run pytest` (or `uv run python run_tests.py`)
|
||||
5. **App launch:** `uv run python UmbraEdit.py` — confirm main window opens
|
||||
6. **Export formats:** exercise DOCX/EPUB/HTML/ODT export paths if sample data exists
|
||||
|
||||
### Phase 9 — Commit & publish
|
||||
```bash
|
||||
git add -A
|
||||
git commit -m "chore: upgrade toolchain to Python 3.12 and latest deps
|
||||
|
||||
- Upgrade uv and pin Python 3.12 via .python-version
|
||||
- Refresh pyproject.toml dependency groups to latest compatible versions
|
||||
- Regenerate uv.lock
|
||||
- Update Gitea CI workflows for uv + Python 3.11/3.12 matrix
|
||||
- Review packaging scripts for hardcoded python/qt versions"
|
||||
git push origin main
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Rollback Plan
|
||||
|
||||
If anything breaks after the update:
|
||||
|
||||
```bash
|
||||
# Restore previous state
|
||||
git checkout umbraedit/pre-toolchain-update .
|
||||
# or reset hard to the tag
|
||||
git reset --hard umbraedit/pre-toolchain-update
|
||||
git push origin main --force # only if already pushed and you need to undo
|
||||
```
|
||||
|
||||
Also keep the old system Python 3.9.6 available (do not remove `/usr/bin/python3`), and keep the `upstream` remote pointing at the original novelWriter for reference.
|
||||
|
||||
---
|
||||
|
||||
## 4. Recommended Command Sequence (copy-paste ready)
|
||||
|
||||
```bash
|
||||
cd /Volumes/1TB_APL_Storage/UmbraEdit
|
||||
|
||||
# 0. Tag rollback point
|
||||
git tag umbraedit/pre-toolchain-update
|
||||
git push origin umbraedit/pre-toolchain-update
|
||||
|
||||
# 1. Upgrade uv and pin Python 3.12
|
||||
uv self upgrade
|
||||
uv python install 3.12
|
||||
uv python pin 3.12
|
||||
uv run python --version
|
||||
|
||||
# 2. Create venv and install runtime deps at latest
|
||||
uv venv --python 3.12
|
||||
uv pip install "pyqt6>=6.4" "pyenchant>=3.3.0"
|
||||
|
||||
# 3. Smoke-test the app
|
||||
uv run python UmbraEdit.py
|
||||
|
||||
# 4. Sync dev toolchains (lint/test/docs)
|
||||
uv sync --all-groups
|
||||
|
||||
# 5. Regenerate lockfile
|
||||
uv lock --upgrade
|
||||
git diff uv.lock | head -100
|
||||
|
||||
# 6. Validate
|
||||
uv run python -m py_compile umbraedit/ tests/ utils/
|
||||
uv run ruff check .
|
||||
uv run pytest
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Notes & Risks
|
||||
|
||||
- **PyQt6 on Python 3.13:** Wheels may lag; if 3.13 is required, verify PyQt6 availability first. 3.12 is the safer target.
|
||||
- **`pyobjc-framework-Cocoa`:** macOS-only; only install/test on darwin.
|
||||
- **`uv.lock` diff:** Expect a large diff since the lockfile is stale; review that no unexpected major-version jumps occur (especially PyQt6 6.x → 7.x, which would be breaking).
|
||||
- **CI:** Gitea Actions runners must have `uv` installed, or the workflows must install it as a step.
|
||||
- **Application still runs on Python 3.9.6?** No — `match`/`case` syntax requires 3.10+, and `requires-python` is `>=3.11`. The system 3.9.6 must not be used to run UmbraEdit.
|
||||
@@ -1,12 +0,0 @@
|
||||
#!/bin/zsh
|
||||
# UmbraEdit Launcher for macOS
|
||||
# Double-click to launch, or run: ./UmbraEdit.command
|
||||
#
|
||||
# Copyright (C) 2026 B.D. Murphy and novelWriter contributors.
|
||||
# Created: macOS launcher script for UmbraEdit (renamed from novelWriter).
|
||||
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
# Use the project's uv-managed Python 3.12 virtual environment
|
||||
export UV_PYTHON_PREFERENCE="only-managed"
|
||||
exec uv run python UmbraEdit.py "$@"
|
||||
BIN
UmbraEdit.jpg
|
Before Width: | Height: | Size: 736 KiB |
15
UmbraEdit.py
@@ -1,15 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
UmbraEdit - Start Script
|
||||
==========================
|
||||
""" # noqa
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
os.curdir = os.path.abspath(os.path.dirname(__file__))
|
||||
|
||||
if __name__ == "__main__":
|
||||
import umbraedit
|
||||
|
||||
umbraedit.main(sys.argv[1:])
|
||||
221
build-linux.sh
@@ -1,221 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
#=============================================================================
|
||||
# UmbraEdit Linux Build Script
|
||||
# ============================================================================
|
||||
# Downloads the UmbraEdit source tarball and builds a .deb package and/or
|
||||
# AppImage for Linux AMD64/ARM64.
|
||||
#
|
||||
# Usage:
|
||||
# chmod +x build-linux.sh
|
||||
# ./build-linux.sh [--arch amd64|arm64] [--distro ubuntu|debian] [--no-deb]
|
||||
#
|
||||
# No git clone required. Downloads the source tarball automatically.
|
||||
#=============================================================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Configuration
|
||||
#-----------------------------------------------------------------------------
|
||||
VERSION="2026.11.5"
|
||||
RELEASE_VERSION="2026.11.0007"
|
||||
GITEA_URL="http://192.168.123.18:2222/umbragit/UmbraEdit"
|
||||
TARBALL_URL="${GITEA_URL}/-/archive/v${RELEASE_VERSION}/umbraedit-${RELEASE_VERSION}.tar.gz"
|
||||
TARBALL="umbraedit-${RELEASE_VERSION}.tar.gz"
|
||||
EXTRACTED_DIR="umbraedit-${RELEASE_VERSION}"
|
||||
|
||||
ARCH="${1:-amd64}"
|
||||
DISTRO="${2:-ubuntu}"
|
||||
BUILD_DEB="${3:-yes}"
|
||||
|
||||
echo "============================================================"
|
||||
echo " UmbraEdit Linux Build Script"
|
||||
echo "============================================================"
|
||||
echo ""
|
||||
echo " Version: ${RELEASE_VERSION}"
|
||||
echo " Architecture: ${ARCH}"
|
||||
echo " Distro: ${DISTRO}"
|
||||
echo " Build .deb: ${BUILD_DEB}"
|
||||
echo ""
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Step 1: Check prerequisites
|
||||
#--------------------------------------------------------------
|
||||
echo "[1/5] Checking prerequisites..."
|
||||
|
||||
MISSING=0
|
||||
for cmd in curl tar python3; do
|
||||
if ! command -v "$cmd" &> /dev/null; then
|
||||
echo " MISSING: $cmd"
|
||||
MISSING=1
|
||||
fi
|
||||
done
|
||||
|
||||
if command -v apt-get &> /dev/null; then
|
||||
PKG_MGR="apt-get"
|
||||
elif command -v dnf &> /dev/null; then
|
||||
PKG_MGR="dnf"
|
||||
elif command -v pacman &> /dev/null; then
|
||||
PKG_MGR="pacman"
|
||||
else
|
||||
PKG_MGR=""
|
||||
fi
|
||||
|
||||
if [ "$PKG_MGR" = "" ]; then
|
||||
echo ""
|
||||
echo "ERROR: No supported package manager found (apt-get, dnf, or pacman)"
|
||||
echo "Please install: python3, python3-pip, python3-pyqt6, python3-enchant,"
|
||||
echo " dh-python, debhelper, python3-build, appimagetool"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo " Package manager: $PKG_MGR"
|
||||
echo " Prerequisites OK"
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Step 2: Install system dependencies
|
||||
#--------------------------------------------------------------
|
||||
echo ""
|
||||
echo "[2/5] Installing system dependencies..."
|
||||
|
||||
INSTALL_FAILED=0
|
||||
|
||||
if [ "$PKG_MGR" = "apt-get" ]; then
|
||||
echo " Updating package lists..."
|
||||
if ! sudo apt-get update 2>&1 | tail -5; then
|
||||
echo ""
|
||||
echo "============================================================"
|
||||
echo " ERROR: apt-get update failed!"
|
||||
echo "============================================================"
|
||||
echo ""
|
||||
echo " One of your package repositories is broken (likely a PPA or"
|
||||
echo " third-party repo like NVIDIA's)."
|
||||
echo ""
|
||||
echo " To fix:"
|
||||
echo " 1. Check /etc/apt/sources.list and /etc/apt/sources.list.d/"
|
||||
echo " 2. Remove or disable any repositories that no longer exist"
|
||||
echo " 3. Run: sudo apt-get update"
|
||||
echo " 4. Then re-run this script: ./build-linux.sh"
|
||||
echo ""
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Installing packages..."
|
||||
install_pkg() {
|
||||
if [ "$PKG_MGR" = "apt-get" ]; then
|
||||
sudo apt-get install -y "$@" 2>&1 | tail -3
|
||||
elif [ "$PKG_MGR" = "dnf" ]; then
|
||||
sudo dnf install -y "$@" 2>&1 | tail -3
|
||||
elif [ "$PKG_MGR" = "pacman" ]; then
|
||||
sudo pacman -Sy --noconfirm "$@" 2>&1 | tail -3
|
||||
fi
|
||||
}
|
||||
|
||||
echo " Installing: python3 python3-pip python3-pyqt6 python3-enchant"
|
||||
install_pkg python3 python3-pip python3-pyqt6 python3-enchant 2>&1 | tail -3 || {
|
||||
echo ""
|
||||
echo "============================================================"
|
||||
echo " ERROR: Failed to install core dependencies"
|
||||
echo "============================================================"
|
||||
echo ""
|
||||
echo " Please install manually and re-run:"
|
||||
echo " sudo apt-get install python3 python3-pip python3-pyqt6 python3-enchant"
|
||||
echo ""
|
||||
exit 1
|
||||
}
|
||||
|
||||
echo ""
|
||||
echo " Installing: dh-python debhelper python3-build appimagetool"
|
||||
install_pkg dh-python debhelper python3-build appimagetool 2>&1 | tail -3 || {
|
||||
echo ""
|
||||
echo "============================================================"
|
||||
echo " WARNING: Some build tools failed to install"
|
||||
echo "============================================================"
|
||||
echo ""
|
||||
echo " You may need to install these manually:"
|
||||
echo " sudo apt-get install dh-python debhelper python3-build appimagetool"
|
||||
echo ""
|
||||
echo " Continuing anyway..."
|
||||
}
|
||||
|
||||
echo " System dependencies installed"
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Step 3: Download source tarball
|
||||
#--------------------------------------------------------------
|
||||
echo ""
|
||||
echo "[3/5] Downloading source tarball..."
|
||||
echo " URL: ${TARBALL_URL}"
|
||||
|
||||
if [ -f "$TARBALL" ]; then
|
||||
echo " Archive already exists, skipping download"
|
||||
else
|
||||
curl -L -o "$TARBALL" "$TARBALL_URL"
|
||||
echo " Downloaded: $(ls -lh "$TARBALL" | awk '{print $5}')"
|
||||
fi
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Step 4: Extract source
|
||||
#--------------------------------------------------------------
|
||||
echo ""
|
||||
echo "[4/5] Extracting source..."
|
||||
|
||||
rm -rf "$EXTRACTED_DIR"
|
||||
tar xzf "$TARBALL"
|
||||
cd "$EXTRACTED_DIR"
|
||||
|
||||
echo " Extracted to: $(pwd)"
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Step 5: Install Python dependencies
|
||||
#--------------------------------------------------------------
|
||||
echo ""
|
||||
echo "[5/5] Installing Python dependencies..."
|
||||
|
||||
python3 -m pip install --user --upgrade pip setuptools wheel 2>&1 | tail -1
|
||||
python3 -m pip install --user pyqt6 pyenchant 2>&1 | tail -1
|
||||
|
||||
echo " Python dependencies installed"
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Step 6: Build packages
|
||||
#--------------------------------------------------------------
|
||||
echo ""
|
||||
echo "[6/6] Building packages..."
|
||||
|
||||
# Build .deb (Debian/Ubuntu only)
|
||||
if [ "$BUILD_DEB" = "yes" ] && [ "$PKG_MGR" = "apt-get" ]; then
|
||||
echo ""
|
||||
echo "Building .deb package..."
|
||||
python3 utils/build_debian.py --distro "$DISTRO" --build 1
|
||||
echo ""
|
||||
echo " .deb package: dist_deb/umbraedit_*_${ARCH}.deb"
|
||||
fi
|
||||
|
||||
# Build AppImage
|
||||
echo ""
|
||||
echo "Building AppImage..."
|
||||
python3 utils/build_appimage.py --linux manylinux_2_28 --arch "$ARCH" --python 3.12
|
||||
echo ""
|
||||
echo " AppImage: dist_appimage/umbraedit-${RELEASE_VERSION}-${ARCH}.AppImage"
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Done
|
||||
#--------------------------------------------------------------
|
||||
echo ""
|
||||
echo "============================================================"
|
||||
echo " Build Complete!"
|
||||
echo "============================================================"
|
||||
echo ""
|
||||
echo "Artifacts:"
|
||||
ls -la dist_deb/ 2>/dev/null || true
|
||||
ls -la dist_appimage/ 2>/dev/null || true
|
||||
echo ""
|
||||
echo "To run UmbraEdit:"
|
||||
echo " From AppImage: chmod +x dist_appimage/umbraedit-${RELEASE_VERSION}-${ARCH}.AppImage"
|
||||
echo " ./dist_appimage/umbraedit-${RELEASE_VERSION}-${ARCH}.AppImage"
|
||||
echo " From .deb: sudo dpkg -i dist_deb/umbraedit_*_${ARCH}.deb && umbraedit"
|
||||
echo ""
|
||||
echo "Source directory: $(pwd)"
|
||||
22
codecov.yml
Normal file
@@ -0,0 +1,22 @@
|
||||
codecov:
|
||||
require_ci_to_pass: yes
|
||||
|
||||
coverage:
|
||||
precision: 2
|
||||
round: nearest
|
||||
range: "70...95"
|
||||
|
||||
status:
|
||||
project:
|
||||
default:
|
||||
threshold: 1%
|
||||
patch: no
|
||||
changes: no
|
||||
|
||||
parsers:
|
||||
gcov:
|
||||
branch_detection:
|
||||
conditional: yes
|
||||
loop: yes
|
||||
method: no
|
||||
macro: no
|
||||
@@ -1,14 +0,0 @@
|
||||
span.guilabel {
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.nw-sidebar-title {
|
||||
height: unset;
|
||||
max-height: unset;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
gap: .25rem;
|
||||
font-size: 1.25rem;
|
||||
font-weight: normal;
|
||||
text-align: center;
|
||||
}
|
||||
BIN
docs/source/_static/novelwriter-dark.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
docs/source/_static/novelwriter-light.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 30 KiB |
@@ -1,3 +0,0 @@
|
||||
{% if docstitle %}
|
||||
<p class="nw-sidebar-title">{{ docstitle }}</p>
|
||||
{% endif %}
|
||||
@@ -1,85 +1,116 @@
|
||||
"""
|
||||
Configuration file for the Sphinx documentation builder.
|
||||
Documentation: http://www.sphinx-doc.org/en/master/config
|
||||
""" # noqa
|
||||
#
|
||||
# Configuration file for the Sphinx documentation builder.
|
||||
#
|
||||
# This file does only contain a selection of the most common options. For a
|
||||
# full list see the documentation:
|
||||
# http://www.sphinx-doc.org/en/master/config
|
||||
#
|
||||
|
||||
# -- Imports -----------------------------------------------------------------
|
||||
|
||||
import datetime
|
||||
import os
|
||||
import time
|
||||
import datetime
|
||||
|
||||
# -- Project Information -----------------------------------------------------
|
||||
|
||||
project = "UmbraEdit"
|
||||
copyright = f"{datetime.date.today().year}" # noqa: A001
|
||||
project = "novelWriter"
|
||||
copyright = f"{datetime.date.today().year}, Veronica Berglyd Olsen"
|
||||
author = "Veronica Berglyd Olsen"
|
||||
|
||||
if override_authors := os.environ.get("SPHINX_I18N_AUTHORS"):
|
||||
author = override_authors
|
||||
else:
|
||||
author = "Veronica Berglyd Olsen"
|
||||
initFile = os.path.join(
|
||||
os.path.dirname(__file__), os.pardir, os.pardir,
|
||||
"novelwriter", "__init__.py"
|
||||
)
|
||||
with open(initFile) as inFile:
|
||||
for aLine in inFile:
|
||||
if aLine.startswith("__version__"):
|
||||
release = aLine.split('"')[1].strip()
|
||||
break
|
||||
else:
|
||||
release = "unknown"
|
||||
|
||||
if override_version := os.environ.get("SPHINX_I18N_VERSION"):
|
||||
release = override_version
|
||||
else:
|
||||
initFile = os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, "umbraedit", "__init__.py")
|
||||
with open(initFile, encoding="utf-8") as inFile:
|
||||
for aLine in inFile:
|
||||
if aLine.startswith("__version__"):
|
||||
release = "20" + aLine.split('"')[1].strip()
|
||||
break
|
||||
else:
|
||||
release = "unknown"
|
||||
|
||||
version = release.partition("-")[0]
|
||||
version = release.split("-")[0]
|
||||
|
||||
# -- General Configuration ---------------------------------------------------
|
||||
|
||||
os.environ["TZ"] = "Europe/Oslo"
|
||||
time.tzset()
|
||||
|
||||
needs_sphinx = "5.0"
|
||||
extensions = ["sphinx_design", "sphinx_copybutton"]
|
||||
needs_sphinx = "4.0"
|
||||
templates_path = ["_templates"]
|
||||
source_suffix = {".rst": "restructuredtext"}
|
||||
source_suffix = ".rst"
|
||||
master_doc = "index"
|
||||
today_fmt = "%A, %d %B %Y at %H:%M"
|
||||
language = "en"
|
||||
locale_dirs = ["locales/"]
|
||||
gettext_compact = False
|
||||
language = None
|
||||
exclude_patterns = []
|
||||
pygments_style = "sphinx"
|
||||
pygments_dark_style = "monokai"
|
||||
|
||||
# -- Options for HTML Output -------------------------------------------------
|
||||
|
||||
html_theme = "sphinx_book_theme"
|
||||
html_title = f"Version {release}"
|
||||
html_theme = "furo"
|
||||
html_static_path = ["_static"]
|
||||
html_css_files = ["custom.css"]
|
||||
html_theme_options = {
|
||||
"logo": {
|
||||
"image_light": "_static/umbraedit-light.png",
|
||||
"image_dark": "_static/umbraedit-dark.png",
|
||||
},
|
||||
"show_toc_level": 2,
|
||||
"show_navbar_depth": 1,
|
||||
"repository_url": "https://github.com/saga-soft/umbraedit",
|
||||
"navigation_with_keys": True,
|
||||
"use_repository_button": True,
|
||||
"use_issues_button": True,
|
||||
"pygments_light_style": "tango",
|
||||
"pygments_dark_style": "dracula",
|
||||
}
|
||||
html_sidebars = {
|
||||
"**": ["navbar-logo", "sidebar-title", "sbt-sidebar-nav"],
|
||||
"light_logo": "novelwriter-light.png",
|
||||
"dark_logo": "novelwriter-dark.png",
|
||||
}
|
||||
html_title = f"<div style='text-align: center'>Documentation<br>Version {release}</div>"
|
||||
|
||||
# -- Options for HTMLHelp Output ---------------------------------------------
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = "novelWriterDoc"
|
||||
|
||||
# -- Options for LaTeX Output ------------------------------------------------
|
||||
|
||||
latex_elements = {
|
||||
"papersize": "a4paper",
|
||||
"pointsize": "11pt",
|
||||
"preamble": ("\\usepackage[utf8]{inputenc}\n\\DeclareUnicodeCharacter{2212}{\\textendash}\n"),
|
||||
"preamble": (
|
||||
"\\usepackage[utf8]{inputenc}\n"
|
||||
"\\DeclareUnicodeCharacter{2212}{\\textendash}\n"
|
||||
),
|
||||
"figure_align": "htbp",
|
||||
}
|
||||
latex_logo = "_static/umbraedit-pdf.png"
|
||||
latex_documents = [(master_doc, "manual.tex", None, author, "manual")]
|
||||
|
||||
# Grouping the document tree into LaTeX files. List of tuples
|
||||
# (source start file, target name, title,
|
||||
# author, documentclass [howto, manual, or own class]).
|
||||
latex_documents = [(
|
||||
master_doc, "manual.tex", "novelWriter Documentation",
|
||||
author, "manual"
|
||||
)]
|
||||
|
||||
# -- Options for Man Page Output ---------------------------------------------
|
||||
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [(
|
||||
master_doc, "novelwriter", "novelWriter Documentation", [author], 1
|
||||
)]
|
||||
|
||||
# -- Options for Texinfo Output ----------------------------------------------
|
||||
|
||||
# Grouping the document tree into Texinfo files. List of tuples
|
||||
# (source start file, target name, title, author,
|
||||
# dir menu entry, description, category)
|
||||
texinfo_documents = [(
|
||||
master_doc, "novelWriter", "novelWriter Documentation", author,
|
||||
"novelWriter", "Markdown-like editor for novels.", "Miscellaneous"
|
||||
)]
|
||||
|
||||
# -- Options for EPub Output -------------------------------------------------
|
||||
|
||||
# Bibliographic Dublin Core info.
|
||||
epub_title = project
|
||||
|
||||
# The unique identifier of the text. This can be a ISBN number
|
||||
# or the project homepage.
|
||||
# epub_identifier = ""
|
||||
|
||||
# A unique identification for the text.
|
||||
# epub_uid = ""
|
||||
|
||||
# A list of files that should not be packed into the epub file.
|
||||
epub_exclude_files = ["search.html"]
|
||||
|
||||
@@ -1,92 +0,0 @@
|
||||
.. _docs_features_dialogue:
|
||||
|
||||
*********************
|
||||
Dialogue Highlighting
|
||||
*********************
|
||||
|
||||
Dialogue recognition and colour highlighting is available both while you're writing and in
|
||||
generated manuscript documents.
|
||||
|
||||
The default language settings in UmbraEdit are for English. That includes the dialogue
|
||||
highlighting settings. But many dialogue styles are supported. You can tune a number of settings
|
||||
to fit your language and style preferences in the "Text Highlighting" section in **Preferences**.
|
||||
You can mix and match these settings.
|
||||
|
||||
.. figure:: images/fig_dialogue_highlighting.png
|
||||
|
||||
The **Text Highlighting** section of **Preferences**.
|
||||
|
||||
|
||||
Quoted Dialogue
|
||||
===============
|
||||
|
||||
By default, dialogue highlighting is enabled for the double quote symbols you have defined in the
|
||||
**Quotation Style** section of **Preferences**.
|
||||
|
||||
.. figure:: images/fig_dialogue_quote_styles.png
|
||||
|
||||
The **Quotation Style** section of **Preferences**.
|
||||
|
||||
You can change which quote symbols are highlighted by selecting one of "None", "Single", "Double",
|
||||
or "Both" from the "Highlight dialogue" setting under **Text Highlighting**.
|
||||
|
||||
You can also enable or disable the "Allow open-ended dialogue" setting to allow for the style where
|
||||
multi-paragraph dialogue is not closed until the last paragraph.
|
||||
|
||||
.. admonition:: Limitations
|
||||
|
||||
Dialogue highlighting for single quotes is difficult to process when the same single quote
|
||||
symbol is also used for apostrophes. There isn't a good solution to this. Your best option in
|
||||
the cases where the highlighting is wrong is to insert an alternative apostrophe symbol instead.
|
||||
See :ref:`docs_more_typographical_symbols_apostrophe` for more details.
|
||||
|
||||
|
||||
Alternative Dialogue
|
||||
====================
|
||||
|
||||
You can use the "Alternative dialogue symbols" setting for custom dialogue wrapper symbols. These
|
||||
are highlighted in a different colour than regular dialogue.
|
||||
|
||||
The intended use case here is if you use an alternative style to distinguish a different style of
|
||||
communication. The feature idea came from a science fiction series where mind-to-mind communication
|
||||
used a different quotation style.
|
||||
|
||||
|
||||
Dialogue Line Symbols
|
||||
=====================
|
||||
|
||||
In some languages, a single symbol at the start of a paragraph can indicate that the whole
|
||||
paragraph is dialogue. For instance, this symbol can be a short dash (en dash).
|
||||
|
||||
.. figure:: images/fig_dialogue_line.png
|
||||
|
||||
An example of dialogue starting with a short dash.
|
||||
|
||||
You can enable this feature by adding the symbols to the "Dialogue line symbols" setting. Multiple
|
||||
symbols are allowed.
|
||||
|
||||
|
||||
Dialogue with Narrator Break
|
||||
============================
|
||||
|
||||
The dialogue symbol setting will not detect if the dialogue ends in the paragraph. In some styles
|
||||
there is no way to actually indicate the switch from dialogue to narration; in others there are.
|
||||
These a narrator break symbols are usually dashes. You can select one of the supported dash symbols
|
||||
for narrator breaks. These can be used with any of the above dialogue recognition settings.
|
||||
|
||||
.. figure:: images/fig_dialogue_narrator_break.png
|
||||
|
||||
An example of dialogue starting with a short dash and a long dash narrator break.
|
||||
|
||||
|
||||
Alternating Dialogue and Narration
|
||||
==================================
|
||||
|
||||
The alternating dialogue and narration style is supported with the "Alternating dialogue/narration
|
||||
symbol" setting. It can be set to one of the supported dashes. This style will switch into dialogue
|
||||
mode when it first encounters the selected dash in a paragraph, and switch back out when it sees
|
||||
the next one, and so forth.
|
||||
|
||||
.. figure:: images/fig_dialogue_alternating.png
|
||||
|
||||
An example of alternating dialogue and narration using a long dash.
|
||||
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 81 KiB |
@@ -1,213 +0,0 @@
|
||||
.. _docs_features_shortcuts:
|
||||
|
||||
******************
|
||||
Keyboard Shortcuts
|
||||
******************
|
||||
|
||||
Most features in UmbraEdit are available as keyboard shortcuts. This is a reference list of those
|
||||
shortcuts. Most of them are also listed in the application's user interface.
|
||||
|
||||
.. note::
|
||||
|
||||
On MacOS, replace :kbd:`Ctrl` with :kbd:`Cmd`.
|
||||
|
||||
.. note::
|
||||
|
||||
Shortcuts marked with (*) are remapped when Vim Mode is enabled and no longer work as listed in
|
||||
the tables below. See :ref:`docs_features_vim_mode` for more details.
|
||||
|
||||
|
||||
Main Window Shortcuts
|
||||
=====================
|
||||
|
||||
.. csv-table::
|
||||
:header: "Shortcut", "Description"
|
||||
|
||||
":kbd:`F1`", "Open the online user manual"
|
||||
":kbd:`F5`", "Open the **Manuscript Build** tool"
|
||||
":kbd:`F6`", "Open the **Writing Statistics** tool"
|
||||
":kbd:`F8`", "Toggle **Focus Mode**"
|
||||
":kbd:`F9`", "Re-build the project's index"
|
||||
":kbd:`F11`", "Toggle full screen mode"
|
||||
":kbd:`Ctrl+,`", "Open the **Preferences** dialog"
|
||||
":kbd:`Ctrl+E`", "Switch or toggle focus for the editor or viewer"
|
||||
":kbd:`Ctrl+T`", "Switch or toggle focus for the project tree or novel view"
|
||||
":kbd:`Ctrl+Q`", "Exit UmbraEdit"
|
||||
":kbd:`Ctrl+Shift+,`", "Open the **Project Settings** dialog"
|
||||
":kbd:`Ctrl+Shift+O`", "Open the Welcome dialog to open or create a project"
|
||||
":kbd:`Ctrl+Shift+S`", "Save the current project"
|
||||
":kbd:`Ctrl+Shift+T`", "Switch focus to the outline view"
|
||||
":kbd:`Ctrl+Shift+W`", "Close the current project"
|
||||
":kbd:`Shift+F1`", "Open the local user manual (PDF) if it is available"
|
||||
":kbd:`Shift+F8`", "Toggle tree pane visibility"
|
||||
|
||||
|
||||
Project Tree Shortcuts
|
||||
======================
|
||||
|
||||
.. csv-table::
|
||||
:header: "Shortcut", "Description"
|
||||
|
||||
":kbd:`F2`", "Edit the label of the selected item"
|
||||
":kbd:`Return`", "Open the selected document in the editor"
|
||||
":kbd:`Alt+Up`", "Jump or go to the previous item at same level in the tree"
|
||||
":kbd:`Alt+Down`", "Jump or go to the next item at same level in the tree"
|
||||
":kbd:`Alt+Left`", "Jump to the parent item in the tree"
|
||||
":kbd:`Alt+Right`", "Jump to the first child item in the project tree"
|
||||
":kbd:`Ctrl+.`", "Open the context menu on the selected item"
|
||||
":kbd:`Ctrl+L`", "Open the **Quick Links** menu"
|
||||
":kbd:`Ctrl+N`", "Open the **Create New Item** menu"
|
||||
":kbd:`Ctrl+O`", "Open the selected document in the editor"
|
||||
":kbd:`Ctrl+R`", "Open the selected document in the viewer (*)"
|
||||
":kbd:`Ctrl+Up`", "Move selected item one step up in the tree"
|
||||
":kbd:`Ctrl+Down`", "Move selected item one step down in the tree"
|
||||
":kbd:`Ctrl+Shift+Del`", "Move the selected item to Trash"
|
||||
|
||||
|
||||
Document Editor Shortcuts
|
||||
=========================
|
||||
|
||||
|
||||
Text Search Shortcuts
|
||||
---------------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Shortcut", "Description"
|
||||
|
||||
":kbd:`F3`", "Find the next occurrence of the search word"
|
||||
":kbd:`Ctrl+F`", "Open search and look for the selected word"
|
||||
":kbd:`Ctrl+G`", "Find the next occurrence of the search word"
|
||||
":kbd:`Ctrl+H`", "Open replace and look for the selected word (Mac :kbd:`Cmd+=`)"
|
||||
":kbd:`Ctrl+Shift+1`", "Replace selected occurrence, and move to the next"
|
||||
":kbd:`Ctrl+Shift+G`", "Find the previous occurrence of the search word"
|
||||
":kbd:`Ctrl+Shift+F`", "Open project search and look for the selected word"
|
||||
":kbd:`Shift+F3`", "Find the previous occurrence of the search word"
|
||||
|
||||
|
||||
Text Formatting Shortcuts
|
||||
-------------------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Shortcut", "Description"
|
||||
|
||||
":kbd:`Ctrl+'`", "Wrap selected text, or word under cursor, in single quotes"
|
||||
":kbd:`Ctrl+""`", "Wrap selected text, or word under cursor, in double quotes"
|
||||
":kbd:`Ctrl+/`", "Toggle comment format for block or selected text"
|
||||
":kbd:`Ctrl+1`", "Change block format to heading level 1"
|
||||
":kbd:`Ctrl+2`", "Change block format to heading level 2"
|
||||
":kbd:`Ctrl+3`", "Change block format to heading level 3"
|
||||
":kbd:`Ctrl+4`", "Change block format to heading level 4"
|
||||
":kbd:`Ctrl+5`", "Change block alignment to left-aligned"
|
||||
":kbd:`Ctrl+6`", "Change block alignment to centred"
|
||||
":kbd:`Ctrl+7`", "Change block alignment to right-aligned"
|
||||
":kbd:`Ctrl+8`", "Add a left margin to the block"
|
||||
":kbd:`Ctrl+9`", "Add a right margin to the block"
|
||||
":kbd:`Ctrl+B`", "Format selected text, or word under cursor, with bold"
|
||||
":kbd:`Ctrl+D`", "Format selected text, or word under cursor, with strike through"
|
||||
":kbd:`Ctrl+I`", "Format selected text, or word under cursor, with italic"
|
||||
":kbd:`Ctrl+M`", "Highlight selected text, or word under cursor"
|
||||
":kbd:`Ctrl+Shift+/`", "Remove format for block or selected text"
|
||||
":kbd:`Ctrl+Shift+D`", "Toggle ignored text format for block or selected text"
|
||||
|
||||
|
||||
Other Editor Shortcuts
|
||||
----------------------
|
||||
|
||||
.. csv-table::
|
||||
:header: "Shortcut", "Description"
|
||||
|
||||
":kbd:`F7`", "Re-run the spell checker on the document"
|
||||
":kbd:`Ctrl+.`", "Open the context menu at the current cursor location"
|
||||
":kbd:`Ctrl+A`", "Select all text in the document"
|
||||
":kbd:`Ctrl+C`", "Copy selected text to clipboard"
|
||||
":kbd:`Ctrl+K`", "Activate the insert commands (see list in :ref:`docs_features_shortcuts_insert`)"
|
||||
":kbd:`Ctrl+R`", "Open or reload the current document in the viewer (*)"
|
||||
":kbd:`Ctrl+S`", "Save the current document"
|
||||
":kbd:`Ctrl+V`", "Paste text from clipboard to cursor position"
|
||||
":kbd:`Ctrl+W`", "Close the current document"
|
||||
":kbd:`Ctrl+X`", "Cut selected text to clipboard"
|
||||
":kbd:`Ctrl+Y`", "Redo latest undo"
|
||||
":kbd:`Ctrl+Z`", "Undo latest changes"
|
||||
":kbd:`Ctrl+0`", "Reset zoom"
|
||||
":kbd:`Ctrl++`", "Zoom in"
|
||||
":kbd:`Ctrl+=`", "Zoom in"
|
||||
":kbd:`Ctrl+-`", "Zoom out"
|
||||
":kbd:`Ctrl+_`", "Zoom out"
|
||||
":kbd:`Ctrl+Backspace`", "Delete the word before the cursor"
|
||||
":kbd:`Ctrl+Del`", "Delete the word after the cursor"
|
||||
":kbd:`Ctrl+F7`", "Toggle spell checking"
|
||||
":kbd:`Ctrl+Return`", "Open the tag or reference under the cursor in the viewer"
|
||||
":kbd:`Ctrl+Shift+Return`", "Open the tag or reference under the cursor in the editor"
|
||||
":kbd:`Ctrl+Shift+A`", "Select all text in the current paragraph"
|
||||
":kbd:`Ctrl+Shift+V`", "Paste text as plain text from clipboard to cursor position"
|
||||
":kbd:`Ctrl+Left`", "Move to previous word."
|
||||
":kbd:`Ctrl+Right`", "Move to next word."
|
||||
":kbd:`Ctrl+Up`", "Move to previous paragraph."
|
||||
":kbd:`Ctrl+Down`", "Move to next paragraph."
|
||||
|
||||
|
||||
.. _docs_features_shortcuts_insert:
|
||||
|
||||
Insert Shortcuts
|
||||
----------------
|
||||
|
||||
A set of insert features are also available through shortcuts, but they require a double
|
||||
combination of key sequences. The insert feature is activated with :kbd:`Ctrl+K`, followed by
|
||||
a key or key combination for the inserted content.
|
||||
|
||||
.. csv-table::
|
||||
:header: "Shortcut", "Description"
|
||||
|
||||
":kbd:`Ctrl+K`, :kbd:`Space`", "Insert a non-breaking space"
|
||||
":kbd:`Ctrl+K`, :kbd:`_`", "Insert a long dash (em dash)"
|
||||
":kbd:`Ctrl+K`, :kbd:`.`", "Insert an ellipsis"
|
||||
":kbd:`Ctrl+K`, :kbd:`'`", "Insert a modifier apostrophe"
|
||||
":kbd:`Ctrl+K`, :kbd:`*`", "Insert a bullet symbol"
|
||||
":kbd:`Ctrl+K`, :kbd:`%`", "Insert a per mille symbol"
|
||||
":kbd:`Ctrl+K`, :kbd:`~`", "Insert a figure dash (same width as a number)"
|
||||
":kbd:`Ctrl+K`, :kbd:`−`", "Insert a short dash (en dash)"
|
||||
":kbd:`Ctrl+K`, :kbd:`1`", "Insert a left single quote"
|
||||
":kbd:`Ctrl+K`, :kbd:`2`", "Insert a right single quote"
|
||||
":kbd:`Ctrl+K`, :kbd:`3`", "Insert a left double quote"
|
||||
":kbd:`Ctrl+K`, :kbd:`4`", "Insert a right double quote"
|
||||
":kbd:`Ctrl+K`, :kbd:`C`", "Insert a ``@char`` keyword"
|
||||
":kbd:`Ctrl+K`, :kbd:`E`", "Insert an ``@entity`` keyword"
|
||||
":kbd:`Ctrl+K`, :kbd:`F`", "Insert a ``@focus`` keyword"
|
||||
":kbd:`Ctrl+K`, :kbd:`G`", "Insert a ``@tag`` keyword"
|
||||
":kbd:`Ctrl+K`, :kbd:`H`", "Insert a short description comment"
|
||||
":kbd:`Ctrl+K`, :kbd:`L`", "Insert a ``@location`` keyword"
|
||||
":kbd:`Ctrl+K`, :kbd:`M`", "Insert a ``@mention`` keyword"
|
||||
":kbd:`Ctrl+K`, :kbd:`O`", "Insert an ``@object`` keyword"
|
||||
":kbd:`Ctrl+K`, :kbd:`P`", "Insert a ``@plot`` keyword"
|
||||
":kbd:`Ctrl+K`, :kbd:`S`", "Insert a synopsis comment"
|
||||
":kbd:`Ctrl+K`, :kbd:`T`", "Insert a ``@time`` keyword"
|
||||
":kbd:`Ctrl+K`, :kbd:`V`", "Insert a ``@pov`` keyword"
|
||||
":kbd:`Ctrl+K`, :kbd:`X`", "Insert a ``@custom`` keyword"
|
||||
":kbd:`Ctrl+K`, :kbd:`Ctrl+Space`", "Insert a thin non-breaking space"
|
||||
":kbd:`Ctrl+K`, :kbd:`Ctrl+_`", "Insert a horizontal bar (quotation dash)"
|
||||
":kbd:`Ctrl+K`, :kbd:`Ctrl+'`", "Insert a prime"
|
||||
":kbd:`Ctrl+K`, :kbd:`Ctrl+""`", "Insert a double prime"
|
||||
":kbd:`Ctrl+K`, :kbd:`Ctrl+*`", "Insert a flower mark (alternative bullet)"
|
||||
":kbd:`Ctrl+K`, :kbd:`Ctrl+−`", "Insert a hyphen bullet (alternative bullet)"
|
||||
":kbd:`Ctrl+K`, :kbd:`Ctrl+D`", "Insert a division sign"
|
||||
":kbd:`Ctrl+K`, :kbd:`Ctrl+O`", "Insert a degree symbol"
|
||||
":kbd:`Ctrl+K`, :kbd:`Ctrl+X`", "Insert a times sign"
|
||||
":kbd:`Ctrl+K`, :kbd:`Shift+Space`", "Insert a thin space"
|
||||
|
||||
|
||||
Document Viewer Shortcuts
|
||||
=========================
|
||||
|
||||
.. csv-table::
|
||||
:header: "Shortcut", "Description"
|
||||
|
||||
":kbd:`Alt+Left`", "Move backward in the view history"
|
||||
":kbd:`Alt+Right`", "Move forward in the view history"
|
||||
":kbd:`Ctrl+C`", "Copy selected text to clipboard"
|
||||
":kbd:`Ctrl+0`", "Reset zoom"
|
||||
":kbd:`Ctrl++`", "Zoom in"
|
||||
":kbd:`Ctrl+=`", "Zoom in"
|
||||
":kbd:`Ctrl+-`", "Zoom out"
|
||||
":kbd:`Ctrl+_`", "Zoom out"
|
||||
":kbd:`Ctrl+Shift+A`", "Select all text in the current paragraph"
|
||||
":kbd:`Ctrl+Shift+R`", "Close the document viewer (*)"
|
||||
@@ -1,110 +0,0 @@
|
||||
.. _docs_features_story:
|
||||
|
||||
**************
|
||||
Story Comments
|
||||
**************
|
||||
|
||||
A special set of comment styles allow for annotating your text with structure information. There
|
||||
are two styles of comments available. They are an extension to regular comments as described in
|
||||
:ref:`docs_usage_comments`.
|
||||
|
||||
.. versionadded:: 2.7
|
||||
|
||||
|
||||
Story Structure Comments
|
||||
========================
|
||||
|
||||
You can annotate story structure by using the ``%Story`` style of comment. To use the feature,
|
||||
make the first word of a comment ``Story``, followed by a period, a structure term, a colon, a
|
||||
space and the text for that term.
|
||||
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
The story term can be anything that you want to track in the manuscript. This construct is intended
|
||||
to make it easier to extract metadata from a work to perform a structural analysis of the story.
|
||||
|
||||
There are probably as many ways to examine story structure as there are authors and editors
|
||||
combined. For this reason the story tag is flexible. You can use any terms you want and track any
|
||||
aspect of the story that serves your purposes.
|
||||
|
||||
An example method has been advanced by Shawn Coyne in *The Story Grid*. This method asserts that a
|
||||
story is composed of "beats", and that each beat has an inciting incident, a complication, a
|
||||
crisis, and a resolution. One might capture these elements of a beat where a character overcomes
|
||||
their fear of giving a speech as:
|
||||
|
||||
:bdg-info:`Example`
|
||||
|
||||
.. code-block:: md
|
||||
|
||||
### Scene
|
||||
|
||||
%Synopsis: Carol overcomes her fear of giving a speech.
|
||||
|
||||
%Story.incite: Carol is pleased to be invited to a conference to see her boss deliver a keynote.
|
||||
%Story.complication: Carol's boss calls in sick and asks her to deliver a big speech.
|
||||
%Story.crisis: Carol has a fear of appearing on stage.
|
||||
%Story.resolution: Carol engages the help of a coach who helps her overcome her fears and delivers a great speech.
|
||||
|
||||
Other analytical models propose tracking a scene's pace, how it affects the mood of the story, or
|
||||
which element(s) of the story's genre are being satisfied. An author can use this mechanism to
|
||||
track any element of a scene. Some examples include time of day, how much time passes in the scene,
|
||||
or even the physical form of a shape-shifting character. If a story involves magic, one could track
|
||||
which wand a main character has in hand. It's up to the author.
|
||||
|
||||
When the story and other scene metadata is extracted into a tabular form, it is possible to get a
|
||||
comprehensive overview of the story and to identify possible issues. For example, so many
|
||||
fast-paced scenes without a break that readers might become fatigued or over-stimulated.
|
||||
|
||||
|
||||
Output
|
||||
------
|
||||
|
||||
The story structure comments can be included in the manuscript, and are formatted similarly to
|
||||
the synopsis comments:
|
||||
|
||||
.. figure:: images/fig_story_structure_manuscript.png
|
||||
|
||||
A set of story structure comments as shown in the Manuscript tool.
|
||||
|
||||
When you export your project data from the Outline View, all story structure terms are added as
|
||||
columns to the exported file, which can then be opened in the spread sheet software of your choice.
|
||||
|
||||
|
||||
Story Notes
|
||||
===========
|
||||
|
||||
Story notes are similar to story structure comments, but have no predefined meaning. Essentially
|
||||
they are a generalisation of the story structure comment, and the only point of having this
|
||||
additional format is to allow you do filter them in and out of your manuscript independently.
|
||||
|
||||
You can annotate story notes by using the ``%Note`` style of comment. To use the feature,
|
||||
make the first word of a comment ``Note``, followed by a period, a term, a colon, a space and the
|
||||
text for the note.
|
||||
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
These notes are free form, but one intended use case is to add consistency annotations to your text
|
||||
to remind yourself where you have described something that must be checked against other parts of
|
||||
your text later on.
|
||||
|
||||
:bdg-info:`Example`
|
||||
|
||||
.. code-block:: md
|
||||
|
||||
### Scene
|
||||
|
||||
%Synopsis: Carol overcomes her fear of giving a speech.
|
||||
|
||||
%Note.consistency: This is the first time in the story Carol gives a speech.
|
||||
|
||||
|
||||
Output
|
||||
------
|
||||
|
||||
Story notes are included in the manuscript in exactly the same way story structure comments are,
|
||||
but has a separate inclusion setting in the build settings. They are also included in CSV exports
|
||||
from the **Outline View**.
|
||||
@@ -1,126 +0,0 @@
|
||||
.. _docs_features_vim_mode:
|
||||
|
||||
********
|
||||
Vim Mode
|
||||
********
|
||||
|
||||
.. _Vim: https://www.vim.org/
|
||||
|
||||
Vim_ is a keyboard-centric text editor. "Vim mode" refers to another editor implementing the
|
||||
ability to perform a subset of vim motions. This will allow you to write, select, edit, copy,
|
||||
paste, navigate, etc, efficiently by using keyboard commands.
|
||||
|
||||
Vim is modal. Three such modes have been implemented in UmbraEdit:
|
||||
|
||||
- **Normal** mode is the default mode used to navigate text.
|
||||
- **Insert** mode is where you can write text like in a 'normal' text editor.
|
||||
- **Visual** mode is for selecting text, with:
|
||||
|
||||
- **Visual** mode for per character selection.
|
||||
- **V-Line** mode for per-line selection.
|
||||
|
||||
The vim mode setting is found in the **Features** section of the **Preferences**.
|
||||
|
||||
.. note::
|
||||
|
||||
Vim mode is an advanced feature. When you enable it, the text editor will behave very
|
||||
differently than a standard text editor. A label in the footer of the editor will show which of
|
||||
the vim modes it is in.
|
||||
|
||||
|
||||
Mode Switching
|
||||
==============
|
||||
|
||||
To switch between the various vim modes, these keystrokes implemented:
|
||||
|
||||
.. csv-table::
|
||||
:header: "From Mode", "To Mode", "Keystrokes"
|
||||
|
||||
"Normal", "Insert", ":kbd:`i`, :kbd:`I`, :kbd:`a`, :kbd:`A`, :kbd:`o`, :kbd:`O`"
|
||||
"Insert", "Normal", ":kbd:`Esc`"
|
||||
"Normal", "Visual", ":kbd:`v`, :kbd:`V`"
|
||||
"Visual", "V-Line", ":kbd:`V`"
|
||||
"V-Line", "Visual", ":kbd:`v`"
|
||||
"Visual", "Normal", ":kbd:`Esc`, :kbd:`v`"
|
||||
"V-Line", "Normal", ":kbd:`Esc`, :kbd:`V`"
|
||||
|
||||
You can exit visual mode back to normal mode by pressing :kbd:`Esc`, but all visual mode commands
|
||||
that logically "terminate" the visual mode usage will return you to normal mode.
|
||||
|
||||
For instance, press :kbd:`V` to enter V-Line mode, extend the selection to the next line with
|
||||
:kbd:`j`, and press :kbd:`y` to yank (copy). You are now automatically put back in normal mode as
|
||||
you have completed selecting your text.
|
||||
|
||||
|
||||
Implemented Keystrokes (Vim Motions)
|
||||
====================================
|
||||
|
||||
The table below shows the vim motions currently implemented in UmbraEdit.
|
||||
|
||||
.. csv-table::
|
||||
:header: "Motion", "Mode(s)", "Description"
|
||||
|
||||
":kbd:`i`", "Normal → Insert", "Enter insert mode"
|
||||
":kbd:`I`", "Normal → Insert", "Jump to start of line and enter insert"
|
||||
":kbd:`v`", "Normal → Visual", "Enter character-wise visual mode"
|
||||
":kbd:`V`", "Normal → V-Line", "Enter line-wise visual mode"
|
||||
":kbd:`dd`", "Normal", "Delete (cut) current line"
|
||||
":kbd:`x`", "Normal", "Delete character under cursor"
|
||||
":kbd:`w`", "Normal / Visual", "Move to next word start"
|
||||
":kbd:`b`", "Normal / Visual", "Move to previous word start"
|
||||
":kbd:`e`", "Normal / Visual", "Move to next word end"
|
||||
":kbd:`dw`", "Normal", "Delete from cursor to next word start"
|
||||
":kbd:`de`", "Normal", "Delete from cursor to next word end"
|
||||
":kbd:`db`", "Normal", "Delete from cursor to previous word start"
|
||||
":kbd:`d$`", "Normal", "Delete from cursor to end of line"
|
||||
":kbd:`yw`", "Normal", "Yank (copy) from cursor to next word start"
|
||||
":kbd:`gg`", "Normal / Visual", "Jump to first line"
|
||||
":kbd:`G`", "Normal / Visual", "Jump to last line"
|
||||
":kbd:`yy`", "Normal", "Yank current line"
|
||||
":kbd:`p`", "Normal", "Paste after current line or cursor"
|
||||
":kbd:`P`", "Normal", "Paste before current line or at cursor"
|
||||
":kbd:`o`", "Normal → Insert", "Open new line below and enter insert"
|
||||
":kbd:`O`", "Normal → Insert", "Open new line above and enter insert"
|
||||
":kbd:`$`", "Normal / Visual", "Move to end of line"
|
||||
":kbd:`0`", "Normal / Visual", "Move to start of line"
|
||||
":kbd:`a`", "Normal → Insert", "Enter insert after cursor"
|
||||
":kbd:`A`", "Normal → Insert", "Enter insert at end of line"
|
||||
":kbd:`u`", "Normal", "Undo last change"
|
||||
":kbd:`Ctrl+R`", "Normal", "Redo last undone change (*)"
|
||||
":kbd:`zz`", "Normal", "Centre cursor vertically"
|
||||
":kbd:`h`", "Normal / Visual", "Move left"
|
||||
":kbd:`j`", "Normal / Visual", "Move down"
|
||||
":kbd:`k`", "Normal / Visual", "Move up"
|
||||
":kbd:`l`", "Normal / Visual", "Move right"
|
||||
":kbd:`d`", "Visual / V-Line", "Delete selection"
|
||||
":kbd:`x`", "Visual / V-Line", "Delete selection"
|
||||
":kbd:`y`", "Visual / V-Line", "Yank selection"
|
||||
|
||||
|
||||
.. note::
|
||||
|
||||
Shortcuts marked with (*) are remapped when Vim Mode is enabled. These are shortcuts that
|
||||
usually do other things when Vim Mode is off.
|
||||
|
||||
|
||||
Known Issues
|
||||
============
|
||||
|
||||
* Differing behaviour from vim: :kbd:`j` and :kbd:`k` move by displayed line when a line is
|
||||
wrapped, like :kbd:`gj` and :kbd:`gk` in vim. All other line commands act on the full line.
|
||||
* :kbd:`Esc` in normal mode will leave Focus Mode if there is no pending command to cancel.
|
||||
* Differing behaviour from vim: the :kbd:`e` command behaves a bit differently with regards to the
|
||||
last character of a word. The behaviour is inconsistent with vim but functional and still logical
|
||||
to use. The cursor is placed at the end of the word after the last character rather than on the
|
||||
last character.
|
||||
|
||||
.. code-block::
|
||||
|
||||
test
|
||||
^ Cursor placed here in vim
|
||||
test
|
||||
^ Cursor placed here in UmbraEdit vim mode
|
||||
|
||||
You will only really ever notice this behaviour if you try to combine the :kbd:`e` command with
|
||||
another. For instance, :kbd:`de` will not delete the last character but delete forward as it
|
||||
starts one character after the word boundary.
|
||||
BIN
docs/source/images/novelwriter_logo.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
docs/source/images/python_powered.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
docs/source/images/python_win_install.png
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
docs/source/images/screenshot_dark.png
Normal file
|
After Width: | Height: | Size: 423 KiB |
BIN
docs/source/images/screenshot_default.png
Normal file
|
After Width: | Height: | Size: 431 KiB |
|
Before Width: | Height: | Size: 335 KiB After Width: | Height: | Size: 286 KiB |
@@ -1,92 +1,88 @@
|
||||
##########
|
||||
User Guide
|
||||
##########
|
||||
#############################
|
||||
Documentation for novelWriter
|
||||
#############################
|
||||
|
||||
| **Release Version:** |release|
|
||||
| **Updated:** |today|
|
||||
.. image:: images/novelwriter_logo.png
|
||||
:align: right
|
||||
:width: 48
|
||||
|
||||
UmbraEdit is an open source plain text editor designed for writing novels assembled from
|
||||
individual text documents. It uses a minimal formatting syntax inspired by Markdown, and adds a
|
||||
meta data syntax for comments, synopsis, and cross-referencing. It is designed to be a simple text
|
||||
| **For Release:** |release|
|
||||
| **Last Updated:** |today|
|
||||
|
|
||||
|
||||
novelWriter is an open source plain text editor designed for writing novels assembled from many
|
||||
smaller text documents. It uses a minimal formatting syntax inspired by Markdown, and adds a meta
|
||||
data syntax for comments, synopsis, and cross-referencing. It is designed to be a simple text
|
||||
editor that allows for easy organisation of text and notes, using human readable text files as
|
||||
storage for robustness.
|
||||
|
||||
.. figure:: images/screenshot_multi.png
|
||||
:class: dark-light
|
||||
:align: center
|
||||
:width: 500
|
||||
|
||||
The project storage is suitable for version control software, and also well suited for file
|
||||
synchronisation tools. All text is saved as plain text files with a meta data header. The core
|
||||
project structure is stored in a single project XML file. Other meta data is primarily saved as
|
||||
JSON files. See the :ref:`a_breakdown_storage` section for more details.
|
||||
|
||||
Any operating system that can run Python 3 and has the Qt 5 libraries should be able to run
|
||||
novelWriter. It runs fine on Linux, Windows and macOS, and users have tested it on other platforms
|
||||
too. novelWriter can be run directly from the Python source, installed from the pip tool. See
|
||||
:ref:`a_started` for more details.
|
||||
|
||||
.. note::
|
||||
Version 1.5 introduced a few changes that will require you to make a few minor modifications to
|
||||
some of the headings in your project. It should be fairly quick and straightforward. Please see
|
||||
the :ref:`a_prjfmt_1_3` section for more details.
|
||||
|
||||
**Useful Links**
|
||||
|
||||
* Website: https://umbraedit.io
|
||||
* Documentation: https://docs.umbraedit.io
|
||||
* Public Releases: https://releases.umbraedit.io
|
||||
* Internationalisation: https://crowdin.com/project/umbraedit
|
||||
* Source Code: https://github.com/saga-soft/UmbraEdit
|
||||
* Source Releases: https://github.com/saga-soft/UmbraEdit/releases
|
||||
* Issue Tracker: https://github.com/saga-soft/UmbraEdit/issues
|
||||
* Feature Discussions: https://github.com/saga-soft/UmbraEdit/discussions
|
||||
* PyPi Project: https://pypi.org/project/UmbraEdit
|
||||
* Social Media: https://fosstodon.org/@umbraedit
|
||||
* Website: https://novelwriter.io
|
||||
* Documentation: https://novelwriter.readthedocs.io
|
||||
* Source Code: https://github.com/vkbo/novelWriter
|
||||
* Source Releases: https://github.com/vkbo/novelWriter/releases
|
||||
* Issue Tracker: https://github.com/vkbo/novelWriter/issues
|
||||
* Feature Discussions: https://github.com/vkbo/novelWriter/discussions
|
||||
* PyPi Project: https://pypi.org/project/novelWriter
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:caption: Introduction
|
||||
:hidden:
|
||||
|
||||
self
|
||||
More Documents <https://umbraedit.io/more/>
|
||||
int_introduction
|
||||
int_overview
|
||||
int_started
|
||||
int_source
|
||||
int_customise
|
||||
|
||||
.. toctree::
|
||||
:caption: Getting Started
|
||||
:maxdepth: 1
|
||||
:caption: Using novelWriter
|
||||
:hidden:
|
||||
|
||||
usage/introduction
|
||||
usage/organising_project
|
||||
usage/chapters_and_scenes
|
||||
usage/basic_formatting
|
||||
usage/comments
|
||||
usage/tags_and_references
|
||||
usage/alignment_and_indent
|
||||
usage/advanced_formatting
|
||||
usage/front_back_matter
|
||||
usage/howto
|
||||
usage_breakdown
|
||||
usage_interface
|
||||
usage_format
|
||||
usage_shortcuts
|
||||
usage_typography
|
||||
usage_projectformat
|
||||
|
||||
.. toctree::
|
||||
:caption: The User Interface
|
||||
:maxdepth: 1
|
||||
:caption: Organising Your Project
|
||||
:hidden:
|
||||
|
||||
user_interface/main_window
|
||||
user_interface/projects
|
||||
user_interface/editor_viewer
|
||||
user_interface/split_and_merge
|
||||
user_interface/manuscript
|
||||
user_interface/formatting
|
||||
user_interface/statistics
|
||||
project_overview
|
||||
project_structure
|
||||
project_notes
|
||||
project_export
|
||||
|
||||
.. toctree::
|
||||
:caption: Other Features
|
||||
:maxdepth: 1
|
||||
:caption: Under the Hood
|
||||
:hidden:
|
||||
|
||||
features/dialogue
|
||||
features/story_comments
|
||||
features/shortcuts
|
||||
features/vim_mode
|
||||
|
||||
.. toctree::
|
||||
:caption: In-Depth Topics
|
||||
:hidden:
|
||||
|
||||
more/counting
|
||||
more/typography
|
||||
more/dictionaries
|
||||
more/customise
|
||||
more/handling_errors
|
||||
more/project_format
|
||||
|
||||
.. toctree::
|
||||
:caption: Technical Topics
|
||||
:hidden:
|
||||
|
||||
technical/locations
|
||||
technical/storage
|
||||
technical/source
|
||||
technical/tests
|
||||
tech_locations
|
||||
tech_storage
|
||||
tech_tests
|
||||
|
||||
74
docs/source/int_customise.rst
Normal file
@@ -0,0 +1,74 @@
|
||||
.. _a_custom:
|
||||
|
||||
**************
|
||||
Customisations
|
||||
**************
|
||||
|
||||
There are a few ways you can customise novelWriter youself. Currently, you can add new GUI themes,
|
||||
your own syntax themes, and install additional dictionaries.
|
||||
|
||||
|
||||
.. _a_custom_dict:
|
||||
|
||||
Spell Check Dictionaries
|
||||
========================
|
||||
|
||||
novelWriter uses `Enchant <https://abiword.github.io/enchant/>`_ as the spell checking tool.
|
||||
Depending on you operating system, it may or may not load installed spell check dictionaries.
|
||||
|
||||
Linux
|
||||
On Linux, you generally only have to install hunspell or aspell dictionaries on your system like
|
||||
you do for other applications. See your distro's documentation for how to do this.
|
||||
|
||||
Windows
|
||||
For Windows, English is included with the installation. For other languages you have to download
|
||||
and add dictionaries yourself. You can find the various dictionaries on the
|
||||
`Free Desktop <https://cgit.freedesktop.org/libreoffice/dictionaries/tree/>`_ website. You should
|
||||
find a folder for your language, if it is available at all, and download the files ending with
|
||||
``.aff`` and ``.dic``. These files must then be copied to the following location:
|
||||
|
||||
``C:\Users\<USER>\AppData\Local\enchant\hunspell``
|
||||
|
||||
This assumes your user profile is stored at ``C:\Users\<USER>``. The last one or two folders may
|
||||
not exist, so you may need to create them.
|
||||
|
||||
|
||||
.. _a_custom_theme:
|
||||
|
||||
Syntax and GUI Themes
|
||||
=====================
|
||||
|
||||
Adding your own GUI and syntax themes is relatively easy. The themes are defined by simple plain
|
||||
text config files with meta data and colour settings.
|
||||
|
||||
In order to make your own versions, first copy one of the existing files to your local computer and
|
||||
modify it as you like.
|
||||
|
||||
* The existing syntax themes are stored in
|
||||
`novelwriter/assets/syntax <https://github.com/vkbo/novelWriter/tree/main/novelwriter/assets/syntax>`_.
|
||||
* The existing GUI themes are stored in
|
||||
`novelwriter/assets/themes <https://github.com/vkbo/novelWriter/tree/main/novelwriter/assets/themes>`_.
|
||||
|
||||
Remember to also change the name of your theme by modifying the ``name`` setting at the top of the
|
||||
file.
|
||||
|
||||
For novelWriter to locate the custom theme files, you must copy them to the :ref:`a_locations_data`
|
||||
location in your home or user area. There should be a folder there named ``syntax`` for syntax
|
||||
themes and just ``themes`` for GUI themes.
|
||||
|
||||
Once the files are copied there, they should show up in :guilabel:`Preferences` with the label you
|
||||
set as ``name`` inside the file.
|
||||
|
||||
Theme CSS Files
|
||||
---------------
|
||||
|
||||
If you wish, you can also modify the CSS styles of the GUI in addition to change colour settings.
|
||||
This is only available for GUI themes, and you do this by creating a file with the exact same file
|
||||
name as the ``.conf`` file with colour settings and give it the ``.qss`` extension.
|
||||
|
||||
On Windows, file extensions may not be visible by default, so make sure you only have one file
|
||||
extension, and don't end up with two.
|
||||
|
||||
The QSS files are Qt Style Sheet files. See Qt's
|
||||
`The Style Sheet Syntax <https://doc.qt.io/qt-5/stylesheet-syntax.html>`_` documentation for more
|
||||
details.
|
||||
66
docs/source/int_introduction.rst
Normal file
@@ -0,0 +1,66 @@
|
||||
.. _a_intro:
|
||||
|
||||
************
|
||||
Key Features
|
||||
************
|
||||
|
||||
novelWriter is a multi-document plain text editor using a markup syntax inspired by markdown to
|
||||
apply simple formatting to the text. It is designed for writing novels, so the formatting features
|
||||
are limited. Your novel project is organised as a collection of separate plain text documents
|
||||
instead of a single, large document.
|
||||
|
||||
Below are some key features of novelWriter.
|
||||
|
||||
**Focus on writing**
|
||||
The aim of the user interface is to let the user focus on writing instead of spending time
|
||||
formatting text. Formatting is therefore limited to a small set of formatting tags for simple
|
||||
things like text emphasis and paragraph alignment. When you really want to focus on just
|
||||
writing, you can switch the editor into :guilabel:`Focus Mode` where only the text editor window
|
||||
itself is vissible.
|
||||
|
||||
**Keep an eye on your notes**
|
||||
The main window can optionally show a document viewer to the right of the editor. This view
|
||||
panel is intended for displaying another scene document, you character notes, plot notes, or any
|
||||
other document you may need to reference while writing.
|
||||
|
||||
**Organise your documents how you like**
|
||||
You can split your novel project up into as many individual documents as you want to. They are
|
||||
all glued together when you build the project in the top-to-bottom order in which they appear in
|
||||
the project tree. Splitting the project up into chapters and scenes means you can easily reorder
|
||||
them using the drag and drop feature.
|
||||
|
||||
**Keep track of your plot elements**
|
||||
All notes in your project can be assigned a *tag* you can *reference* from any other document or
|
||||
note. In fact, you can add a new tag under each heading of a note if you need to be able to
|
||||
reference a specific section. Note tags are organised into categories with specific keywords you
|
||||
can use to reference them.
|
||||
|
||||
**Get an overview of your plot elements**
|
||||
In the :guilabel:`Outline` tab on the main window you can see an outline of all the chapter and
|
||||
scene sections of your project. If they have any references in them, these are listed in
|
||||
columns. You can also add a synopsis to each document, which can be listed here. You have the
|
||||
option to add or remove columns of information from the outline. A subset of the outline
|
||||
information is also available in the :guilabel:`Novel` tab under the main project tree.
|
||||
|
||||
**Building your manuscript**
|
||||
Whether you want to compile a manuscript, or export all your notes, or generate an outline of
|
||||
your chapters and scenes with a synopsis, you can use the :guilabel:`Build Novel Project` tool.
|
||||
The tool lets you select what information you want to include in the generated document, and how
|
||||
it is formatted. You can send the result to a printer, a PDF, or to an Open Document file that
|
||||
can be opened by most office type word processors.
|
||||
|
||||
|
||||
.. _a_intro_screenshots:
|
||||
|
||||
Screenshots
|
||||
===========
|
||||
|
||||
**novelWriter with default system theme:**
|
||||
|
||||
.. image:: images/screenshot_default.png
|
||||
:width: 800
|
||||
|
||||
**novelWriter with dark theme:**
|
||||
|
||||
.. image:: images/screenshot_dark.png
|
||||
:width: 800
|
||||
89
docs/source/int_overview.rst
Normal file
@@ -0,0 +1,89 @@
|
||||
.. _a_overview:
|
||||
|
||||
********
|
||||
Overview
|
||||
********
|
||||
|
||||
.. only:: html
|
||||
|
||||
.. image:: images/python_powered.png
|
||||
:align: right
|
||||
:width: 220
|
||||
|
||||
novelWriter is built on `Python 3 <https://www.python.org/>`_, a cross platform programming
|
||||
language that doesn't require a compiler to build and run. That means that the code can run on your
|
||||
computer right out of the box, or zip file as it were.
|
||||
|
||||
While it is developed for Linux primarily, it runs just fine on Windows as well. It also works just
|
||||
fine on macOS, but the author is not a mac user so less attention is paid to that platform.
|
||||
|
||||
In order to run novelWriter, you also need a few additional packages. The user interface is built
|
||||
with `Qt 5 <https://www.qt.io/>`_, a cross platform library for building graphical user interface
|
||||
applications.
|
||||
|
||||
For install instructions, see :ref:`a_started`.
|
||||
|
||||
For information on how to add spell check dictionaries, see :ref:`a_custom_dict`.
|
||||
|
||||
Using novelWriter
|
||||
=================
|
||||
|
||||
In order to use novelWriter effectively, you need to know the basics of how it works. The following
|
||||
sections will explain the main principles. It starts of with the basics, and gets more detailed as
|
||||
you read on.
|
||||
|
||||
:ref:`a_breakdown` – Essential Information
|
||||
This section explains the basics of how the application works and what it can and cannot do.
|
||||
|
||||
:ref:`a_ui` – Recommended Reading
|
||||
This section will give you a more detailed explanation of what the various elements on the user
|
||||
interface do and how you can use them more effectively.
|
||||
|
||||
:ref:`a_fmt` – Essential Information
|
||||
This section covers how you should format your text. The editor is plain text, so text
|
||||
formatting requires some basic markup. The structure of your novel is also inferred by how you
|
||||
use the title headings. Tags and references are implemented by simple codes.
|
||||
|
||||
:ref:`a_kb` – Optional / Lookup
|
||||
This section lists all the keyboard shortcuts in novelWriter and what they do. Most of the
|
||||
shortcuts are also listed next to the menu items inside the app, so this section is purely for
|
||||
reference.
|
||||
|
||||
:ref:`a_typ` – Optional
|
||||
This section gives you an overview of the special typographical symbols available in
|
||||
novelWriter. The auto-replace feature can handle the insertion of standard quote symbols for
|
||||
your language, and other special characters. If you use any symbols aside from these. their
|
||||
intended use is explained here.
|
||||
|
||||
:ref:`a_prjfmt` – Optional
|
||||
This section is more technical and has an overview of changes made to the way your project data
|
||||
is stored. The format has changed a bit from time to time, and sometimes the changes require
|
||||
that you make small modifications to your project. Everything you need to know is listed in this
|
||||
section.
|
||||
|
||||
|
||||
Organising Your Projects
|
||||
========================
|
||||
|
||||
In addition to manage a collection of plain text files, novelWriter can interpret and map the
|
||||
structure of your novel and show you additional information about its flow and content. In order
|
||||
to take advantage of these features, you must structure your text in a specific way and add some
|
||||
meta data for it to extract.
|
||||
|
||||
:ref:`a_proj` – Essential Information
|
||||
This section explains how you organise the content of your project, how to customise them, and
|
||||
how to handle archived content and set up automated backups of your work.
|
||||
|
||||
:ref:`a_struct` – Essential Information
|
||||
This section covers the way your novel's structure is encoded into the text documents. It
|
||||
explains how the different levels of headings are used, and how you can include information
|
||||
about characters, plot elements, and other meta data in your text.
|
||||
|
||||
:ref:`a_notes` - Recommended Reading
|
||||
This section briefly describes what novelWriter does with the note files you add to your
|
||||
project. Generally, the application doesn't do much with them at all aside from looking through
|
||||
the for tags you've set so that it knows which file to open when you click on a reference.
|
||||
|
||||
:ref:`a_export` - Recommended Reading
|
||||
This section explains in more detail how the export tool works. In particular how you can
|
||||
control the way chapter titles are formatted, and how scene and section breaks are handled.
|
||||
143
docs/source/int_source.rst
Normal file
@@ -0,0 +1,143 @@
|
||||
.. _a_source:
|
||||
|
||||
*******************
|
||||
Running from Source
|
||||
*******************
|
||||
|
||||
.. _main website: https://novelwriter.io
|
||||
.. _GitHub: https://github.com/vkbo/novelWriter/releases
|
||||
.. _PyPi: https://pypi.org/project/novelWriter/
|
||||
.. _Sphinx Docs: https://www.sphinx-doc.org/
|
||||
|
||||
This section describes various ways of running novelWriter directly from the source code, and how
|
||||
to build the various components like the translation files and documentation.
|
||||
|
||||
.. note::
|
||||
The text below assumes the command ``python`` corresponds to a Python 3 executable. Python 2 is
|
||||
now deprecated, but many systems still have both Python 2 and 3. For such systems, the command
|
||||
``python3`` may be needed instead. On Linux, the scripts can also be made executable and run
|
||||
without the ``python`` command. Likewise, ``pip`` may need to be replaced with ``pip3``.
|
||||
|
||||
|
||||
.. _a_source_depend:
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
novelWriter has been designed to rely on as few dependencies as possible. Aside from the packages
|
||||
needed to communicate with the Qt GUI libraries, only one package is required for handling the XML
|
||||
format of the main project file. Everything else is handled with standard Python libraries.
|
||||
|
||||
The following Python packages are needed to run novelWriter:
|
||||
|
||||
* ``PyQt5`` – needed for connecting with the Qt5 libraries.
|
||||
* ``lxml`` – needed for full XML support.
|
||||
* ``PyEnchant`` – needed for spell checking (optional).
|
||||
|
||||
PyQt/Qt should be at least 5.3, but ideally 5.10 or higher for nearly all features to work. For
|
||||
instance, searching using regular expressions with full Unicode support requires 5.13. There is no
|
||||
known minimum version requirement for package ``lxml``, but the code was originally written with
|
||||
4.2, which is therefore set as the minimum. It may work on lower versions. You have to test it.
|
||||
|
||||
If you want spell checking, you must install the ``PyEnchant`` package. The spell check library
|
||||
must be at least 3.0 to work with Windows. On Linux, 2.0 also works fine.
|
||||
|
||||
If you install from PyPi, these dependencies should be installed automatically. If you install from
|
||||
source, dependencies can still be installed from PyPi with:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
pip install -r requirements.txt
|
||||
|
||||
|
||||
.. _a_source_install:
|
||||
|
||||
Install from Source
|
||||
===================
|
||||
|
||||
You can download the latest version of novelWriter from the source repository on GitHub_ and run
|
||||
the setup manually. It is equivalent to what the ``pip install`` command does, and it installs
|
||||
novelWriter to the default location for Python packages.
|
||||
|
||||
This step requires that you have ``setuptools`` installed on your system. If you don't have it
|
||||
installed, it can usually be installed from your distro's repository. For Debian and Ubuntu this is
|
||||
achieved with:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo apt install python3-setuptools
|
||||
|
||||
The package is also available from PyPi:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
pip install --user setuptools
|
||||
|
||||
With ``setuptools`` in place, novelWriter can be installed to the user space with:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
python setup.py install --user
|
||||
|
||||
.. tip::
|
||||
|
||||
The main setup script has a number of options that may be useful to you. You can list them by
|
||||
running ``python setup.py --help``.
|
||||
|
||||
|
||||
.. _a_source_i18n:
|
||||
|
||||
Building the Translation Files
|
||||
==============================
|
||||
|
||||
If you installed novelWriter from a package, the translation files should be pre-built and
|
||||
included. If you're running novelWriter from the source code, you will need to generate the files
|
||||
yourself. The files you need will be written to the ``novelwriter/assets/i18n`` folder, and will
|
||||
have the ``.qm`` file extension.
|
||||
|
||||
You can build the ``.qm`` files with:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
python setup.py qtlrelease
|
||||
|
||||
This requires that the Qt Linguist tool is installed on your system. On Ubuntu and Debian, the
|
||||
needed package is called `qttools5-dev-tools`.
|
||||
|
||||
.. note::
|
||||
If you want to improve novelWriter with translation files for another language, or update an
|
||||
existing translation, instructions for how to contribute can be found in the README.md file in
|
||||
the ``i18n`` folder of the source code.
|
||||
|
||||
|
||||
.. _a_source_docs:
|
||||
|
||||
Building the Documentation
|
||||
==========================
|
||||
|
||||
A local copy of this documentation can be generated as HTML. This requires the following Python
|
||||
packages from PyPi:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
pip install furo sphinx
|
||||
|
||||
The documentation can then be built from the root folder in the source code by running:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make -C docs html
|
||||
|
||||
If successful, the documentation should be available in the ``docs/build/html`` folder and you can
|
||||
open the ``index.html`` file in your browser.
|
||||
|
||||
You can also build a PDF manual from the documentation using the setup script:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
python setup.py manual
|
||||
|
||||
This will build the documentation as a PDF using LaTeX. The file will then be copied into the
|
||||
assets folder and made available in the :guilabel:`Help` menu in novelWriter. The Sphinx build
|
||||
system has a few extra dependencies when building the PDF. Please check the `Sphinx Docs`_ for more
|
||||
details.
|
||||
240
docs/source/int_started.rst
Normal file
@@ -0,0 +1,240 @@
|
||||
.. _a_started:
|
||||
|
||||
***************
|
||||
Getting Started
|
||||
***************
|
||||
|
||||
.. _brew docs: https://docs.brew.sh/Homebrew-and-Python
|
||||
.. _Enchant: https://abiword.github.io/enchant/
|
||||
.. _GitHub: https://github.com/vkbo/novelWriter
|
||||
.. _macOS: https://github.com/vkbo/novelWriter/issues/867
|
||||
.. _main website: https://novelwriter.io
|
||||
.. _PPA: https://launchpad.net/~vkbo/+archive/ubuntu/novelwriter
|
||||
.. _Pre-Release PPA: https://launchpad.net/~vkbo/+archive/ubuntu/novelwriter-pre
|
||||
.. _PyPi: https://pypi.org/project/novelWriter/
|
||||
.. _python.org: https://www.python.org/downloads/windows
|
||||
.. _Releases: https://github.com/vkbo/novelWriter/releases
|
||||
.. _RPM: https://github.com/vkbo/novelWriter/issues/907
|
||||
|
||||
If you are using Windows or a Debian-based Linux distribtuion, you can install novelWriter from
|
||||
package installers. If you are on macOS, you have the option to run novelWriter from a standalone
|
||||
folder. See :ref:`a_started_minimal`. This option is also available for Windows and Linux. The
|
||||
third option is to install novelWriter from the Python Package Index. See :ref:`a_started_pip`.
|
||||
|
||||
Spell checking in novelWriter is provided by a third party library called Enchant_. Generally, it
|
||||
should pull dictionaries from your operating system automatically. However, on Windows they must be
|
||||
installed manually. See :ref:`a_custom_dict` for more details.
|
||||
|
||||
.. admonition:: Help Wanted
|
||||
:class: seealso
|
||||
|
||||
If you would like to help making more installers, the project is currently loooking for people
|
||||
who can help make releases for Reed Hat-based Linux distros (RPM) and for macOS. See the issues
|
||||
posted for RPM_ and macOS_ on GitHub_.
|
||||
|
||||
|
||||
.. _a_started_windows:
|
||||
|
||||
Install on Windows
|
||||
==================
|
||||
|
||||
You can install novelWriter with both Python and library dependencies embedded using the Windows
|
||||
Installer (setup.exe) file from the `main website`_, or from the Releases_ page on GitHub.
|
||||
Installing it should be straightforward.
|
||||
|
||||
If you have any issues, try uninstalling the previous version and making a fresh install.
|
||||
|
||||
|
||||
.. _a_started_debian:
|
||||
|
||||
Install on Debian/Ubuntu/Mint
|
||||
=============================
|
||||
|
||||
A Debian package can be downloaded from the `main website`_, or from the Releases_ page on GitHub.
|
||||
This package should work on both Debian, Ubuntu and Linux Mint.
|
||||
|
||||
If you prefer, you can also add the novelWriter repository on Launchpad to your package manager.
|
||||
|
||||
|
||||
Ubuntu and Mint
|
||||
---------------
|
||||
|
||||
You can add the Ubuntu PPA_ and install novelWriter with the following commands.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo add-apt-repository ppa:vkbo/novelwriter
|
||||
sudo apt update
|
||||
sudo apt install novelwriter
|
||||
|
||||
If you want pre-releases, add the ``ppa:vkbo/novelwriter-pre`` repository instead.
|
||||
|
||||
|
||||
Debian
|
||||
------
|
||||
|
||||
Since this is a pure Python package, the Launchpad PPA can in principle also be used on Debian.
|
||||
However, the above command will fail to add the signing key.
|
||||
|
||||
Instead, run the following commands to add the repository and key:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/novelwriter-ppa-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys F19F1FCE50043114
|
||||
echo "deb [signed-by=/usr/share/keyrings/novelwriter-ppa-keyring.gpg] http://ppa.launchpad.net/vkbo/novelwriter/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/novelwriter.list
|
||||
|
||||
Then run the update and install commands as for Ubuntu:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo apt update
|
||||
sudo apt install novelwriter
|
||||
|
||||
.. note::
|
||||
|
||||
Please use the Ubuntu 20.04 packages for Debian. The newer Ubuntu packages use a different
|
||||
compression that Debian doesn't currently support.
|
||||
|
||||
|
||||
.. _a_started_minimal:
|
||||
|
||||
Minimal Package Install
|
||||
=======================
|
||||
|
||||
On the `main website`_ and on the Releases_ page on GitHub you will also find "Minimal Package"
|
||||
install files for Windows, Linux and macOS. These are zip files of just the files you need to run
|
||||
novelWriter on that specific platform.
|
||||
|
||||
These zip files don't include any dependencies, so you must install them separately.
|
||||
|
||||
|
||||
.. _a_started_minimal_windows:
|
||||
|
||||
Windows
|
||||
-------
|
||||
|
||||
First, make sure you have Python installed on your system. If you don't, you can download it from
|
||||
`python.org`_. Python 3.6 or higher is required, but it is recommended that you install the latest
|
||||
version.
|
||||
|
||||
Make sure you select the "Add Python to PATH" option during installation, otherwise the ``python``
|
||||
command will not work in the command line window.
|
||||
|
||||
.. figure:: images/python_win_install.png
|
||||
:align: center
|
||||
:width: 500
|
||||
|
||||
When Python is installed, extract the novelWriter zip file and move the extracted folder to a
|
||||
suitable location. You should probably not keep it on your desktop or in your downloads folder
|
||||
where it may be accidentally deleted. Instead, move and rename it to for instance
|
||||
``C:\novelWriter``.
|
||||
|
||||
After you've got the folder where you want it, open it and double-click the file named
|
||||
``windows_install.bat``. This will open a command line window and run the setup script to install
|
||||
dependencies, and add desktop and start menu icons.
|
||||
|
||||
Running ``windows_uninstall.bat`` will reverse the process if you wish to uninstall. After that,
|
||||
you can just delete the novelWriter folder.
|
||||
|
||||
|
||||
.. _a_started_minimal_linux:
|
||||
|
||||
Linux
|
||||
-----
|
||||
|
||||
On Linux you need to install the following packages on Debian-based distros, including Ubuntu and
|
||||
Linux Mint:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo apt install python3-pyqt5 python3-lxml python3-enchant
|
||||
|
||||
On Fedora, you need the following packages:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo dnf install python3-qt5 python3-lxml python3-enchant
|
||||
|
||||
A standard desktop launcher can be installed via the main setup script. It will create the needed
|
||||
desktop file and add it to the Applications menu. The necessary icons will also be installed, and a
|
||||
file association with ``.nwx`` files added.
|
||||
|
||||
To set this up, run the following from inside the extracted novelWriter folder:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
python3 setup.py xdg-install
|
||||
|
||||
This installs icons for the current user. Run with ``sudo`` to install system-wide.
|
||||
|
||||
To uninstall the icons, run:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
python3 setup.py xdg-uninstall
|
||||
|
||||
|
||||
.. _a_started_minimal_mac:
|
||||
|
||||
macOS
|
||||
-----
|
||||
|
||||
These instructions assume you're using brew, and have Python and pip set up. If not, see the
|
||||
`brew docs`_ for help. The main requirements for novelWriter are installed via the requirements
|
||||
file. You also need to install the ``pyobjc`` package, so you should run:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
pip3 install --user -r requirements.txt
|
||||
pip3 install --user pyobjc
|
||||
|
||||
For spell checking you may also need to install the enchant package. It comes with a lot of default
|
||||
dictionaries.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
brew install enchant
|
||||
|
||||
With the dependencies in place, you can launch the ``novelWriter.py`` script directly to run
|
||||
novelWriter.
|
||||
|
||||
.. note::
|
||||
Right now there isn't a better integration with macOS available. Contributions from someone more
|
||||
familiar with macOS would be very much appreciated. See the macOS_ issue on GitHub.
|
||||
|
||||
|
||||
.. _a_started_pip:
|
||||
|
||||
Install from PyPi
|
||||
=================
|
||||
|
||||
novelWriter is also available on the Python Package Index, or PyPi_. This install method works on
|
||||
all supported operating systems.
|
||||
|
||||
To install from PyPi you must first have the ``python`` and ``pip`` commands available on your
|
||||
system. If you don't, see specific instructions for your operating system in this documentation on
|
||||
how to get the Python environment set up.
|
||||
|
||||
To install novelWriter from PyPi, use the following command:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
pip install novelwriter
|
||||
|
||||
To upgrade an existing installation, use:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
pip install --upgrade novelwriter
|
||||
|
||||
When installing via pip, novelWriter can be launched from command line with:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
novelwriter
|
||||
|
||||
Make sure the install location for pip is in your PATH variable. This is not always the case by
|
||||
default.
|
||||
|
||||
.. note::
|
||||
On systems with both Python 2 and 3, you may have to replace the ``pip`` command with ``pip3``.
|
||||
@@ -1,3 +0,0 @@
|
||||
[fr]
|
||||
version = "2.7"
|
||||
authors = ["Jean-Michel Heras", "Veronica Berglyd Olsen"]
|
||||
@@ -1,223 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-28 22:09+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/features/dialogue.rst:5
|
||||
msgid "Dialogue Highlighting"
|
||||
msgstr "Mise en évidence du dialogue"
|
||||
|
||||
#: ../../source/features/dialogue.rst:7
|
||||
msgid ""
|
||||
"Dialogue recognition and colour highlighting is available both while "
|
||||
"you're writing and in generated manuscript documents."
|
||||
msgstr ""
|
||||
"La reconnaissance des dialogues et le surlignage des couleurs sont "
|
||||
"disponibles à la fois pendant que vous écrivez et dans les documents "
|
||||
"manuscrits générés."
|
||||
|
||||
#: ../../source/features/dialogue.rst:10
|
||||
msgid ""
|
||||
"The default language settings in UmbraEdit are for English. That "
|
||||
"includes the dialogue highlighting settings. But many dialogue styles "
|
||||
"are supported. You can tune a number of settings to fit your language "
|
||||
"and style preferences in the \"Text Highlighting\" section in "
|
||||
"**Preferences**. You can mix and match these settings."
|
||||
msgstr ""
|
||||
"Les paramètres linguistiques par défaut de UmbraEdit sont ceux de "
|
||||
"l'anglais. Cela inclut les paramètres de mise en évidence des dialogues. "
|
||||
"Mais de nombreux styles de dialogue sont pris en charge. Vous pouvez "
|
||||
"ajuster un certain nombre de paramètres en fonction de vos préférences "
|
||||
"linguistiques et stylistiques dans la section « Surlignage du texte » "
|
||||
"des **Préférences**. Vous pouvez combiner ces paramètres.\n"
|
||||
"\n"
|
||||
"Traduit avec DeepL.com (version gratuite)"
|
||||
|
||||
#: ../../source/features/dialogue.rst:17
|
||||
msgid "The **Text Highlighting** section of **Preferences**."
|
||||
msgstr "La section **Mise en évidence du texte** des **Préférences**."
|
||||
|
||||
#: ../../source/features/dialogue.rst:21
|
||||
msgid "Quoted Dialogue"
|
||||
msgstr "Dialogue entre guillemets"
|
||||
|
||||
#: ../../source/features/dialogue.rst:23
|
||||
msgid ""
|
||||
"By default, dialogue highlighting is enabled for the double quote "
|
||||
"symbols you have defined in the **Quotation Style** section of "
|
||||
"**Preferences**."
|
||||
msgstr ""
|
||||
"Par défaut, la mise en évidence du dialogue est activée pour les "
|
||||
"symboles de guillemets doubles que vous avez définis dans la section "
|
||||
"**Style de guillemets** des **Préférences**."
|
||||
|
||||
#: ../../source/features/dialogue.rst:28
|
||||
msgid "The **Quotation Style** section of **Preferences**."
|
||||
msgstr "La section **Style de guillemets** des **Préférences**."
|
||||
|
||||
#: ../../source/features/dialogue.rst:30
|
||||
msgid ""
|
||||
"You can change which quote symbols are highlighted by selecting one of "
|
||||
"\"None\", \"Single\", \"Double\", or \"Both\" from the \"Highlight "
|
||||
"dialogue\" setting under **Text Highlighting**."
|
||||
msgstr ""
|
||||
"Vous pouvez modifier les symboles de guillemets mis en évidence en "
|
||||
"sélectionnant « Aucun », « Simple », « Double » ou « Les deux » dans le "
|
||||
"paramètre « Mettre les dialogues en évidence » sous **Surlignage du "
|
||||
"texte**."
|
||||
|
||||
#: ../../source/features/dialogue.rst:33
|
||||
msgid ""
|
||||
"You can also enable or disable the \"Allow open-ended dialogue\" setting "
|
||||
"to allow for the style where multi-paragraph dialogue is not closed "
|
||||
"until the last paragraph."
|
||||
msgstr ""
|
||||
"Vous pouvez également activer ou désactiver le paramètre « Autoriser les "
|
||||
"dialogues ouverts » pour autoriser le style dans lequel les dialogues à "
|
||||
"plusieurs paragraphes ne sont pas clos avant le dernier paragraphe."
|
||||
|
||||
#: ../../source/features/dialogue.rst:36
|
||||
msgid "Limitations"
|
||||
msgstr "Restrictions"
|
||||
|
||||
#: ../../source/features/dialogue.rst:38
|
||||
msgid ""
|
||||
"Dialogue highlighting for single quotes is difficult to process when the "
|
||||
"same single quote symbol is also used for apostrophes. There isn't a "
|
||||
"good solution to this. Your best option in the cases where the "
|
||||
"highlighting is wrong is to insert an alternative apostrophe symbol "
|
||||
"instead. See :ref:`docs_more_typographical_symbols_apostrophe` for more "
|
||||
"details."
|
||||
msgstr ""
|
||||
"La mise en évidence du dialogue pour les guillemets simples est "
|
||||
"difficile à traiter lorsque le même symbole de guillemet simple est "
|
||||
"également utilisé pour les apostrophes. Il n'existe pas de bonne "
|
||||
"solution à ce problème. Votre meilleure option dans les cas où la mise "
|
||||
"en évidence est erronée est d'insérer un symbole d'apostrophe alternatif "
|
||||
"à la place. Voir :ref:`docs_more_typographical_symbols_apostrophe` pour "
|
||||
"plus de détails."
|
||||
|
||||
#: ../../source/features/dialogue.rst:45
|
||||
msgid "Alternative Dialogue"
|
||||
msgstr "Dialogue alternatif"
|
||||
|
||||
#: ../../source/features/dialogue.rst:47
|
||||
msgid ""
|
||||
"You can use the \"Alternative dialogue symbols\" setting for custom "
|
||||
"dialogue wrapper symbols. These are highlighted in a different colour "
|
||||
"than regular dialogue."
|
||||
msgstr ""
|
||||
"Vous pouvez utiliser le paramètre « Symboles de dialogue alternatifs » "
|
||||
"pour les symboles de dialogue personnalisés. Ceux-ci sont mis en "
|
||||
"évidence dans une couleur différente de celle des dialogues normaux."
|
||||
|
||||
#: ../../source/features/dialogue.rst:50
|
||||
msgid ""
|
||||
"The intended use case here is if you use an alternative style to "
|
||||
"distinguish a different style of communication. The feature idea came "
|
||||
"from a science fiction series where mind-to-mind communication used a "
|
||||
"different quotation style."
|
||||
msgstr ""
|
||||
"Le cas d'utilisation prévu ici est celui où vous utilisez un style "
|
||||
"alternatif pour distinguer un style de communication différent. L'idée "
|
||||
"est venue d'une série de science-fiction dans laquelle la communication "
|
||||
"d'esprit à esprit utilisait un style de citation différent."
|
||||
|
||||
#: ../../source/features/dialogue.rst:56
|
||||
msgid "Dialogue Line Symbols"
|
||||
msgstr "Symboles des lignes de dialogue"
|
||||
|
||||
#: ../../source/features/dialogue.rst:58
|
||||
msgid ""
|
||||
"In some languages, a single symbol at the start of a paragraph can "
|
||||
"indicate that the whole paragraph is dialogue. For instance, this symbol "
|
||||
"can be a short dash (en dash)."
|
||||
msgstr ""
|
||||
"Dans certaines langues, un seul symbole au début d'un paragraphe peut "
|
||||
"indiquer que tout le paragraphe est un dialogue. Par exemple, ce symbole "
|
||||
"peut être un tiret demi-cadratin."
|
||||
|
||||
#: ../../source/features/dialogue.rst:63
|
||||
msgid "An example of dialogue starting with a short dash."
|
||||
msgstr "Exemple de dialogue commençant par un tiret demi-cadratin."
|
||||
|
||||
#: ../../source/features/dialogue.rst:65
|
||||
msgid ""
|
||||
"You can enable this feature by adding the symbols to the \"Dialogue line "
|
||||
"symbols\" setting. Multiple symbols are allowed."
|
||||
msgstr ""
|
||||
"Vous pouvez activer cette fonction en ajoutant les symboles au paramètre "
|
||||
"« Symboles de la ligne de dialogue ». Plusieurs symboles sont autorisés."
|
||||
|
||||
#: ../../source/features/dialogue.rst:70
|
||||
msgid "Dialogue with Narrator Break"
|
||||
msgstr "Dialogue avec incise"
|
||||
|
||||
#: ../../source/features/dialogue.rst:72
|
||||
msgid ""
|
||||
"The dialogue symbol setting will not detect if the dialogue ends in the "
|
||||
"paragraph. In some styles there is no way to actually indicate the "
|
||||
"switch from dialogue to narration; in others there are. These a narrator "
|
||||
"break symbols are usually dashes. You can select one of the supported "
|
||||
"dash symbols for narrator breaks. These can be used with any of the "
|
||||
"above dialogue recognition settings."
|
||||
msgstr ""
|
||||
"Le réglage du symbole de dialogue ne détecte pas si le dialogue se "
|
||||
"termine dans le paragraphe. Dans certains styles, il n'y a aucun moyen "
|
||||
"d'indiquer le passage du dialogue à la narration ; dans d'autres, il y "
|
||||
"en a un. Ces symboles de rupture avec le narrateur sont généralement des "
|
||||
"tirets. Vous pouvez sélectionner l'un des symboles de tirets pris en "
|
||||
"charge pour les ruptures de narration. Ces symboles peuvent être "
|
||||
"utilisés avec n'importe lequel des paramètres de reconnaissance de "
|
||||
"dialogue ci-dessus."
|
||||
|
||||
#: ../../source/features/dialogue.rst:79
|
||||
msgid ""
|
||||
"An example of dialogue starting with a short dash and a long dash "
|
||||
"narrator break."
|
||||
msgstr ""
|
||||
"Exemple de dialogue commençant par un tiret demi-cadratin, une incise "
|
||||
"par un tiret cadratin."
|
||||
|
||||
#: ../../source/features/dialogue.rst:83
|
||||
msgid "Alternating Dialogue and Narration"
|
||||
msgstr "Dialogue et narration alternés"
|
||||
|
||||
#: ../../source/features/dialogue.rst:85
|
||||
msgid ""
|
||||
"The alternating dialogue and narration style is supported with the "
|
||||
"\"Alternating dialogue/narration symbol\" setting. It can be set to one "
|
||||
"of the supported dashes. This style will switch into dialogue mode when "
|
||||
"it first encounters the selected dash in a paragraph, and switch back "
|
||||
"out when it sees the next one, and so forth."
|
||||
msgstr ""
|
||||
"Le style de dialogue et de narration alternés est pris en charge par le "
|
||||
"paramètre « Symbole de dialogue/narration alternés ». Il peut être "
|
||||
"défini sur l'un des tirets pris en charge. Ce style passe en mode "
|
||||
"dialogue lorsqu'il rencontre pour la première fois le tiret sélectionné "
|
||||
"dans un paragraphe, et revient en mode dialogue lorsqu'il rencontre le "
|
||||
"tiret suivant, et ainsi de suite."
|
||||
|
||||
#: ../../source/features/dialogue.rst:92
|
||||
msgid "An example of alternating dialogue and narration using a long dash."
|
||||
msgstr ""
|
||||
"Exemple d'alternance de dialogue et de narration à l'aide d'un tiret "
|
||||
"cadratin."
|
||||
@@ -1,978 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-28 22:50+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:5
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Raccourcis clavier"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:7
|
||||
msgid ""
|
||||
"Most features in UmbraEdit are available as keyboard shortcuts. This "
|
||||
"is a reference list of those shortcuts. Most of them are also listed in "
|
||||
"the application's user interface."
|
||||
msgstr ""
|
||||
"La plupart des fonctionnalités de UmbraEdit sont disponibles sous "
|
||||
"forme de raccourcis clavier. Il s'agit d'une liste de référence de ces "
|
||||
"raccourcis. La plupart d'entre eux sont également listés dans "
|
||||
"l'interface utilisateur de l'application."
|
||||
|
||||
#: ../../source/features/shortcuts.rst:12
|
||||
msgid "On MacOS, replace :kbd:`Ctrl` with :kbd:`Cmd`."
|
||||
msgstr "Sous MacOS, remplacez :kbd:`Ctrl` par :kbd:`Cmd`."
|
||||
|
||||
#: ../../source/features/shortcuts.rst:16
|
||||
msgid "Main Window Shortcuts"
|
||||
msgstr "Raccourcis de la fenêtre principale"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Shortcut"
|
||||
msgstr "Raccourci"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Description"
|
||||
msgstr "Description"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`F1`"
|
||||
msgstr ":kbd:`F1`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Open the online user manual"
|
||||
msgstr "Ouvrir le manuel d'utilisation en ligne"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`F5`"
|
||||
msgstr ":kbd:`F5`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Open the **Build Manuscript** tool"
|
||||
msgstr "Ouvrir l'outil **Compiler le manuscrit**"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`F6`"
|
||||
msgstr ":kbd:`F6`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Open the **Writing Statistics** tool"
|
||||
msgstr "Ouvrir l'outil **Statistiques d'écriture**"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`F8`"
|
||||
msgstr ":kbd:`F8`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Toggle **Focus Mode**"
|
||||
msgstr "Basculer **Mode sans distraction**"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`F9`"
|
||||
msgstr ":kbd:`F9`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Re-build the project's index"
|
||||
msgstr "Reconstruire l'index du projet"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`F11`"
|
||||
msgstr ":kbd:`F11`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Toggle full screen mode"
|
||||
msgstr "Basculer en mode plein écran"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+,`"
|
||||
msgstr ":kbd:`Ctrl+,`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Open the **Preferences** dialog"
|
||||
msgstr "Ouvrir la boîte de dialogue **Préférences**"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+E`"
|
||||
msgstr ":kbd:`Ctrl+E`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Switch or toggle focus for the editor or viewer"
|
||||
msgstr ""
|
||||
"Changement ou basculement du focus de l'éditeur ou du visualisateur"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+T`"
|
||||
msgstr ":kbd:`Ctrl+T`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Switch or toggle focus for the project tree or novel view"
|
||||
msgstr ""
|
||||
"Changement de focalisation de l'arborescence du projet ou de la vue du "
|
||||
"roman"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+Q`"
|
||||
msgstr ":kbd:`Ctrl+Q`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Exit UmbraEdit"
|
||||
msgstr "Quitter UmbraEdit"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+Shift+,`"
|
||||
msgstr ":kbd:`Ctrl+Maj+,`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Open the **Project Settings** dialog"
|
||||
msgstr "Ouvrir la boîte de dialogue **Paramètres du projet**"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+Shift+O`"
|
||||
msgstr ":kbd:`Ctrl+Maj+O`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Open the Welcome dialog to open or create a project"
|
||||
msgstr ""
|
||||
"Ouvrir la boîte de dialogue de bienvenue pour ouvrir ou créer un projet"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+Shift+S`"
|
||||
msgstr ":kbd:`Ctrl+Maj+S`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Save the current project"
|
||||
msgstr "Enregistrer le projet en cours"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+Shift+T`"
|
||||
msgstr ":kbd:`Ctrl+Maj+T`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Switch focus to the outline view"
|
||||
msgstr "Basculer vers la vue d'ensemble"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+Shift+W`"
|
||||
msgstr ":kbd:`Ctrl+Maj+W`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Close the current project"
|
||||
msgstr "Fermer le projet en cours"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Shift+F1`"
|
||||
msgstr ":kbd:`Maj+F1`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Open the local user manual (PDF) if it is available"
|
||||
msgstr "Ouvrir le manuel d'utilisation local (PDF) s'il est disponible"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Shift+F6`"
|
||||
msgstr ":kbd:`Maj+F6`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Open the **Project Details** dialog"
|
||||
msgstr "Ouvrir la boîte de dialogue **Détails du projet**"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:41
|
||||
msgid "Project Tree Shortcuts"
|
||||
msgstr "Raccourcis de l'arborescence du projet"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`F2`"
|
||||
msgstr ":kbd:`F2`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Edit the label of the selected item"
|
||||
msgstr "Modifier le libellé de l'élément sélectionné"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Return`"
|
||||
msgstr ":kbd:`Retour`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Open the selected document in the editor"
|
||||
msgstr "Ouvrir le document sélectionné dans l'éditeur"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Alt+Up`"
|
||||
msgstr ":kbd:`Alt+Haut`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Jump or go to the previous item at same level in the tree"
|
||||
msgstr ""
|
||||
"Sauter ou aller à l'élément précédent au même niveau dans 'l'arborescence"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Alt+Down`"
|
||||
msgstr ":kbd:`Alt+Bas`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Jump or go to the next item at same level in the tree"
|
||||
msgstr ""
|
||||
"Sauter ou aller à l'élément suivant au même niveau dans l'arborescence"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Alt+Left`"
|
||||
msgstr ":kbd:`Alt+Gauche`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Jump to the parent item in the tree"
|
||||
msgstr "Sauter à l'élément parent dans l'arborescence"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Alt+Right`"
|
||||
msgstr ":kbd:`Alt+Droite`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Jump to the first child item in the project tree"
|
||||
msgstr "Sauter au premier élément enfant dans l'arborescence du projet"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+.`"
|
||||
msgstr ":kbd:`Ctrl+.`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Open the context menu on the selected item"
|
||||
msgstr "Ouvrir le menu contextuel de l'élément sélectionné"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+L`"
|
||||
msgstr ":kbd:`Ctrl+L`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Open the **Quick Links** menu"
|
||||
msgstr "Ouvrir le menu **Liens rapides**"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+N`"
|
||||
msgstr ":kbd:`Ctrl+N`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Open the **Create New Item** menu"
|
||||
msgstr "Ouvrir le menu **Créer un nouvel élément**"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+O`"
|
||||
msgstr ":kbd:`Ctrl+O`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+R`"
|
||||
msgstr ":kbd:`Ctrl+R`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Open the selected document in the viewer"
|
||||
msgstr "Ouvrir le document sélectionné dans le visualisateur"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+Up`"
|
||||
msgstr ":kbd:`Ctrl+Haut`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Move selected item one step up in the tree"
|
||||
msgstr "Déplacer l'élément sélectionné d'un cran dans l'arborescence"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+Down`"
|
||||
msgstr ":kbd:`Ctrl+Bas`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Move selected item one step down in the tree"
|
||||
msgstr "Déplacer l'élément sélectionné d'un cran dans l'arborescence"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+Shift+Del`"
|
||||
msgstr ":kbd:`Ctrl+Maj+Suppr`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Move the selected item to Trash"
|
||||
msgstr "Déplacer l'élément sélectionné vers la corbeille"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:63
|
||||
msgid "Document Editor Shortcuts"
|
||||
msgstr "Raccourcis de l'éditeur de documents"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:67
|
||||
msgid "Text Search Shortcuts"
|
||||
msgstr "Raccourcis de recherche de texte"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`F3`"
|
||||
msgstr ":kbd:`F3`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Find the next occurrence of the search word"
|
||||
msgstr "Trouver la prochaine occurrence du mot recherché"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+F`"
|
||||
msgstr ":kbd:`Ctrl+F`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Open search and look for the selected word"
|
||||
msgstr "Ouvrir la recherche et rechercher le mot sélectionné"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+G`"
|
||||
msgstr ":kbd:`Ctrl+G`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+H`"
|
||||
msgstr ":kbd:`Ctrl+H`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Open replace and look for the selected word (Mac :kbd:`Cmd+=`)"
|
||||
msgstr ""
|
||||
"Ouvrir remplacer et rechercher le mot sélectionné (Mac :kbd:`Cmd+=`)"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+Shift+1`"
|
||||
msgstr ":kbd:`Ctrl+Maj+1`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Replace selected occurrence, and move to the next"
|
||||
msgstr "Remplacer l'occurrence sélectionnée et passer à la suivante"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+Shift+G`"
|
||||
msgstr ":kbd:`Ctrl+Maj+G`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Find the previous occurrence of the search word"
|
||||
msgstr "Trouver l'occurrence précédente du mot recherché"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+Shift+F`"
|
||||
msgstr ":kbd:`Ctrl+Maj+F`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Open project search and look for the selected word"
|
||||
msgstr "Ouvrir la recherche de projet et recherchez le mot sélectionné"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Shift+F3`"
|
||||
msgstr ":kbd:`Maj+F3`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:83
|
||||
msgid "Text Formatting Shortcuts"
|
||||
msgstr "Raccourcis de mise en forme du texte"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+'`"
|
||||
msgstr ":kbd:`Ctrl+'`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Wrap selected text, or word under cursor, in single quotes"
|
||||
msgstr ""
|
||||
"Mettre le texte sélectionné, ou le mot sous le curseur, entre guillemets "
|
||||
"simples"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+\"`"
|
||||
msgstr ":kbd:`Ctrl+\"`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Wrap selected text, or word under cursor, in double quotes"
|
||||
msgstr ""
|
||||
"Mettre le texte sélectionné, ou le mot sous le curseur, entre guillemets"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+/`"
|
||||
msgstr ":kbd:`Ctrl+/`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Toggle comment format for block or selected text"
|
||||
msgstr ""
|
||||
"Modifier le format des commentaires pour le bloc ou le texte sélectionné"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+0`"
|
||||
msgstr ":kbd:`Ctrl+0`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Remove format for block or selected text"
|
||||
msgstr "Supprimer le format d'un bloc ou d'un texte sélectionné"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+1`"
|
||||
msgstr ":kbd:`Ctrl+1`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Change block format to heading level 1"
|
||||
msgstr "Modifier le format du bloc au niveau de titre 1"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+2`"
|
||||
msgstr ":kbd:`Ctrl+2`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Change block format to heading level 2"
|
||||
msgstr "Modifier le format du bloc en titre de niveau 2"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+3`"
|
||||
msgstr ":kbd:`Ctrl+3`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Change block format to heading level 3"
|
||||
msgstr "Modifier le format du bloc en titre de niveau 3"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+4`"
|
||||
msgstr ":kbd:`Ctrl+4`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Change block format to heading level 4"
|
||||
msgstr "Modifier le format du bloc en titre de niveau 4"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+5`"
|
||||
msgstr ":kbd:`Ctrl+5`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Change block alignment to left-aligned"
|
||||
msgstr "Aligner le bloc à gauche"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+6`"
|
||||
msgstr ":kbd:`Ctrl+6`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Change block alignment to centred"
|
||||
msgstr "Aligner le bloc au centre"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+7`"
|
||||
msgstr ":kbd:`Ctrl+7`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Change block alignment to right-aligned"
|
||||
msgstr "Aligner le bloc à droite"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+8`"
|
||||
msgstr ":kbd:`Ctrl+8`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Add a left margin to the block"
|
||||
msgstr "Ajouter une marge gauche au bloc"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+9`"
|
||||
msgstr ":kbd:`Ctrl+9`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Add a right margin to the block"
|
||||
msgstr "Ajouter une marge droite au bloc"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+B`"
|
||||
msgstr ":kbd:`Ctrl+B`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Format selected text, or word under cursor, with bold"
|
||||
msgstr "Formater le texte sélectionné, ou le mot sous le curseur, en gras"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+D`"
|
||||
msgstr ":kbd:`Ctrl+D`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Format selected text, or word under cursor, with strike through"
|
||||
msgstr ""
|
||||
"Formater le texte sélectionné, ou le mot sous le curseur, en le barrant"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+I`"
|
||||
msgstr ":kbd:`Ctrl+I`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Format selected text, or word under cursor, with italic"
|
||||
msgstr ""
|
||||
"Formater le texte sélectionné, ou le mot sous le curseur, avec de "
|
||||
"l'italique"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+Shift+/`"
|
||||
msgstr ":kbd:`Ctrl+Maj+/`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+Shift+D`"
|
||||
msgstr ":kbd:`Ctrl+Maj+D`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Toggle ignored text format for block or selected text"
|
||||
msgstr ""
|
||||
"Basculer le format de texte ignoré pour le bloc ou le texte sélectionné"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:109
|
||||
msgid "Other Editor Shortcuts"
|
||||
msgstr "Autres raccourcis de l'éditeur"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`F7`"
|
||||
msgstr ":kbd:`F7`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Re-run the spell checker on the document"
|
||||
msgstr "Ré-exécuter le correcteur orthographique sur le document"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Open the context menu at the current cursor location"
|
||||
msgstr "Ouvrir le menu contextuel à l'emplacement actuel du curseur"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+A`"
|
||||
msgstr ":kbd:`Ctrl+A`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Select all text in the document"
|
||||
msgstr "Sélectionner tout le texte dans le document"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+C`"
|
||||
msgstr ":kbd:`Ctrl+C`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Copy selected text to clipboard"
|
||||
msgstr "Copier le texte sélectionné dans le presse-papiers"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`"
|
||||
msgstr ":kbd:`Ctrl+K`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ""
|
||||
"Activate the insert commands (see list in :ref:"
|
||||
"`docs_features_shortcuts_insert`)"
|
||||
msgstr ""
|
||||
"Activer les commandes d'insertion (voir la liste dans :ref:"
|
||||
"`docs_features_shortcuts_insert`)"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Open or reload the current document in the viewer"
|
||||
msgstr "Ouvrir ou recharger le document en cours dans le visualisateur"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+S`"
|
||||
msgstr ":kbd:`Ctrl+S`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Save the current document"
|
||||
msgstr "Enregistrer le document en cours"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+V`"
|
||||
msgstr ":kbd:`Ctrl+V`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Paste text from clipboard to cursor position"
|
||||
msgstr "Coller le texte du presse-papiers à la position du curseur"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+W`"
|
||||
msgstr ":kbd:`Ctrl+W`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Close the current document"
|
||||
msgstr "Fermer le document en cours"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+X`"
|
||||
msgstr ":kbd:`Ctrl+X`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Cut selected text to clipboard"
|
||||
msgstr "Couper le texte sélectionné dans le presse-papiers"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+Y`"
|
||||
msgstr ":kbd:`Ctrl+Y`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Redo latest undo"
|
||||
msgstr "Rétablir la dernière annulation"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+Z`"
|
||||
msgstr ":kbd:`Ctrl+Z`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Undo latest changes"
|
||||
msgstr "Annuler les dernières modifications"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+Backspace`"
|
||||
msgstr ":kbd:`Ctrl+Retour arrière`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Delete the word before the cursor"
|
||||
msgstr "Supprimer le mot précédant le curseur"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+Del`"
|
||||
msgstr ":kbd:`Ctrl+Suppr`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Delete the word after the cursor"
|
||||
msgstr "Supprimer le mot après le curseur"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+F7`"
|
||||
msgstr ":kbd:`Ctrl+F7`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Toggle spell checking"
|
||||
msgstr "Vérifier l'orthographe"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+Return`"
|
||||
msgstr ":kbd:`Ctrl+Retour`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Open the tag or reference under the cursor in the viewer"
|
||||
msgstr ""
|
||||
"Ouvrir la balise ou la référence sous le curseur dans le visualiseur"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+Shift+A`"
|
||||
msgstr ":kbd:`Ctrl+Maj+A`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Select all text in the current paragraph"
|
||||
msgstr "Sélectionner tout le texte du paragraphe en cours"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:136
|
||||
msgid "Insert Shortcuts"
|
||||
msgstr "Raccourcis d'insertion"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:138
|
||||
msgid ""
|
||||
"A set of insert features are also available through shortcuts, but they "
|
||||
"require a double combination of key sequences. The insert feature is "
|
||||
"activated with :kbd:`Ctrl+K`, followed by a key or key combination for "
|
||||
"the inserted content."
|
||||
msgstr ""
|
||||
"Un ensemble de fonctions d'insertion sont également disponibles par le "
|
||||
"biais de raccourcis, mais elles nécessitent une double combinaison de "
|
||||
"séquences de touches. La fonction d'insertion est activée avec :kbd:"
|
||||
"`Ctrl+K`, suivi d'une touche ou d'une combinaison de touches pour le "
|
||||
"contenu inséré."
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`Space`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`Espace`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a non-breaking space"
|
||||
msgstr "Insérer un espace insécable"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`_`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`_`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a long dash (em dash)"
|
||||
msgstr "Insérer un tiret long"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`.`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`.`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert an ellipsis"
|
||||
msgstr "Insérer un point de suspension"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`'`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`'`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a modifier apostrophe"
|
||||
msgstr "Insérer une apostrophe"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`*`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`*`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a list bullet"
|
||||
msgstr "Insérer une puce de liste"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`%`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`%`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a per mille symbol"
|
||||
msgstr "Insérer un symbole pour mille"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`~`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`~`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a figure dash (same width as a number)"
|
||||
msgstr "Insérer un tiret (de la même largeur qu'un chiffre)"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`−`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`−`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a short dash (en dash)"
|
||||
msgstr "Insérer un tiret court"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`1`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`1`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a left single quote"
|
||||
msgstr "Insérer un guillemet simple gauche"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`2`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`2`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a right single quote"
|
||||
msgstr "Insérer un guillemet simple à droite"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`3`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`3`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a left double quote"
|
||||
msgstr "Insérer un double guillemet gauche"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`4`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`4`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a right double quote"
|
||||
msgstr "Insérer un double guillemet droit"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`C`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`C`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a ``@char`` keyword"
|
||||
msgstr "Insérer un mot-clé ``@char``"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`E`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`E`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert an ``@entity`` keyword"
|
||||
msgstr "Insérer un mot-clé ``@entity``"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`F`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`F`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a ``@focus`` keyword"
|
||||
msgstr "Insérer un mot-clé ``@focus``"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`G`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`G`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a ``@tag`` keyword"
|
||||
msgstr "Insérer un mot-clé ``@tag``"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`H`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`H`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a short description comment"
|
||||
msgstr "Insérer un bref commentaire de description"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`L`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`L`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a ``@location`` keyword"
|
||||
msgstr "Insérer un mot-clé ``@location``"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`M`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`M`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a ``@mention`` keyword"
|
||||
msgstr "Insérer un mot-clé ``@mention``"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`O`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`O`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert an ``@object`` keyword"
|
||||
msgstr "Insérer un mot-clé ``@object``"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`P`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`P`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a ``@plot`` keyword"
|
||||
msgstr "Insérer un mot-clé `@plot``"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`S`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`S`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a synopsis comment"
|
||||
msgstr "Insérer un commentaire de synopsis"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`T`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`T`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a ``@time`` keyword"
|
||||
msgstr "Insérer un mot-clé ``@time``"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`V`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`V`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a ``@pov`` keyword"
|
||||
msgstr "Insérer un mot-clé ``@pov``"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`X`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`X`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a ``@custom`` keyword"
|
||||
msgstr "Insérer un mot-clé ``@custom``"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`Ctrl+Space`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`Ctrl+Espace`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a thin non-breaking space"
|
||||
msgstr "Insérer un espace fin insécable"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`Ctrl+_`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`Ctrl+_`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a horizontal bar (quotation dash)"
|
||||
msgstr "Insérer une barre horizontale"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`Ctrl+'`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`Ctrl+'`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a prime"
|
||||
msgstr "Insérer une prime"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`Ctrl+\"`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`Ctrl+\"`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a double prime"
|
||||
msgstr "Insérer une double prime"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`Ctrl+*`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`Ctrl+*`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a flower mark (alternative bullet)"
|
||||
msgstr "Insérer une fleur (puce alternative)"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`Ctrl+−`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`Ctrl+−`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a hyphen bullet (alternative bullet)"
|
||||
msgstr "Insérer une puce à tiret (puce alternative)"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`Ctrl+D`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`Ctrl+D`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a division sign"
|
||||
msgstr "Insérer un signe de division"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`Ctrl+O`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`Ctrl+O`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a degree symbol"
|
||||
msgstr "Insérer un symbole de degré"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`Ctrl+X`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`Ctrl+X`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a times sign"
|
||||
msgstr "Insert a times sign"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+K`, :kbd:`Shift+Space`"
|
||||
msgstr ":kbd:`Ctrl+K`, :kbd:`Maj+Espace`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Insert a thin space"
|
||||
msgstr "Insérer un espace fin"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:183
|
||||
msgid "Document Viewer Shortcuts"
|
||||
msgstr "Raccourcis de la fenêtre de visualisation des documents"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Move backward in the view history"
|
||||
msgstr "Reculer dans l'historique des vues"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Move forward in the view history"
|
||||
msgstr "Avancer dans l'historique des vues"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid ":kbd:`Ctrl+Shift+R`"
|
||||
msgstr ":kbd:`Ctrl+Maj+R`"
|
||||
|
||||
#: ../../source/features/shortcuts.rst:1
|
||||
msgid "Close the document viewer"
|
||||
msgstr "Fermer l'afficheur de documents"
|
||||
@@ -1,221 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-28 22:28+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/features/story_comments.rst:5
|
||||
msgid "Story Comments"
|
||||
msgstr "Commentaires sur l'histoire"
|
||||
|
||||
#: ../../source/features/story_comments.rst:7
|
||||
msgid ""
|
||||
"A special set of comment styles allow for annotating your text with "
|
||||
"structure information. There are two styles of comments available. They "
|
||||
"are an extension to regular comments as described in :ref:"
|
||||
"`docs_usage_comments`."
|
||||
msgstr ""
|
||||
"Un ensemble spécial de styles de commentaires permet d'annoter votre "
|
||||
"texte avec des informations sur la structure. Deux styles de "
|
||||
"commentaires sont disponibles. Ils sont une extension des commentaires "
|
||||
"normaux tels que décrits dans :ref:`docs_usage_comments`."
|
||||
|
||||
#: ../../source/features/story_comments.rst:15
|
||||
msgid "Story Structure Comments"
|
||||
msgstr "Commentaires sur la structure de l'histoire"
|
||||
|
||||
#: ../../source/features/story_comments.rst:17
|
||||
msgid ""
|
||||
"You can annotate story structure by using the ``%Story`` style of "
|
||||
"comment. To use the feature, make the first word of a comment ``Story``, "
|
||||
"followed by a period, a structure term, a colon, a space and the text "
|
||||
"for that term."
|
||||
msgstr ""
|
||||
"Vous pouvez annoter la structure de l'histoire en utilisant le style de "
|
||||
"commentaire ``%Story``. Pour utiliser cette fonctionnalité, le premier "
|
||||
"mot du commentaire doit être ``Story``, suivi d'un point, d'un terme de "
|
||||
"structure, de deux points, d'un espace et du texte correspondant à ce "
|
||||
"terme."
|
||||
|
||||
#: ../../source/features/story_comments.rst:23
|
||||
#: ../../source/features/story_comments.rst:88
|
||||
msgid "Usage"
|
||||
msgstr "Utilisation"
|
||||
|
||||
#: ../../source/features/story_comments.rst:25
|
||||
msgid ""
|
||||
"The story term can be anything that you want to track in the manuscript. "
|
||||
"This construct is intended to make it easier to extract metadata from a "
|
||||
"work to perform a structural analysis of the story."
|
||||
msgstr ""
|
||||
"Le terme de l'histoire peut être n'importe quoi que vous voulez suivre "
|
||||
"dans le manuscrit. Cette construction est destinée à faciliter "
|
||||
"l'extraction des métadonnées d'une œuvre afin d'effectuer une analyse "
|
||||
"structurelle de l'histoire."
|
||||
|
||||
#: ../../source/features/story_comments.rst:28
|
||||
msgid ""
|
||||
"There are probably as many ways to examine story structure as there are "
|
||||
"authors and editors combined. For this reason the story tag is flexible. "
|
||||
"You can use any terms you want and track any aspect of the story that "
|
||||
"serves your purposes."
|
||||
msgstr ""
|
||||
"Il y a probablement autant de façons d'examiner la structure d'une "
|
||||
"histoire qu'il y a d'auteurs et d'éditeurs réunis. C'est la raison pour "
|
||||
"laquelle l'étiquette « histoire » est flexible. Vous pouvez utiliser les "
|
||||
"termes de votre choix et suivre tous les aspects de l'histoire qui vous "
|
||||
"intéressent."
|
||||
|
||||
#: ../../source/features/story_comments.rst:32
|
||||
msgid ""
|
||||
"An example method has been advanced by Shawn Coyne in *The Story Grid*. "
|
||||
"This method asserts that a story is composed of \"beats\", and that each "
|
||||
"beat has an inciting incident, a complication, a crisis, and a "
|
||||
"resolution. One might capture these elements of a beat where a character "
|
||||
"overcomes their fear of giving a speech as:"
|
||||
msgstr ""
|
||||
"Un exemple de méthode a été proposé par Shawn Coyne dans *The Story "
|
||||
"Grid*. Cette méthode affirme qu'une histoire est composée de « temps » "
|
||||
"et que chaque temps comporte un incident déclencheur, une complication, "
|
||||
"une crise et une résolution. On pourrait saisir les éléments d'un temps "
|
||||
"où un personnage surmonte sa peur de faire un discours comme suit :"
|
||||
|
||||
#: ../../source/features/story_comments.rst:37
|
||||
#: ../../source/features/story_comments.rst:94
|
||||
msgid ":bdg-info:`Example`"
|
||||
msgstr ":bdg-info:`Exemple`"
|
||||
|
||||
#: ../../source/features/story_comments.rst:50
|
||||
msgid ""
|
||||
"Other analytical models propose tracking a scene's pace, how it affects "
|
||||
"the mood of the story, or which element(s) of the story's genre are "
|
||||
"being satisfied. An author can use this mechanism to track any element "
|
||||
"of a scene. Some examples include time of day, how much time passes in "
|
||||
"the scene, or even the physical form of a shape-shifting character. If a "
|
||||
"story involves magic, one could track which wand a main character has in "
|
||||
"hand. It's up to tha author."
|
||||
msgstr ""
|
||||
"D'autres modèles analytiques proposent de suivre le rythme d'une scène, "
|
||||
"la façon dont il affecte l'ambiance de l'histoire ou les éléments du "
|
||||
"genre de l'histoire qui sont satisfaits. Un auteur peut utiliser ce "
|
||||
"mécanisme pour suivre n'importe quel élément d'une scène. Il peut "
|
||||
"s'agir, par exemple, de l'heure, du temps qui s'écoule dans la scène ou "
|
||||
"même de la forme physique d'un personnage qui change de forme. Si "
|
||||
"l'histoire fait appel à la magie, il est possible de savoir quelle "
|
||||
"baguette le personnage principal tient en main. C'est à l'auteur de "
|
||||
"décider."
|
||||
|
||||
#: ../../source/features/story_comments.rst:56
|
||||
msgid ""
|
||||
"When the story and other scene metadata is extracted into a tabular "
|
||||
"form, it is possible to get a comprehensive overview of the story and to "
|
||||
"identify possible issues. For example, so many fast-paced scenes without "
|
||||
"a break that readers might become fatigued or over-stimulated."
|
||||
msgstr ""
|
||||
"Lorsque les métadonnées de l'histoire et d'autres scènes sont extraites "
|
||||
"sous forme de tableau, il est possible d'obtenir une vue d'ensemble de "
|
||||
"l'histoire et d'identifier les problèmes éventuels. Par exemple, un si "
|
||||
"grand nombre de scènes au rythme rapide, sans pause, que les lecteurs "
|
||||
"risquent de se fatiguer ou d'être trop stimulés."
|
||||
|
||||
#: ../../source/features/story_comments.rst:62
|
||||
#: ../../source/features/story_comments.rst:106
|
||||
msgid "Output"
|
||||
msgstr "Production"
|
||||
|
||||
#: ../../source/features/story_comments.rst:64
|
||||
msgid ""
|
||||
"The story structure comments can be included in the manuscript, and are "
|
||||
"formatted similarly to the synopsis comments:"
|
||||
msgstr ""
|
||||
"Les commentaires sur la structure de l'histoire peuvent être inclus dans "
|
||||
"le manuscrit et sont formatés de la même manière que les commentaires "
|
||||
"sur le synopsis :"
|
||||
|
||||
#: ../../source/features/story_comments.rst:69
|
||||
msgid "A set of story structure comments as shown in the Manuscript tool."
|
||||
msgstr ""
|
||||
"Une série de commentaires sur la structure de l'histoire, tels qu'ils "
|
||||
"apparaissent dans l'outil Manuscrit."
|
||||
|
||||
#: ../../source/features/story_comments.rst:71
|
||||
msgid ""
|
||||
"When you export your project data from the Outline View, all story "
|
||||
"structure terms are added as columns to the exported file, which can "
|
||||
"then be opened in the spread sheet software of your choice."
|
||||
msgstr ""
|
||||
"Lorsque vous exportez les données de votre projet à partir de la vue en "
|
||||
"plan, tous les termes de la structure du récit sont ajoutés en tant que "
|
||||
"colonnes au fichier exporté, qui peut ensuite être ouvert dans le "
|
||||
"logiciel de feuille de calcul de votre choix."
|
||||
|
||||
#: ../../source/features/story_comments.rst:76
|
||||
msgid "Story Notes"
|
||||
msgstr "Notes sur l'histoire"
|
||||
|
||||
#: ../../source/features/story_comments.rst:78
|
||||
msgid ""
|
||||
"Story notes are similar to story structure comments, but have no "
|
||||
"predefined meaning. Essentially they are a generalisation of the story "
|
||||
"structure comment, and the only point of having this additional format "
|
||||
"is to allow you do filter them in and out of your manuscript "
|
||||
"independently."
|
||||
msgstr ""
|
||||
"Les notes de récit sont similaires aux commentaires de structure de "
|
||||
"récit, mais n'ont pas de signification prédéfinie. Il s'agit "
|
||||
"essentiellement d'une généralisation du commentaire de structure, et le "
|
||||
"seul intérêt de ce format supplémentaire est de vous permettre de les "
|
||||
"filtrer dans et hors de votre manuscrit de manière indépendante."
|
||||
|
||||
#: ../../source/features/story_comments.rst:82
|
||||
msgid ""
|
||||
"You can annotate story notes by using the ``%Note`` style of comment. To "
|
||||
"use the feature, make the first word of a comment ``Note``, followed by "
|
||||
"a period, a term, a colon, a space and the text for the note."
|
||||
msgstr ""
|
||||
"Vous pouvez annoter les notes d'articles en utilisant le style de "
|
||||
"commentaire ``%Note``. Pour utiliser cette fonctionnalité, le premier "
|
||||
"mot du commentaire doit être « Note », suivi d'un point, d'un terme, de "
|
||||
"deux points, d'un espace et du texte de la note."
|
||||
|
||||
#: ../../source/features/story_comments.rst:90
|
||||
msgid ""
|
||||
"These notes are free form, but one intended use case is to add "
|
||||
"consistency annotations to your text to remind yourself where you have "
|
||||
"described something that must be checked against other parts of your "
|
||||
"text later on."
|
||||
msgstr ""
|
||||
"Ces notes sont libres, mais l'une des utilisations prévues est d'ajouter "
|
||||
"des annotations de cohérence à votre texte pour vous rappeler où vous "
|
||||
"avez décrit quelque chose qui doit être vérifié ultérieurement par "
|
||||
"rapport à d'autres parties de votre texte."
|
||||
|
||||
#: ../../source/features/story_comments.rst:108
|
||||
msgid ""
|
||||
"Story notes are included in the manuscript in exactly the same way story "
|
||||
"structure comments are, but has a separate inclusion setting in the "
|
||||
"build settings. They are also included in CSV exports from the **Outline "
|
||||
"View**."
|
||||
msgstr ""
|
||||
"Les notes de récit sont incluses dans le manuscrit de la même manière "
|
||||
"que les commentaires sur la structure du récit, mais elles ont un "
|
||||
"paramètre d'inclusion distinct dans les paramètres de construction. "
|
||||
"Elles sont également incluses dans les exportations CSV à partir de la "
|
||||
"**Vue d'ensemble**."
|
||||
@@ -1,120 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-27 20:56+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/index.rst:32
|
||||
msgid "More Documents"
|
||||
msgstr "Plus d'informations"
|
||||
|
||||
#: ../../source/index.rst:38
|
||||
msgid "Getting Started"
|
||||
msgstr "Pour commencer"
|
||||
|
||||
#: ../../source/index.rst:53
|
||||
msgid "The User Interface"
|
||||
msgstr "Interface utilisateur"
|
||||
|
||||
#: ../../source/index.rst:64
|
||||
msgid "Other Features"
|
||||
msgstr "Autres fonctionnalités"
|
||||
|
||||
#: ../../source/index.rst:72
|
||||
msgid "In-Depth Topics"
|
||||
msgstr "En détail"
|
||||
|
||||
#: ../../source/index.rst:82
|
||||
msgid "Technical Topics"
|
||||
msgstr "Rubriques techniques"
|
||||
|
||||
#: ../../source/index.rst:3
|
||||
msgid "User Guide"
|
||||
msgstr "Guide d'utilisation"
|
||||
|
||||
#: ../../source/index.rst:5
|
||||
msgid "**Release Version:** |release|"
|
||||
msgstr "**Version :** |release|"
|
||||
|
||||
#: ../../source/index.rst:6
|
||||
msgid "**Updated:** |today|"
|
||||
msgstr "**Mise à jour :** |today|"
|
||||
|
||||
#: ../../source/index.rst:8
|
||||
msgid ""
|
||||
"UmbraEdit is an open source plain text editor designed for writing "
|
||||
"novels assembled from individual text documents. It uses a minimal "
|
||||
"formatting syntax inspired by Markdown, and adds a meta data syntax for "
|
||||
"comments, synopsis, and cross-referencing. It is designed to be a simple "
|
||||
"text editor that allows for easy organisation of text and notes, using "
|
||||
"human readable text files as storage for robustness."
|
||||
msgstr ""
|
||||
"UmbraEdit est un éditeur de texte brut open source conçu pour écrire "
|
||||
"des romans assemblés à partir de documents texte individuels. Il utilise "
|
||||
"une syntaxe de formatage minimale inspirée de Markdown, et ajoute une "
|
||||
"syntaxe de métadonnées pour les commentaires, les synopsis et les "
|
||||
"références croisées. Il est conçu pour être un éditeur de texte simple "
|
||||
"qui permet d'organiser facilement le texte et les notes, en utilisant des "
|
||||
"fichiers texte lisibles par l'homme comme stockage pour plus de "
|
||||
"robustesse."
|
||||
|
||||
#: ../../source/index.rst:19
|
||||
msgid "**Useful Links**"
|
||||
msgstr "**Liens utiles**"
|
||||
|
||||
#: ../../source/index.rst:21
|
||||
msgid "Website: https://umbraedit.io"
|
||||
msgstr "Site web : https://umbraedit.io"
|
||||
|
||||
#: ../../source/index.rst:22
|
||||
msgid "Documentation: https://docs.umbraedit.io"
|
||||
msgstr "Documentation: https://docs.umbraedit.io"
|
||||
|
||||
#: ../../source/index.rst:23
|
||||
msgid "Public Releases: https://releases.umbraedit.io"
|
||||
msgstr "Public Releases: https://releases.umbraedit.io"
|
||||
|
||||
#: ../../source/index.rst:24
|
||||
msgid "Internationalisation: https://crowdin.com/project/umbraedit"
|
||||
msgstr "Internationalisation: https://crowdin.com/project/umbraedit"
|
||||
|
||||
#: ../../source/index.rst:25
|
||||
msgid "Source Code: https://github.com/saga-soft/UmbraEdit"
|
||||
msgstr "Code source : https://github.com/saga-soft/UmbraEdit"
|
||||
|
||||
#: ../../source/index.rst:26
|
||||
msgid "Source Releases: https://github.com/saga-soft/UmbraEdit/releases"
|
||||
msgstr "Source Releases: https://github.com/saga-soft/UmbraEdit/releases"
|
||||
|
||||
#: ../../source/index.rst:27
|
||||
msgid "Issue Tracker: https://github.com/saga-soft/UmbraEdit/issues"
|
||||
msgstr "Issue Tracker: https://github.com/saga-soft/UmbraEdit/issues"
|
||||
|
||||
#: ../../source/index.rst:28
|
||||
msgid "Feature Discussions: https://github.com/saga-soft/UmbraEdit/discussions"
|
||||
msgstr "Feature Discussions: https://github.com/saga-soft/UmbraEdit/discussions"
|
||||
|
||||
#: ../../source/index.rst:29
|
||||
msgid "PyPi Project: https://pypi.org/project/UmbraEdit"
|
||||
msgstr "PyPi Project: https://pypi.org/project/UmbraEdit"
|
||||
|
||||
#: ../../source/index.rst:30
|
||||
msgid "Social Media: https://fosstodon.org/@umbraedit"
|
||||
msgstr "Social Media: https://fosstodon.org/@umbraedit"
|
||||
@@ -1,321 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-28 23:00+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/more/counting.rst:5
|
||||
msgid "Word and Text Counts"
|
||||
msgstr "Décompte des mots et des textes"
|
||||
|
||||
#: ../../source/more/counting.rst:7
|
||||
msgid ""
|
||||
"This is an overview of how words and other counts of your text are performed. "
|
||||
"The counting rules should be relatively standard, and are comparable to Libre "
|
||||
"Office Writer rules."
|
||||
msgstr ""
|
||||
"Il s'agit d'une vue d'ensemble de la manière dont les mots et autres comptages "
|
||||
"de votre texte sont effectués. Les règles de comptage devraient être "
|
||||
"relativement standard, et sont comparables aux règles de Libre Office Writer."
|
||||
|
||||
#: ../../source/more/counting.rst:10
|
||||
msgid ""
|
||||
"The counts provided in the app on the raw text are meant to be approximate. For "
|
||||
"more accurate counts, you need to build your manuscript in the **Manuscript "
|
||||
"Tool** and check the counts on the generated preview."
|
||||
msgstr ""
|
||||
"Les décomptes fournis dans l'application sur le texte brut sont approximatifs. "
|
||||
"Pour des décomptes plus précis, vous devez compiler votre manuscrit avec "
|
||||
"**Compiler le manuscrit** et vérifier les décomptes sur l'aperçu généré."
|
||||
|
||||
#: ../../source/more/counting.rst:16
|
||||
msgid "Text Word Counts and Stats"
|
||||
msgstr "Décompte des mots du texte et statistiques"
|
||||
|
||||
#: ../../source/more/counting.rst:18
|
||||
msgid ""
|
||||
"These are the rules for the main counts available for for each document in a "
|
||||
"project."
|
||||
msgstr ""
|
||||
"Il s'agit des règles relatives aux principaux décomptes disponibles pour chaque "
|
||||
"document d'un projet."
|
||||
|
||||
#: ../../source/more/counting.rst:20
|
||||
msgid "For all counts, the following rules apply."
|
||||
msgstr "Pour tous les décomptes, les règles suivantes s'appliquent."
|
||||
|
||||
#: ../../source/more/counting.rst:22 ../../source/more/counting.rst:56
|
||||
msgid "Short (–) and long (—) dashes are considered word separators."
|
||||
msgstr ""
|
||||
"Les tirets demi-cadratin (–) et cadratin (—) sont considérés comme des "
|
||||
"séparateurs de mots."
|
||||
|
||||
#: ../../source/more/counting.rst:23
|
||||
msgid "Any line starting with ``%`` or ``@`` is ignored."
|
||||
msgstr "Toute ligne commençant par ``%`` ou ``@`` est ignorée."
|
||||
|
||||
#: ../../source/more/counting.rst:24
|
||||
msgid "Trailing white spaces are ignored, including line breaks."
|
||||
msgstr ""
|
||||
"Les espaces blancs de fin de ligne sont ignorés, y compris les sauts de ligne."
|
||||
|
||||
#: ../../source/more/counting.rst:25
|
||||
msgid "Leading ``>`` and trailing ``<`` are ignored with any spaces next to them."
|
||||
msgstr ""
|
||||
"Les ``>`` de début et les ``<`` de fin sont ignorés, de même que les espaces "
|
||||
"qui les accompagnent."
|
||||
|
||||
#: ../../source/more/counting.rst:26
|
||||
msgid ""
|
||||
"Valid shortcodes and other commands wrapped in brackets ``[]`` are ignored."
|
||||
msgstr ""
|
||||
"Les shortcodes valides et les autres commandes entre crochets ``[]`` sont "
|
||||
"ignorés."
|
||||
|
||||
#: ../../source/more/counting.rst:27
|
||||
msgid "In-line Markdown syntax in text paragraphs is treated as part of the text."
|
||||
msgstr ""
|
||||
"La syntaxe Markdown en ligne dans les paragraphes de texte est traitée comme "
|
||||
"faisant partie du texte."
|
||||
|
||||
#: ../../source/more/counting.rst:29
|
||||
msgid ""
|
||||
"After the above preparation of the text, the following counts are available."
|
||||
msgstr "Après la préparation du texte, les chiffres suivants sont disponibles."
|
||||
|
||||
#: ../../source/more/counting.rst:31
|
||||
msgid "**Character Count**"
|
||||
msgstr "**Décompte des caractères**"
|
||||
|
||||
#: ../../source/more/counting.rst:32
|
||||
msgid ""
|
||||
"The character count is the sum of characters per line, including leading and in-"
|
||||
"text white space characters, but excluding trailing white space characters. "
|
||||
"Shortcodes in the text are not included, but Markdown codes are. Only headings "
|
||||
"and text are counted."
|
||||
msgstr ""
|
||||
"Le nombre de caractères est la somme des caractères par ligne, y compris les "
|
||||
"caractères d'en-tête et les caractères d'espacement dans le texte, mais pas les "
|
||||
"caractères d'espacement de fin. Les Shortcodes dans le texte ne sont pas "
|
||||
"inclus, mais les codes Markdown le sont. Seuls les en-têtes et le texte sont "
|
||||
"pris en compte."
|
||||
|
||||
#: ../../source/more/counting.rst:36
|
||||
msgid "**Word Count**"
|
||||
msgstr "**Décompte des mots**"
|
||||
|
||||
#: ../../source/more/counting.rst:37
|
||||
msgid ""
|
||||
"The words count is the sum of blocks of continuous character per line separated "
|
||||
"by any number of white space characters or dashes. Only headings and text are "
|
||||
"counted."
|
||||
msgstr ""
|
||||
"Le nombre de mots est la somme des blocs de caractères continus par ligne, "
|
||||
"séparés par un nombre quelconque de caractères d'espacement ou de tirets. Seuls "
|
||||
"les titres et le texte sont comptés."
|
||||
|
||||
#: ../../source/more/counting.rst:40
|
||||
msgid "**Paragraph Count**"
|
||||
msgstr "**Décompte des paragraphes**"
|
||||
|
||||
#: ../../source/more/counting.rst:41
|
||||
msgid ""
|
||||
"The paragraph count is the number of text blocks separated by one or more empty "
|
||||
"line. A line consisting only of white spaces is considered empty."
|
||||
msgstr ""
|
||||
"Le nombre de paragraphes est le nombre de blocs de texte séparés par une ou "
|
||||
"plusieurs lignes vides. Une ligne constituée uniquement d'espaces blancs est "
|
||||
"considérée comme vide."
|
||||
|
||||
#: ../../source/more/counting.rst:46
|
||||
msgid "Manuscript Counts"
|
||||
msgstr "Décompte du manuscrit"
|
||||
|
||||
#: ../../source/more/counting.rst:48
|
||||
msgid ""
|
||||
"These are the rules for the counts available for a manuscript in the "
|
||||
"**Manuscript Tool**. The rules have been tuned to agree with LibreOffice "
|
||||
"Writer, but will vary slightly depending on the content of your text. "
|
||||
"LibreOffice Writer also counts the text in the page header, which the "
|
||||
"**Manuscript Tool** does not."
|
||||
msgstr ""
|
||||
"Voici les règles pour les décomptes disponibles pour un manuscrit dans l'outil "
|
||||
"**Outil Manuscrit**. Les règles ont été ajustées pour correspondre à "
|
||||
"LibreOffice Writer, mais varieront légèrement en fonction du contenu de votre "
|
||||
"texte. LibreOffice Writer compte également le texte dans l'en-tête de la page, "
|
||||
"ce que ne fait pas l'outil **Outil Manuscrit**."
|
||||
|
||||
#: ../../source/more/counting.rst:53
|
||||
msgid ""
|
||||
"The content of each line is counted after all formatting has been processed, so "
|
||||
"the result will be more accurate than the counts for text documents elsewhere "
|
||||
"in the app. The following rules apply:"
|
||||
msgstr ""
|
||||
"Le contenu de chaque ligne est compté après le traitement de toutes les mises "
|
||||
"en forme, de sorte que le résultat sera plus précis que les décomptes pour les "
|
||||
"documents textuels dans d'autres parties de l'application. Les règles suivantes "
|
||||
"s'appliquent :"
|
||||
|
||||
#: ../../source/more/counting.rst:57
|
||||
msgid ""
|
||||
"Leading and trailing white spaces are generally included, but paragraph breaks "
|
||||
"are not."
|
||||
msgstr ""
|
||||
"Les espaces blancs de début et de fin sont généralement inclus, mais les sauts "
|
||||
"de paragraphe ne le sont pas."
|
||||
|
||||
#: ../../source/more/counting.rst:58
|
||||
msgid "Hard line breaks within paragraph are considered white space characters."
|
||||
msgstr ""
|
||||
"Les retours à la ligne dans un paragraphe sont considérés comme des caractères "
|
||||
"d'espacement."
|
||||
|
||||
#: ../../source/more/counting.rst:59
|
||||
msgid ""
|
||||
"All formatting codes are ignored, including shortcodes, commands and Markdown."
|
||||
msgstr ""
|
||||
"Tous les codes de formatage sont ignorés, y compris les shortcodes, les "
|
||||
"commandes et Markdown."
|
||||
|
||||
#: ../../source/more/counting.rst:60
|
||||
msgid "Scene and section separators are counted."
|
||||
msgstr "Les séparateurs de scène et de section sont pris en compte."
|
||||
|
||||
#: ../../source/more/counting.rst:61
|
||||
msgid "Comments and meta data lines are counted after they are formatted."
|
||||
msgstr ""
|
||||
"Les lignes de commentaires et de métadonnées sont comptées après leur mise en "
|
||||
"forme."
|
||||
|
||||
#: ../../source/more/counting.rst:62
|
||||
msgid "Headers are counted after they are formatted with custom formats."
|
||||
msgstr ""
|
||||
"Les en-têtes sont comptés après avoir été formatés avec des formats "
|
||||
"personnalisés."
|
||||
|
||||
#: ../../source/more/counting.rst:64
|
||||
msgid "The following counts are available:"
|
||||
msgstr "Les décomptes suivants sont disponibles :"
|
||||
|
||||
#: ../../source/more/counting.rst:66
|
||||
msgid "**Headings**"
|
||||
msgstr "**En-têtes**"
|
||||
|
||||
#: ../../source/more/counting.rst:67
|
||||
msgid "The number of headings in the manuscript."
|
||||
msgstr "Le nombre d'entêtes dans le manuscrit."
|
||||
|
||||
#: ../../source/more/counting.rst:69
|
||||
msgid "**Paragraphs**"
|
||||
msgstr "**Paragraphes**"
|
||||
|
||||
#: ../../source/more/counting.rst:70
|
||||
msgid "The number of body text paragraphs in the manuscript."
|
||||
msgstr "Le nombre de paragraphes dans le manuscrit."
|
||||
|
||||
#: ../../source/more/counting.rst:72
|
||||
msgid "**Words**"
|
||||
msgstr "**Mots**"
|
||||
|
||||
#: ../../source/more/counting.rst:73
|
||||
msgid ""
|
||||
"The number of words in the manuscript, including any comments and meta data "
|
||||
"text."
|
||||
msgstr ""
|
||||
"Le nombre de mots du manuscrit, y compris les commentaires et les métadonnées."
|
||||
|
||||
#: ../../source/more/counting.rst:75
|
||||
msgid "**Words in Text**"
|
||||
msgstr "**Mots dans le texte**"
|
||||
|
||||
#: ../../source/more/counting.rst:76
|
||||
msgid "The number of words in body text paragraphs, excluding all other text."
|
||||
msgstr "Nombre de mots dans les paragraphes, à l'exclusion de tout autre texte."
|
||||
|
||||
#: ../../source/more/counting.rst:78
|
||||
msgid "**Words in Headings**"
|
||||
msgstr "**Mots dans les entêtes**"
|
||||
|
||||
#: ../../source/more/counting.rst:79
|
||||
msgid ""
|
||||
"The number of words in headings, including inserted formatting like chapter "
|
||||
"numbers, etc."
|
||||
msgstr ""
|
||||
"Le nombre de mots dans les entêtes, y compris le formatage inséré comme les "
|
||||
"numéros de chapitre, etc."
|
||||
|
||||
#: ../../source/more/counting.rst:81
|
||||
msgid "**Characters**"
|
||||
msgstr "**Caractères**"
|
||||
|
||||
#: ../../source/more/counting.rst:82
|
||||
msgid ""
|
||||
"The number of characters in all lines, including any comments and meta data "
|
||||
"text. Paragraph breaks are not counted, but in-paragraph hard line breaks are."
|
||||
msgstr ""
|
||||
"Le nombre de caractères de toutes les lignes, y compris les commentaires et le "
|
||||
"texte des métadonnées. Les sauts de paragraphe ne sont pas comptés, mais les "
|
||||
"sauts de ligne dans les paragraphes le sont."
|
||||
|
||||
#: ../../source/more/counting.rst:85
|
||||
msgid "**Character in Text**"
|
||||
msgstr "**Caractères dans le texte**"
|
||||
|
||||
#: ../../source/more/counting.rst:86
|
||||
msgid ""
|
||||
"The number of characters in body text paragraphs. Paragraph breaks are not "
|
||||
"counted, but in-paragraph hard line breaks are."
|
||||
msgstr ""
|
||||
"Nombre de caractères dans les paragraphes. Les sauts de paragraphe ne sont pas "
|
||||
"comptés, mais les sauts de ligne dans les paragraphes le sont."
|
||||
|
||||
#: ../../source/more/counting.rst:89
|
||||
msgid "**Characters in Headings**"
|
||||
msgstr "**Caractères dans les entêtes**"
|
||||
|
||||
#: ../../source/more/counting.rst:90
|
||||
msgid "The number of characters in headings."
|
||||
msgstr "Le nombre de caractères dans les en-têtes."
|
||||
|
||||
#: ../../source/more/counting.rst:92
|
||||
msgid "**Character in Text, No Spaces**"
|
||||
msgstr "**Caractères dans le texte, sans les espaces**"
|
||||
|
||||
#: ../../source/more/counting.rst:93
|
||||
msgid ""
|
||||
"The number of characters in body text paragraphs considered part of a word or "
|
||||
"punctuation. That is, white space characters are not counted."
|
||||
msgstr ""
|
||||
"Le nombre de caractères dans les paragraphes considérés comme faisant partie "
|
||||
"d'un mot ou d'une ponctuation. En d'autres termes, les caractères d'espacement "
|
||||
"ne sont pas pris en compte."
|
||||
|
||||
#: ../../source/more/counting.rst:96
|
||||
msgid "**Character in Headings, No Spaces**"
|
||||
msgstr "**Caractères dans les en-têtes, sans les espaces**"
|
||||
|
||||
#: ../../source/more/counting.rst:97
|
||||
msgid ""
|
||||
"The number of characters in headings considered part of a word or punctuation. "
|
||||
"That is, white space characters are not counted."
|
||||
msgstr ""
|
||||
"Le nombre de caractères dans les en-têtes considérés comme faisant partie d'un "
|
||||
"mot ou de la ponctuation. En d'autres termes, les caractères d'espacement ne "
|
||||
"sont pas pris en compte."
|
||||
@@ -1,359 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-29 11:05+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/more/customise.rst:5
|
||||
msgid "Customisations"
|
||||
msgstr "Personnalisations"
|
||||
|
||||
#: ../../source/more/customise.rst:10
|
||||
msgid ""
|
||||
"There are a few ways you can customise UmbraEdit yourself. Currently, "
|
||||
"you can add new GUI themes, your own syntax themes, and install additional "
|
||||
"dictionaries."
|
||||
msgstr ""
|
||||
"Vous pouvez personnaliser UmbraEdit de plusieurs façons. Actuellement, "
|
||||
"vous pouvez ajouter de nouveaux thèmes d'interface graphique, vos propres "
|
||||
"thèmes de syntaxe et installer des dictionnaires supplémentaires."
|
||||
|
||||
#: ../../source/more/customise.rst:17
|
||||
msgid "Spell Check Dictionaries"
|
||||
msgstr "Dictionnaires de vérification orthographique"
|
||||
|
||||
#: ../../source/more/customise.rst:19
|
||||
msgid ""
|
||||
"UmbraEdit uses Enchant_ as the spell checking tool. Depending on your "
|
||||
"operating system, it may or may not load all installed spell check "
|
||||
"dictionaries automatically."
|
||||
msgstr ""
|
||||
"UmbraEdit utilise Enchant_ comme outil de vérification orthographique. "
|
||||
"Selon votre système d'exploitation, il peut ou non charger automatiquement "
|
||||
"tous les dictionnaires de vérification orthographique installés."
|
||||
|
||||
#: ../../source/more/customise.rst:24
|
||||
msgid "Linux and MacOS"
|
||||
msgstr "Linux et MacOS"
|
||||
|
||||
#: ../../source/more/customise.rst:26
|
||||
msgid ""
|
||||
"On Linux and MacOS, you generally only have to install hunspell, aspell or "
|
||||
"myspell dictionaries on your system like you do for other applications. "
|
||||
"See your distro or OS documentation for how to do this. These dictionaries "
|
||||
"should show up as available spell check languages in UmbraEdit."
|
||||
msgstr ""
|
||||
"Sous Linux et MacOS, il vous suffit généralement d'installer les "
|
||||
"dictionnaires hunspell, aspell ou myspell sur votre système, comme vous le "
|
||||
"faites pour d'autres applications. Consultez la documentation de votre "
|
||||
"distro ou de votre système d'exploitation pour savoir comment procéder. "
|
||||
"Ces dictionnaires devraient apparaître comme des langues de vérification "
|
||||
"orthographique disponibles dans UmbraEdit."
|
||||
|
||||
#: ../../source/more/customise.rst:32
|
||||
msgid "Windows"
|
||||
msgstr "Windows"
|
||||
|
||||
#: ../../source/more/customise.rst:34
|
||||
msgid ""
|
||||
"For Windows, English is included with the installation. For other "
|
||||
"languages you have to download and add dictionaries yourself."
|
||||
msgstr ""
|
||||
"Pour Windows, l'anglais est inclus dans l'installation. Pour les autres "
|
||||
"langues, vous devez télécharger et ajouter les dictionnaires vous-même."
|
||||
|
||||
#: ../../source/more/customise.rst:37
|
||||
msgid "**Install Tool**"
|
||||
msgstr "**Outil d'installation**"
|
||||
|
||||
#: ../../source/more/customise.rst:39
|
||||
msgid ""
|
||||
"A small tool to assist with this can be found under **Tools > Add "
|
||||
"Dictionaries**. It will import spell checking dictionaries from Free "
|
||||
"Office or Libre Office extensions. The dictionaries are then installed in "
|
||||
"the install location for the Enchant library and should thus work for any "
|
||||
"application that uses Enchant for spell checking."
|
||||
msgstr ""
|
||||
"Un petit outil pour vous aider se trouve sous **Outils > Ajouter des "
|
||||
"dictionnaires**. Il importera des dictionnaires de vérification "
|
||||
"orthographique à partir des extensions Free Office ou Libre Office. Les "
|
||||
"dictionnaires sont alors installés dans l'emplacement d'installation de la "
|
||||
"bibliothèque Enchant et devraient donc fonctionner pour toute application "
|
||||
"qui utilise Enchant pour la vérification orthographique."
|
||||
|
||||
#: ../../source/more/customise.rst:44
|
||||
msgid "**Manual Install**"
|
||||
msgstr "**Installation manuelle**"
|
||||
|
||||
#: ../../source/more/customise.rst:46
|
||||
msgid ""
|
||||
"If you prefer to do this manually or want to use a different source than "
|
||||
"the ones mentioned above, You need to get compatible dictionary files for "
|
||||
"your language. You need two files files ending with ``.aff`` and ``.dic``. "
|
||||
"These files must then be copied to the following location:"
|
||||
msgstr ""
|
||||
"Si vous préférez le faire manuellement ou si vous voulez utiliser une "
|
||||
"source différente de celles mentionnées ci-dessus, vous devez obtenir des "
|
||||
"fichiers de dictionnaires compatibles avec votre langue. Vous avez besoin "
|
||||
"de deux fichiers se terminant par ``.aff`` et ``.dic``. Ces fichiers "
|
||||
"doivent ensuite être copiés à l'emplacement suivant :"
|
||||
|
||||
#: ../../source/more/customise.rst:50
|
||||
msgid "``C:\\Users\\<USER>\\AppData\\Local\\enchant\\hunspell``"
|
||||
msgstr "``C:\\Users\\<USER>\\AppData\\Local\\enchant\\hunspell``"
|
||||
|
||||
#: ../../source/more/customise.rst:52
|
||||
msgid ""
|
||||
"This assumes your user profile is stored at ``C:\\Users\\<USER>``. The "
|
||||
"last one or two folders may not exist, so you may need to create them."
|
||||
msgstr ""
|
||||
"Cela suppose que votre profil d'utilisateur est stocké dans ``C:"
|
||||
"\\Users\\<USER>``. Le dernier ou les deux derniers dossiers peuvent ne pas "
|
||||
"exister, vous devrez donc les créer."
|
||||
|
||||
#: ../../source/more/customise.rst:55
|
||||
msgid "You can find the various dictionaries on the `Free Desktop`_ website."
|
||||
msgstr ""
|
||||
"Vous pouvez trouver les différents dictionnaires sur le site web `Free "
|
||||
"Desktop`_."
|
||||
|
||||
#: ../../source/more/customise.rst:58
|
||||
msgid ""
|
||||
"The Free Desktop link points to a repository, and what may look like file "
|
||||
"links inside the dictionary folder are actually links to web pages. If you "
|
||||
"right-click and download those, you get HTML files, not dictionaries!"
|
||||
msgstr ""
|
||||
"Le lien Free Desktop pointe vers un référentiel, et ce qui peut ressembler "
|
||||
"à des liens de fichiers à l'intérieur du dossier du dictionnaire sont en "
|
||||
"fait des liens vers des pages web. Si vous cliquez avec le bouton droit de "
|
||||
"la souris et que vous les téléchargez, vous obtiendrez des fichiers HTML, "
|
||||
"pas des dictionnaires !"
|
||||
|
||||
#: ../../source/more/customise.rst:62
|
||||
msgid ""
|
||||
"In order to download the actual dictionary files, right-click the "
|
||||
"\"plain\" label at the end of each line and download that."
|
||||
msgstr ""
|
||||
"Pour télécharger les fichiers du dictionnaire, cliquez avec le bouton "
|
||||
"droit de la souris sur l'étiquette « plain » à la fin de chaque ligne et "
|
||||
"téléchargez-la."
|
||||
|
||||
#: ../../source/more/customise.rst:69
|
||||
msgid "Syntax and GUI Themes"
|
||||
msgstr "Syntaxe et thèmes de l'interface graphique"
|
||||
|
||||
#: ../../source/more/customise.rst:71
|
||||
msgid ""
|
||||
"Adding your own GUI and syntax themes is relatively easy, although it "
|
||||
"requires that you manually edit config files with colour values. The "
|
||||
"themes are defined by simple plain text config files with meta data and "
|
||||
"colour settings."
|
||||
msgstr ""
|
||||
"L'ajout de vos propres thèmes d'interface graphique et de syntaxe est "
|
||||
"relativement facile, bien qu'il soit nécessaire d'éditer manuellement les "
|
||||
"fichiers de configuration avec les valeurs de couleur. Les thèmes sont "
|
||||
"définis par de simples fichiers de configuration en texte brut contenant "
|
||||
"des métadonnées et des paramètres de couleur."
|
||||
|
||||
#: ../../source/more/customise.rst:75
|
||||
msgid ""
|
||||
"In order to make your own versions, first copy one of the existing files "
|
||||
"to your local computer and modify it as you like."
|
||||
msgstr ""
|
||||
"Pour créer vos propres versions, copiez d'abord l'un des fichiers "
|
||||
"existants sur votre ordinateur local et modifiez-le à votre guise."
|
||||
|
||||
#: ../../source/more/customise.rst:78
|
||||
msgid ""
|
||||
"The existing syntax themes are stored in `umbraedit/assets/syntax "
|
||||
"<https://github.com/saga-soft/UmbraEdit/tree/main/umbraedit/assets/"
|
||||
"syntax>`_."
|
||||
msgstr ""
|
||||
"Les thèmes syntaxiques existants sont stockés dans `umbraedit/assets/"
|
||||
"syntax <https://github.com/saga-soft/UmbraEdit/tree/main/umbraedit/assets/"
|
||||
"syntax>`_."
|
||||
|
||||
#: ../../source/more/customise.rst:80
|
||||
msgid ""
|
||||
"The existing GUI themes are stored in `umbraedit/assets/themes <https://"
|
||||
"github.com/saga-soft/UmbraEdit/tree/main/umbraedit/assets/themes>`_."
|
||||
msgstr ""
|
||||
"Les thèmes GUI existants sont stockés dans `umbraedit/assets/themes "
|
||||
"<https://github.com/saga-soft/UmbraEdit/tree/main/umbraedit/assets/"
|
||||
"themes>`_."
|
||||
|
||||
#: ../../source/more/customise.rst:82
|
||||
msgid ""
|
||||
"The existing icon themes are stored in `umbraedit/assets/icons <https://"
|
||||
"github.com/saga-soft/UmbraEdit/tree/main/umbraedit/assets/icons>`_."
|
||||
msgstr ""
|
||||
"Les thèmes d'icônes existants sont stockés dans `umbraedit/assets/icons "
|
||||
"<https://github.com/saga-soft/UmbraEdit/tree/main/umbraedit/assets/icons>`_."
|
||||
|
||||
#: ../../source/more/customise.rst:85
|
||||
msgid ""
|
||||
"Remember to also change the name of your theme by modifying the ``name`` "
|
||||
"setting at the top of the file, otherwise you may not be able to "
|
||||
"distinguish them in **Preferences**."
|
||||
msgstr ""
|
||||
"N'oubliez pas de changer également le nom de votre thème en modifiant le "
|
||||
"paramètre ``name`` en haut du fichier, sinon vous ne pourrez pas les "
|
||||
"distinguer dans les **Préférences**."
|
||||
|
||||
#: ../../source/more/customise.rst:88
|
||||
msgid ""
|
||||
"For UmbraEdit to be able to locate the custom theme files, you must copy "
|
||||
"them to the :ref:`docs_technical_locations_data` location in your home or "
|
||||
"user area. There should be a folder there named ``syntax`` for syntax "
|
||||
"themes, just ``themes`` for GUI themes, and ``icons`` for icon themes. "
|
||||
"These folders are created the first time you start UmbraEdit."
|
||||
msgstr ""
|
||||
"Pour que UmbraEdit puisse localiser les fichiers de thèmes "
|
||||
"personnalisés, vous devez les copier dans l'emplacement :ref:"
|
||||
"`docs_technical_locations_data` dans votre espace personnel ou "
|
||||
"utilisateur. Il devrait y avoir un dossier nommé ``syntax`` pour les "
|
||||
"thèmes de syntaxe, juste ``themes`` pour les thèmes GUI, et ``icons`` pour "
|
||||
"les thèmes d'icônes. Ces dossiers sont créés la première fois que vous "
|
||||
"démarrez UmbraEdit.\n"
|
||||
"\n"
|
||||
"Traduit avec DeepL.com (version gratuite)"
|
||||
|
||||
#: ../../source/more/customise.rst:93
|
||||
msgid ""
|
||||
"Once the files are copied there, they should show up in **Preferences** "
|
||||
"with the label you set as ``name`` inside the file."
|
||||
msgstr ""
|
||||
"Une fois les fichiers copiés, ils devraient apparaître dans les "
|
||||
"**Préférences** avec le nom que vous avez défini dans le fichier."
|
||||
|
||||
#: ../../source/more/customise.rst:98
|
||||
msgid ""
|
||||
"The theme file formats change regularly in new releases. It is up to you "
|
||||
"to keep custom theme files up to date."
|
||||
msgstr ""
|
||||
"Les formats des fichiers de thème changent régulièrement dans les "
|
||||
"nouvelles versions. C'est à vous qu'il incombe de mettre à jour les "
|
||||
"fichiers des thèmes personnalisés."
|
||||
|
||||
#: ../../source/more/customise.rst:103
|
||||
msgid "Custom GUI and Icons Theme"
|
||||
msgstr "Thème d'interface graphique et d'icônes personnalisé"
|
||||
|
||||
#: ../../source/more/customise.rst:105
|
||||
msgid "A GUI theme ``.conf`` file consists of the following settings:"
|
||||
msgstr ""
|
||||
"Le fichier ``.conf`` d'un thème GUI est constitué des paramètres suivants :"
|
||||
|
||||
#: ../../source/more/customise.rst:159
|
||||
msgid "In the Main section you must at least define the ``name`` settings."
|
||||
msgstr ""
|
||||
"Dans la section Main, vous devez au moins définir les paramètres ``name``."
|
||||
|
||||
#: ../../source/more/customise.rst:161
|
||||
msgid ""
|
||||
"The Palette values correspond to the Qt enum values for ``QPalette::"
|
||||
"ColorRole``, see the `Qt documentation <https://doc.qt.io/qt-6/qpalette."
|
||||
"html#ColorRole-enum>`_ for more details. The colour values are RGB numbers "
|
||||
"on the format ``r, g, b`` where each is an integer from ``0`` to ``255``. "
|
||||
"Omitted values are not loaded and will use default values. If the "
|
||||
"``helptext`` colour is not defined, it is computed as a colour between the "
|
||||
"``window`` and ``windowtext`` colour. Additional shades of some of the "
|
||||
"colours are also computed. These are mainly used for 3D effects."
|
||||
msgstr ""
|
||||
"Les valeurs de la palette correspondent aux valeurs de l'enum Qt pour "
|
||||
"``QPalette::ColorRole``, voir la documentation Qt <https://doc.qt.io/qt-6/"
|
||||
"qpalette.html#ColorRole-enum>`_ pour plus de détails. Les valeurs de "
|
||||
"couleur sont des nombres RVB au format ``r, g, b`` où chacun est un entier "
|
||||
"de ``0`` à ``255``. Les valeurs omises ne sont pas chargées et utilisent "
|
||||
"les valeurs par défaut. Si la couleur ``helptext`` n'est pas définie, elle "
|
||||
"est calculée comme une couleur comprise entre les couleurs ``window`` et "
|
||||
"``windowtext``. Des nuances supplémentaires de certaines couleurs sont "
|
||||
"également calculées. Elles sont principalement utilisées pour les effets "
|
||||
"3D."
|
||||
|
||||
#: ../../source/more/customise.rst:168
|
||||
msgid "The ``fadedtext`` and ``errortext`` theme colour entries were added."
|
||||
msgstr ""
|
||||
"Les entrées de couleur des thèmes ``fadedtext`` et ``errortext`` ont été "
|
||||
"ajoutées."
|
||||
|
||||
#: ../../source/more/customise.rst:171
|
||||
msgid ""
|
||||
"The ``icontheme`` setting was dropped as the icon theme is now its own "
|
||||
"setting. The ``[Icons]`` and ``[Project]`` sections were added, and the "
|
||||
"``status*`` settings removed."
|
||||
msgstr ""
|
||||
"Le paramètre ``icontheme`` a été supprimé car le thème des icônes a "
|
||||
"maintenant son propre paramètre. Les sections ``[Icons]`` et ``[Project]`` "
|
||||
"ont été ajoutées, et le paramètre ``status*`` a été supprimé."
|
||||
|
||||
#: ../../source/more/customise.rst:177
|
||||
msgid "Custom Syntax Theme"
|
||||
msgstr "Syntaxe des thèmes personnalisés"
|
||||
|
||||
#: ../../source/more/customise.rst:179
|
||||
msgid "A syntax theme ``.conf`` file consists of the following settings:"
|
||||
msgstr ""
|
||||
"Un fichier ``.conf`` de thème est constitué des paramètres suivants :"
|
||||
|
||||
#: ../../source/more/customise.rst:213
|
||||
msgid ""
|
||||
"In the Main section, you must define at least the ``name`` setting. The "
|
||||
"Syntax colour values are RGB(A) numbers of the format ``r, g, b, a`` where "
|
||||
"each is an integer from ``0`` to ``255``. The fourth value is the alpha "
|
||||
"channel, which can be omitted."
|
||||
msgstr ""
|
||||
"Dans la section Main, vous devez définir au moins le paramètre ``name``. "
|
||||
"Les valeurs de couleur de la syntaxe sont des nombres RVB(A) du format "
|
||||
"``r, g, b, a`` où chacun est un entier de ``0`` à ``255``. La quatrième "
|
||||
"valeur est le canal alpha, qui peut être omis."
|
||||
|
||||
#: ../../source/more/customise.rst:217
|
||||
msgid ""
|
||||
"Omitted syntax colours default to black, except ``background`` which "
|
||||
"defaults to white, and ``texthighlight`` which defaults to white with half "
|
||||
"transparency."
|
||||
msgstr ""
|
||||
"Les couleurs omises dans la syntaxe prennent par défaut la couleur noire, "
|
||||
"à l'exception de ``background`` qui prend par défaut la couleur blanche, "
|
||||
"et de ``texthighlight`` qui prend par défaut la couleur blanche avec une "
|
||||
"demi-transparence."
|
||||
|
||||
#: ../../source/more/customise.rst:220
|
||||
msgid "The ``shortcode`` syntax colour entry was added."
|
||||
msgstr "Le paramètre de couleur ``shortcode`` a été ajouté."
|
||||
|
||||
#: ../../source/more/customise.rst:223
|
||||
msgid "The ``optional`` syntax colour entry was added."
|
||||
msgstr "Le paramètre de couleur ``optional`` a été ajouté."
|
||||
|
||||
#: ../../source/more/customise.rst:226
|
||||
msgid "The ``texthighlight`` syntax colour entry was added."
|
||||
msgstr "Le paramètre de couleur ``texthighlight`` a été ajouté."
|
||||
|
||||
#: ../../source/more/customise.rst:229
|
||||
msgid ""
|
||||
"The ``dialog``, ``altdialog``, ``note`` and ``tag`` syntax colour entries "
|
||||
"were added. ``straightquotes``, ``doublequotes`` and ``singlequotes`` were "
|
||||
"removed."
|
||||
msgstr ""
|
||||
"Les paramètres de couleur ``dialog``, ``altdialog``, ``note`` et ``tag`` "
|
||||
"ont été ajoutés. Les paramètres ``guillemets droits``, ``guillemets "
|
||||
"doubles`` et ``guillemets simples`` ont été supprimés."
|
||||
@@ -1,159 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-29 11:11+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/more/handling_errors.rst:5
|
||||
msgid "Handling Errors"
|
||||
msgstr "Traitement des erreurs"
|
||||
|
||||
#: ../../source/more/handling_errors.rst:7
|
||||
msgid ""
|
||||
"In case something goes wrong, UmbraEdit has a few built-in features to "
|
||||
"reduce the chance your work is lost. In case of a crash, it will also "
|
||||
"try to save whatever changes you have made before exiting, if this is at "
|
||||
"all possible."
|
||||
msgstr ""
|
||||
"En cas de problème, UmbraEdit dispose de quelques fonctions intégrées "
|
||||
"pour réduire le risque de perte de votre travail. En cas de panne, il "
|
||||
"essaiera également d'enregistrer les modifications que vous avez "
|
||||
"apportées avant de quitter, si cela est possible."
|
||||
|
||||
#: ../../source/more/handling_errors.rst:11
|
||||
msgid ""
|
||||
"The storage solution is designed to save each text document "
|
||||
"independently, so only the document you're working on is actually at a "
|
||||
"risk of losing data in the event of a crash."
|
||||
msgstr ""
|
||||
"La solution de stockage est conçue pour sauvegarder chaque document "
|
||||
"texte indépendamment, de sorte que seul le document sur lequel vous "
|
||||
"travaillez risque de perdre des données en cas de panne."
|
||||
|
||||
#: ../../source/more/handling_errors.rst:18
|
||||
msgid "Recovered Documents"
|
||||
msgstr "Documents récupérés"
|
||||
|
||||
#: ../../source/more/handling_errors.rst:20
|
||||
msgid ""
|
||||
"If UmbraEdit crashes or otherwise exits without saving the project "
|
||||
"state, or if you're using a file synchronisation tool that runs out of "
|
||||
"sync, there may be files in the project storage folder that aren't "
|
||||
"tracked in the core project file. These files, when discovered, are "
|
||||
"recovered and added back into the project when a project is opened."
|
||||
msgstr ""
|
||||
"Si UmbraEdit se plante ou se termine sans sauvegarder l'état du "
|
||||
"projet, ou si vous utilisez un outil de synchronisation de fichiers qui "
|
||||
"se désynchronise, il peut y avoir des fichiers dans le dossier de "
|
||||
"stockage du projet qui ne sont pas suivis dans le fichier de base du "
|
||||
"projet. Ces fichiers, lorsqu'ils sont découverts, sont récupérés et "
|
||||
"ajoutés au projet lorsqu'un projet est ouvert."
|
||||
|
||||
#: ../../source/more/handling_errors.rst:25
|
||||
msgid ""
|
||||
"The discovered files are scanned for metadata that give clues as to "
|
||||
"where the document may previously have been located in the project. The "
|
||||
"project loading routine will try to put them back as close as possible "
|
||||
"to this location, if it still exists. Generally, it will be appended to "
|
||||
"the end of the folder where it previously was located. If that folder "
|
||||
"doesn't exist, it will try to add it to the correct root folder type. If "
|
||||
"it cannot figure out which root folder is correct, the document will be "
|
||||
"added to the **Novel** root folder. Finally, if a **Novel** does not "
|
||||
"exist, one will be created."
|
||||
msgstr ""
|
||||
"Les fichiers découverts sont analysés à la recherche de métadonnées qui "
|
||||
"donnent des indices sur l'emplacement antérieur du document dans le "
|
||||
"projet. La routine de chargement du projet essaiera de les replacer "
|
||||
"aussi près que possible de cet emplacement, s'il existe toujours. En "
|
||||
"général, le document sera ajouté à la fin du dossier où il se trouvait "
|
||||
"auparavant. Si ce dossier n'existe pas, il essaiera de l'ajouter au type "
|
||||
"de dossier racine correct. S'il ne parvient pas à déterminer quel est le "
|
||||
"bon dossier racine, le document sera ajouté au dossier racine "
|
||||
"**Nouveau**. Enfin, si un **Nouveau** n'existe pas, il en sera créé un."
|
||||
|
||||
#: ../../source/more/handling_errors.rst:33
|
||||
msgid ""
|
||||
"If the title of the document can be recovered, the word \"Recovered:\" "
|
||||
"will be added as a prefix to indicate that it may need further "
|
||||
"attention. If the title cannot be determined, the document will be named "
|
||||
"after its internal key, which is a string of characters and numbers."
|
||||
msgstr ""
|
||||
"Si le titre du document peut être récupéré, le mot « Récupéré : » sera "
|
||||
"ajouté comme préfixe pour indiquer qu'il peut nécessiter une attention "
|
||||
"supplémentaire. Si le titre ne peut être déterminé, le document sera "
|
||||
"nommé d'après sa clé interne, qui est une chaîne de caractères et de "
|
||||
"chiffres."
|
||||
|
||||
#: ../../source/more/handling_errors.rst:41
|
||||
msgid "Project Lockfile"
|
||||
msgstr "Fichier de verrouillage du projet"
|
||||
|
||||
#: ../../source/more/handling_errors.rst:43
|
||||
msgid ""
|
||||
"To prevent data loss caused by file conflicts when UmbraEdit projects "
|
||||
"are synchronised via file synchronisation tools, a project lockfile is "
|
||||
"written to the project storage folder when a project is open. If you try "
|
||||
"to open a project that already has such a file present, you will be "
|
||||
"presented with a warning, and some information about where else "
|
||||
"UmbraEdit thinks the project is also open. You will be given the "
|
||||
"option to ignore this warning, and continue opening the project at your "
|
||||
"own risk."
|
||||
msgstr ""
|
||||
"Pour éviter la perte de données causée par des conflits de fichiers "
|
||||
"lorsque les projets UmbraEdit sont synchronisés via des outils de "
|
||||
"synchronisation de fichiers, un fichier de verrouillage de projet est "
|
||||
"écrit dans le dossier de stockage du projet lorsqu'un projet est ouvert. "
|
||||
"Si vous essayez d'ouvrir un projet dans lequel un tel fichier est déjà "
|
||||
"présent, vous recevrez un avertissement et des informations sur "
|
||||
"l'endroit où UmbraEdit pense que le projet est également ouvert. Vous "
|
||||
"aurez la possibilité d'ignorer cet avertissement et de continuer à "
|
||||
"ouvrir le projet à vos risques et périls."
|
||||
|
||||
#: ../../source/more/handling_errors.rst:52
|
||||
msgid ""
|
||||
"If, for some reason, UmbraEdit or your computer crashes, the lock file "
|
||||
"may remain even if there are no other instances keeping the project "
|
||||
"open. In such a case it is safe to ignore the lock file warning when re-"
|
||||
"opening the project."
|
||||
msgstr ""
|
||||
"Si, pour une raison quelconque, UmbraEdit ou votre ordinateur tombe en "
|
||||
"panne, le fichier de verrouillage peut subsister même si aucune autre "
|
||||
"instance ne maintient le projet ouvert. Dans ce cas, il est prudent "
|
||||
"d'ignorer l'avertissement relatif au fichier de verrouillage lors de la "
|
||||
"réouverture du projet."
|
||||
|
||||
#: ../../source/more/handling_errors.rst:58
|
||||
msgid ""
|
||||
"If you choose to ignore the warning and continue opening the project, "
|
||||
"and multiple instances of the project are in fact open, you are likely "
|
||||
"to cause inconsistencies and create diverging project files, potentially "
|
||||
"resulting in loss of data and orphaned files. You are not likely to lose "
|
||||
"any actual text unless both instances have the same document open in the "
|
||||
"editor, and UmbraEdit will try to resolve project inconsistencies the "
|
||||
"next time you open the project."
|
||||
msgstr ""
|
||||
"Si vous choisissez d'ignorer l'avertissement et de continuer à ouvrir le "
|
||||
"projet, et que plusieurs instances du projet sont en fait ouvertes, vous "
|
||||
"risquez de provoquer des incohérences et de créer des fichiers de projet "
|
||||
"divergents, ce qui peut entraîner une perte de données et des fichiers "
|
||||
"orphelins. Il est peu probable que vous perdiez du texte à moins que les "
|
||||
"deux instances aient le même document ouvert dans l'éditeur, et "
|
||||
"UmbraEdit essaiera de résoudre les incohérences du projet la prochaine "
|
||||
"fois que vous l'ouvrirez."
|
||||
@@ -1,298 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-29 11:21+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/more/project_format.rst:5
|
||||
msgid "Project Format Changes"
|
||||
msgstr "Modifications du format des projets"
|
||||
|
||||
#: ../../source/more/project_format.rst:7
|
||||
msgid ""
|
||||
"Most of the changes to the file formats over the history of UmbraEdit "
|
||||
"have no impact on the user side of things. The project files are "
|
||||
"generally updated automatically. However, some of the changes require "
|
||||
"minor actions from the user."
|
||||
msgstr ""
|
||||
"La plupart des modifications apportées aux formats de fichiers au cours "
|
||||
"de l'histoire de UmbraEdit n'ont pas d'impact sur l'utilisateur. Les "
|
||||
"fichiers de projet sont généralement mis à jour automatiquement. "
|
||||
"Cependant, certains changements nécessitent des actions mineures de la "
|
||||
"part de l'utilisateur."
|
||||
|
||||
#: ../../source/more/project_format.rst:11
|
||||
msgid ""
|
||||
"The key changes in the formats are listed in this chapter, as well as "
|
||||
"the user actions required, where applicable."
|
||||
msgstr ""
|
||||
"Les principales modifications apportées aux formats sont énumérées dans "
|
||||
"ce chapitre, ainsi que les actions requises de la part de l'utilisateur, "
|
||||
"le cas échéant."
|
||||
|
||||
#: ../../source/more/project_format.rst:14
|
||||
msgid ""
|
||||
"A full project file format specification is available under \"More "
|
||||
"Documents\"."
|
||||
msgstr ""
|
||||
"Une spécification complète du format de fichier du projet est disponible "
|
||||
"sous « Plus d'informations »."
|
||||
|
||||
#: ../../source/more/project_format.rst:18
|
||||
msgid ""
|
||||
"When you update a project from one format version to the next, the "
|
||||
"project can no longer be opened by a version of UmbraEdit prior to the "
|
||||
"version where the new file format was introduced. You will get a "
|
||||
"notification about any updates to your project file format and will have "
|
||||
"the option to decline the upgrade."
|
||||
msgstr ""
|
||||
"Lorsque vous mettez à jour un projet d'une version de format à la "
|
||||
"suivante, le projet ne peut plus être ouvert par une version de "
|
||||
"UmbraEdit antérieure à la version où le nouveau format de fichier a "
|
||||
"été introduit. Vous recevrez une notification concernant toute mise à "
|
||||
"jour du format de fichier de votre projet et vous aurez la possibilité "
|
||||
"de refuser la mise à jour."
|
||||
|
||||
#: ../../source/more/project_format.rst:27
|
||||
msgid "Format 1.5 Changes"
|
||||
msgstr "Format 1.5 Modifications"
|
||||
|
||||
#: ../../source/more/project_format.rst:29
|
||||
msgid "This project format was introduced in UmbraEdit version 2.0 RC 2."
|
||||
msgstr ""
|
||||
"Ce format de projet a été introduit dans la version 2.0 RC 2 de "
|
||||
"UmbraEdit."
|
||||
|
||||
#: ../../source/more/project_format.rst:31
|
||||
msgid ""
|
||||
"This is a modification of the 1.4 format. It makes the XML more "
|
||||
"consistent in that meta data have been moved to their respective section "
|
||||
"nodes as attributes, and key/value settings now have a consistent "
|
||||
"format. Logical flags are saved as yes/no instead of Python True/False, "
|
||||
"and the main heading of the document is now saved to the item rather "
|
||||
"than in the index. The conversion is done automatically the first time a "
|
||||
"project is loaded. No user action is required."
|
||||
msgstr ""
|
||||
"Il s'agit d'une modification du format 1.4. Il rend le XML plus cohérent "
|
||||
"en ce sens que les métadonnées ont été déplacées vers leurs nœuds de "
|
||||
"section respectifs en tant qu'attributs, et que les paramètres clé/"
|
||||
"valeur ont désormais un format cohérent. Les indicateurs logiques sont "
|
||||
"sauvegardés sous forme de oui/non au lieu de True/False de Python, et le "
|
||||
"titre principal du document est désormais sauvegardé dans l'article "
|
||||
"plutôt que dans l'index. La conversion est effectuée automatiquement "
|
||||
"lors du premier chargement d'un projet. Aucune action de l'utilisateur "
|
||||
"n'est nécessaire."
|
||||
|
||||
#: ../../source/more/project_format.rst:41
|
||||
msgid "Format 1.4 Changes"
|
||||
msgstr "Format 1.4 Modifications"
|
||||
|
||||
#: ../../source/more/project_format.rst:43
|
||||
msgid ""
|
||||
"This project format was introduced in UmbraEdit version 2.0 RC 1. "
|
||||
"Since this was a release candidate, it is unlikely that your project "
|
||||
"uses it, but it may be the case if you've installed a pre-release."
|
||||
msgstr ""
|
||||
"Ce format de projet a été introduit dans la version 2.0 RC 1 de "
|
||||
"UmbraEdit. Comme il s'agissait d'une version candidate, il est peu "
|
||||
"probable que votre projet l'utilise, mais c'est peut-être le cas si vous "
|
||||
"avez installé une préversion."
|
||||
|
||||
#: ../../source/more/project_format.rst:47
|
||||
msgid ""
|
||||
"This format changes the way project items (folders, documents and notes) "
|
||||
"are stored. It is a more compact format that is simpler and faster to "
|
||||
"parse, and easier to extend. The conversion is done automatically the "
|
||||
"first time a project is loaded. No user action is required."
|
||||
msgstr ""
|
||||
"Ce format modifie la manière dont les éléments du projet (dossiers, "
|
||||
"documents et notes) sont stockés. Il s'agit d'un format plus compact, "
|
||||
"plus simple et plus rapide à analyser, et plus facile à étendre. La "
|
||||
"conversion se fait automatiquement lors du premier chargement d'un "
|
||||
"projet. Aucune action de l'utilisateur n'est nécessaire."
|
||||
|
||||
#: ../../source/more/project_format.rst:55
|
||||
msgid "Format 1.3 Changes"
|
||||
msgstr "Format 1.3 Modifications"
|
||||
|
||||
#: ../../source/more/project_format.rst:57
|
||||
msgid "This project format was introduced in UmbraEdit version 1.5."
|
||||
msgstr ""
|
||||
"Ce format de projet a été introduit dans la version 1.5 de UmbraEdit."
|
||||
|
||||
#: ../../source/more/project_format.rst:59
|
||||
msgid ""
|
||||
"With this format, the number of document layouts was reduced from eight "
|
||||
"to two. The conversion of document layouts is performed automatically "
|
||||
"when the project is opened."
|
||||
msgstr ""
|
||||
"Avec ce format, le nombre de présentations de documents a été réduit de "
|
||||
"huit à deux. La conversion des présentations de documents s'effectue "
|
||||
"automatiquement lors de l'ouverture du projet."
|
||||
|
||||
#: ../../source/more/project_format.rst:62
|
||||
msgid ""
|
||||
"Due to the reduction of layouts, some features that were previously "
|
||||
"controlled by these layouts will be lost. These features are instead now "
|
||||
"controlled by syntax codes, so to recover these features, some minor "
|
||||
"modification must be made to select documents by the user."
|
||||
msgstr ""
|
||||
"En raison de la réduction des présentations, certaines caractéristiques "
|
||||
"qui étaient auparavant contrôlées par ces présentations seront perdues. "
|
||||
"Ces fonctionnalités sont désormais contrôlées par des codes syntaxiques. "
|
||||
"Pour les récupérer, l'utilisateur doit donc apporter quelques "
|
||||
"modifications mineures aux documents sélectionnés."
|
||||
|
||||
#: ../../source/more/project_format.rst:66
|
||||
msgid ""
|
||||
"The manual changes the user must make should be very few as they apply "
|
||||
"to document layouts that should be used only a few places in any given "
|
||||
"project. These are as follows:"
|
||||
msgstr ""
|
||||
"Les modifications manuelles que l'utilisateur doit apporter sont très "
|
||||
"peu nombreuses car elles s'appliquent à des mises en page de documents "
|
||||
"qui ne doivent être utilisées qu'à quelques endroits dans un projet "
|
||||
"donné. Ces modifications sont les suivantes :"
|
||||
|
||||
#: ../../source/more/project_format.rst:69
|
||||
msgid "**Title Pages**"
|
||||
msgstr "**Pages de titres**"
|
||||
|
||||
#: ../../source/more/project_format.rst:71
|
||||
msgid ""
|
||||
"The formatting of the level one title on the title page must be changed "
|
||||
"from ``# Title Text`` to ``#! Title Text`` in order to retain the "
|
||||
"previous functionality. See :ref:`docs_usage_headings_levels`."
|
||||
msgstr ""
|
||||
"Le formatage du titre de niveau 1 sur la page de titre doit être modifié "
|
||||
"de ``# Title Text`` à ``# ! Title Text`` afin de conserver la "
|
||||
"fonctionnalité précédente. Voir :ref:`docs_usage_headings_levels`."
|
||||
|
||||
#: ../../source/more/project_format.rst:74
|
||||
msgid ""
|
||||
"Any text that was previously centred on the page must be manually "
|
||||
"centred using the text alignment feature. See :ref:"
|
||||
"`docs_usage_align_indent`."
|
||||
msgstr ""
|
||||
"Tout texte qui était précédemment centré sur la page doit être centré "
|
||||
"manuellement en utilisant la fonction d'alignement du texte. Voir :ref:"
|
||||
"`docs_usage_align_indent`."
|
||||
|
||||
#: ../../source/more/project_format.rst:77
|
||||
msgid "**Unnumbered Chapters**"
|
||||
msgstr "**Chapitres non numérotés**"
|
||||
|
||||
#: ../../source/more/project_format.rst:79
|
||||
msgid ""
|
||||
"Since the specific layout for unnumbered chapters has been dropped, such "
|
||||
"chapters must all use the ``##! Chapter Name`` formatting code instead "
|
||||
"of ``## Chapter Name``. This also includes chapters marked by an "
|
||||
"asterisk: ``## *Chapter Name``, as this feature has also been dropped. "
|
||||
"See :ref:`docs_usage_headings_levels`."
|
||||
msgstr ""
|
||||
"La mise en page spécifique pour les chapitres non numérotés ayant été "
|
||||
"abandonnée, ces chapitres doivent tous utiliser le code de formatage "
|
||||
"``# ! Nom du chapitre`` au lieu de `## Nom du chapitre``. Cela inclut "
|
||||
"également les chapitres marqués d'un astérisque : `## *Nom de "
|
||||
"chapitre``, car cette fonctionnalité a également été abandonnée. Voir :"
|
||||
"ref:`docs_usage_headings_levels`."
|
||||
|
||||
#: ../../source/more/project_format.rst:84
|
||||
msgid "**Plain Pages**"
|
||||
msgstr "**Pages vierges**"
|
||||
|
||||
#: ../../source/more/project_format.rst:86
|
||||
msgid ""
|
||||
"The layout named \"Plain Page\" has also been removed. The only feature "
|
||||
"of this layout was that it ensured that the content always started on a "
|
||||
"fresh page. In the new format, fresh pages can be set anywhere in the "
|
||||
"text with the ``[new page]`` code. See :ref:"
|
||||
"`docs_usage_formatting_breaks`."
|
||||
msgstr ""
|
||||
"La mise en page appelée « page simple » a également été supprimée. La "
|
||||
"seule caractéristique de cette mise en page était qu'elle garantissait "
|
||||
"que le contenu commençait toujours sur une nouvelle page. Dans le "
|
||||
"nouveau format, les nouvelles pages peuvent être placées n'importe où "
|
||||
"dans le texte avec le code ``[new page]``. Voir :ref:"
|
||||
"`docs_usage_formatting_breaks`."
|
||||
|
||||
#: ../../source/more/project_format.rst:94
|
||||
msgid "Format 1.2 Changes"
|
||||
msgstr "Format 1.2 Modifications"
|
||||
|
||||
#: ../../source/more/project_format.rst:96
|
||||
msgid "This project format was introduced in UmbraEdit version 0.10."
|
||||
msgstr ""
|
||||
"Ce format de projet a été introduit dans la version 0.10 de UmbraEdit."
|
||||
|
||||
#: ../../source/more/project_format.rst:98
|
||||
msgid ""
|
||||
"With this format, the way auto-replace entries were stored in the main "
|
||||
"project XML file changed. Conversion from this format is done "
|
||||
"automatically."
|
||||
msgstr ""
|
||||
"Avec ce format, la façon dont les entrées de remplacement automatique "
|
||||
"étaient stockées dans le fichier XML du projet principal a changé. La "
|
||||
"conversion de ce format se fait automatiquement."
|
||||
|
||||
#: ../../source/more/project_format.rst:105
|
||||
msgid "Format 1.1 Changes"
|
||||
msgstr "Format 1.1 Modifications"
|
||||
|
||||
#: ../../source/more/project_format.rst:107
|
||||
msgid "This project format was introduced in UmbraEdit version 0.7."
|
||||
msgstr ""
|
||||
"Ce format de projet a été introduit dans la version 0.7 de UmbraEdit."
|
||||
|
||||
#: ../../source/more/project_format.rst:109
|
||||
msgid ""
|
||||
"With this format, the ``content`` folder was introduced in the project "
|
||||
"storage. Previously, all UmbraEdit documents were saved in a series of "
|
||||
"folders numbered from ``data_0`` to ``data_f``."
|
||||
msgstr ""
|
||||
"Avec ce format, le dossier ``content`` a été introduit dans le stockage "
|
||||
"du projet. Auparavant, tous les documents de UmbraEdit étaient "
|
||||
"sauvegardés dans une série de dossiers numérotés de ``data_0`` à "
|
||||
"``data_f``."
|
||||
|
||||
#: ../../source/more/project_format.rst:112
|
||||
msgid ""
|
||||
"It also reduces the number of meta data and cache files. These files are "
|
||||
"automatically deleted if an old project is opened. This was also when "
|
||||
"the Table of Contents file was introduced. Conversion from this format "
|
||||
"is done automatically."
|
||||
msgstr ""
|
||||
"Il réduit également le nombre de métadonnées et de fichiers de cache. "
|
||||
"Ces fichiers sont automatiquement supprimés lorsqu'un ancien projet est "
|
||||
"ouvert. C'est également à cette époque que le fichier de table des "
|
||||
"matières a été introduit. La conversion de ce format se fait "
|
||||
"automatiquement."
|
||||
|
||||
#: ../../source/more/project_format.rst:120
|
||||
msgid "Format 1.0 Changes"
|
||||
msgstr "Format 1.0 Modifications"
|
||||
|
||||
#: ../../source/more/project_format.rst:122
|
||||
msgid ""
|
||||
"This is the original file format and project structure. It was in use up "
|
||||
"to version 0.6.3."
|
||||
msgstr ""
|
||||
"Il s'agit du format de fichier et de la structure de projet d'origine. "
|
||||
"Il a été utilisé jusqu'à la version 0.6.3."
|
||||
@@ -1,267 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-28 23:17+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/more/typography.rst:5
|
||||
msgid "Typographical Notes"
|
||||
msgstr "Notes typographiques"
|
||||
|
||||
#: ../../source/more/typography.rst:12
|
||||
msgid ""
|
||||
"UmbraEdit has some support for typographical symbols that are not usually "
|
||||
"easily available in many text editors. This includes for instance the "
|
||||
"proper unicode quotation marks, dashes, ellipsis, thin spaces, etc. All "
|
||||
"these symbols are available from the **Insert** menu, and via keyboard "
|
||||
"shortcuts. See :ref:`docs_features_shortcuts_insert`."
|
||||
msgstr ""
|
||||
"UmbraEdit prend en charge certains symboles typographiques qui ne sont "
|
||||
"généralement pas disponibles dans de nombreux éditeurs de texte. Cela "
|
||||
"inclut par exemple les guillemets unicode, les tirets, les ellipses, les "
|
||||
"espaces fins, etc. Tous ces symboles sont disponibles dans le menu "
|
||||
"**Insérer**, et via des raccourcis clavier. Voir :ref:"
|
||||
"`docs_features_shortcuts_insert`."
|
||||
|
||||
#: ../../source/more/typography.rst:17
|
||||
msgid ""
|
||||
"This chapter provides some additional information on how UmbraEdit "
|
||||
"handles these symbols."
|
||||
msgstr ""
|
||||
"Ce chapitre fournit des informations supplémentaires sur la manière dont "
|
||||
"UmbraEdit gère ces symboles."
|
||||
|
||||
#: ../../source/more/typography.rst:21
|
||||
msgid "Dashes and Ellipsis"
|
||||
msgstr "Tirets et points de suspension"
|
||||
|
||||
#: ../../source/more/typography.rst:23
|
||||
msgid ""
|
||||
"With the auto-replace feature enabled (see :ref:`docs_ui_edit_view_auto`), "
|
||||
"two and three hyphens are converted automatically to short and long dashes, "
|
||||
"four hyphens to a horizontal bar, and three dots to ellipsis."
|
||||
msgstr ""
|
||||
"Lorsque la fonction de remplacement automatique est activée (voir :ref:"
|
||||
"`docs_ui_edit_view_auto`), les deux et trois traits d'union sont "
|
||||
"automatiquement convertis en tirets demi-cadratin et cadratin, les quatre "
|
||||
"traits d'union en barre horizontale et les trois points en points de "
|
||||
"suspension."
|
||||
|
||||
#: ../../source/more/typography.rst:29
|
||||
msgid ""
|
||||
"The last auto-replace can always be reverted with the undo command :kbd:"
|
||||
"`Ctrl+Z`, reverting the text to what you typed before the automatic "
|
||||
"replacement occurred."
|
||||
msgstr ""
|
||||
"Le dernier remplacement automatique peut toujours être annulé avec la "
|
||||
"commande d'annulation :kbd:`Ctrl+Z`, rétablissant le texte tel qu'il était "
|
||||
"avant le remplacement automatique."
|
||||
|
||||
#: ../../source/more/typography.rst:32
|
||||
msgid ""
|
||||
"In addition, \"Figure Dash\" is available. The Figure Dash is a dash that "
|
||||
"has the same width as the numbers of the same font, for most fonts. It "
|
||||
"helps to align numbers nicely in columns when you need to use a dash in "
|
||||
"them."
|
||||
msgstr ""
|
||||
"En outre, le « tiret chiffré » est disponible. Il s'agit d'un tiret de la "
|
||||
"même largeur que les chiffres de la même police, pour la plupart des "
|
||||
"polices. Il permet de bien aligner les chiffres dans les colonnes lorsque "
|
||||
"vous devez utiliser un tiret."
|
||||
|
||||
#: ../../source/more/typography.rst:38
|
||||
msgid "Single and Double Quotes"
|
||||
msgstr "Guillemets simples et doubles"
|
||||
|
||||
#: ../../source/more/typography.rst:40
|
||||
msgid ""
|
||||
"All the different quotation marks listed on the `Quotation Mark`_ Wikipedia "
|
||||
"page are available, and can be selected as auto-replaced symbols for "
|
||||
"straight single and double quote key strokes. The settings can be found in "
|
||||
"**Preferences**."
|
||||
msgstr ""
|
||||
"Tous les différents guillemets listés sur la page Wikipedia `Quotation "
|
||||
"Mark`_ sont disponibles, et peuvent être sélectionnés comme symboles auto-"
|
||||
"remplacés pour les touches de guillemets simples et doubles. Les réglages "
|
||||
"se trouvent dans les **Préférences**."
|
||||
|
||||
#: ../../source/more/typography.rst:44
|
||||
msgid ""
|
||||
"If your text contains straight single and double quotes, there are two "
|
||||
"convenience functions in the **Format** menu that can be used to re-format "
|
||||
"a selected section of text with the correct quote symbols."
|
||||
msgstr ""
|
||||
"Si votre texte contient des guillemets simples et doubles, deux fonctions "
|
||||
"pratiques du menu **Format** permettent de reformater une section de texte "
|
||||
"sélectionnée avec les symboles de guillemets corrects."
|
||||
|
||||
#: ../../source/more/typography.rst:48
|
||||
msgid ""
|
||||
"You can enable dialogue recognition and colour highlighting for novel "
|
||||
"documents. See :ref:`docs_features_dialogue` for more details."
|
||||
msgstr ""
|
||||
"Vous pouvez activer la reconnaissance du dialogue et la mise en évidence "
|
||||
"des couleurs pour les nouveaux documents. Voir :ref:"
|
||||
"`docs_features_dialogue` pour plus de détails."
|
||||
|
||||
#: ../../source/more/typography.rst:53
|
||||
msgid "Single and Double Prime"
|
||||
msgstr "Simple et double prime"
|
||||
|
||||
#: ../../source/more/typography.rst:55
|
||||
msgid ""
|
||||
"Both single and double prime symbols are available in the **Insert** menu. "
|
||||
"These symbols are the correct symbols to use for unit symbols for feet, "
|
||||
"inches, minutes, and seconds. The usage of these is described in more "
|
||||
"detail on the Wikipedia Prime_ page. They look very similar to single and "
|
||||
"double straight quotes, and may be rendered similarly by the font, but they "
|
||||
"have different codes. Using these correctly will also prevent the auto-"
|
||||
"replace and dialogue highlighting features misunderstanding their meaning "
|
||||
"in the text."
|
||||
msgstr ""
|
||||
"Les symboles de prime simple et double sont disponibles dans le menu "
|
||||
"**Insérer**. Ces symboles sont les symboles corrects à utiliser pour les "
|
||||
"symboles d'unités pour les pieds, les pouces, les minutes et les secondes. "
|
||||
"L'utilisation de ces symboles est décrite plus en détail sur la page Prime_ "
|
||||
"de Wikipedia. Ils ressemblent beaucoup aux guillemets simples et doubles et "
|
||||
"peuvent être rendus de la même manière par la police, mais ils ont des "
|
||||
"codes différents. En les utilisant correctement, vous éviterez que les "
|
||||
"fonctions de remplacement automatique et de mise en évidence des dialogues "
|
||||
"ne se méprennent sur leur signification dans le texte."
|
||||
|
||||
#: ../../source/more/typography.rst:66
|
||||
msgid "Modifier Letter Apostrophe"
|
||||
msgstr "Modificateur Lettre Apostrophe"
|
||||
|
||||
#: ../../source/more/typography.rst:68
|
||||
msgid ""
|
||||
"The auto-replace feature will consider any right-facing single straight "
|
||||
"quote as a quote symbol, even if it is intended as an apostrophe. This also "
|
||||
"includes the syntax highlighter, which may assume the first following "
|
||||
"apostrophe is the closing symbol of a single quoted region of text."
|
||||
msgstr ""
|
||||
"La fonction de remplacement automatique considère tout guillemet droit "
|
||||
"simple orienté vers la droite comme un symbole de guillemet, même s'il "
|
||||
"s'agit d'une apostrophe. Cela s'applique également à l'outil de mise en "
|
||||
"évidence de la syntaxe, qui peut supposer que la première apostrophe qui "
|
||||
"suit est le symbole de fermeture d'une région de texte entre guillemets."
|
||||
|
||||
#: ../../source/more/typography.rst:72
|
||||
msgid ""
|
||||
"To get around this, an alternative apostrophe is available. It is a special "
|
||||
"Unicode character that is not categorised as punctuation, but as a "
|
||||
"modifier. It is usually rendered the same way as the right single quotation "
|
||||
"marks, depending on the font. There is a Wikipedia article for the "
|
||||
"`Modifier letter apostrophe`_ with more details."
|
||||
msgstr ""
|
||||
"Pour contourner ce problème, il existe une apostrophe alternative. Il "
|
||||
"s'agit d'un caractère Unicode spécial qui n'est pas considéré comme une "
|
||||
"ponctuation, mais comme un modificateur. Il est généralement rendu de la "
|
||||
"même manière que les guillemets simples de droite, en fonction de la police "
|
||||
"de caractères. Il existe un article de Wikipédia sur la `lettre "
|
||||
"modificatrice apostrophe`_ avec plus de détails."
|
||||
|
||||
#: ../../source/more/typography.rst:79
|
||||
msgid ""
|
||||
"On export with the **Build Manuscript** tool, these apostrophes will be "
|
||||
"replaced automatically with the corresponding right hand single quote "
|
||||
"symbol as is generally recommended. Therefore it doesn't really matter if "
|
||||
"you only use them to correct syntax highlighting in some places, and not "
|
||||
"others."
|
||||
msgstr ""
|
||||
"Lors de l'exportation à l'aide de l'outil **Compiler le manuscrit**, ces "
|
||||
"apostrophes seront automatiquement remplacées par le symbole de guillemet "
|
||||
"simple de droite correspondant, comme cela est généralement recommandé. Par "
|
||||
"conséquent, il importe peu que vous les utilisiez uniquement pour corriger "
|
||||
"la coloration syntaxique à certains endroits, et pas à d'autres."
|
||||
|
||||
#: ../../source/more/typography.rst:86
|
||||
msgid "White Space Symbols"
|
||||
msgstr "Symboles de l'espace"
|
||||
|
||||
#: ../../source/more/typography.rst:88
|
||||
msgid ""
|
||||
"A few variations of the regular space character is supported. The correct "
|
||||
"typographical way to separate a number from its unit is with a `thin "
|
||||
"space`_. It is usually 2/3 the width of a regular space. For numbers and "
|
||||
"units, this should in addition be a non-breaking space, that is, the text "
|
||||
"wrapping should not add a line break on this particular space."
|
||||
msgstr ""
|
||||
"Quelques variations du caractère espace régulier sont prises en charge. La "
|
||||
"manière typographique correcte de séparer un nombre de son unité est "
|
||||
"d'utiliser une `espace fine`_. Sa largeur est généralement égale aux deux "
|
||||
"tiers de celle d'une espace normale. Pour les nombres et les unités, il "
|
||||
"doit en outre s'agir d'un espace insécable, c'est-à-dire que l'habillage du "
|
||||
"texte ne doit pas ajouter de saut de ligne sur cet espace particulier."
|
||||
|
||||
#: ../../source/more/typography.rst:93
|
||||
msgid "A regular space can also be made into a non-breaking space if needed."
|
||||
msgstr ""
|
||||
"Un espace régulier peut également être transformé en espace insécable si "
|
||||
"nécessaire."
|
||||
|
||||
#: ../../source/more/typography.rst:95
|
||||
msgid ""
|
||||
"All non-breaking spaces are highlighted with a differently coloured "
|
||||
"background to make it easier to spot them in the text. The colour will "
|
||||
"depend on the selected colour theme."
|
||||
msgstr ""
|
||||
"Tous les espaces insécables sont mis en évidence par un arrière-plan de "
|
||||
"couleur différente pour faciliter leur repérage dans le texte. La couleur "
|
||||
"dépend du thème de couleur sélectionné."
|
||||
|
||||
#: ../../source/more/typography.rst:98
|
||||
msgid ""
|
||||
"You can insert these spaces in your text using the following keyboard "
|
||||
"combinations:"
|
||||
msgstr ""
|
||||
"Vous pouvez insérer ces espaces dans votre texte en utilisant les "
|
||||
"combinaisons de clavier suivantes :"
|
||||
|
||||
#: ../../source/more/typography.rst:100
|
||||
msgid "A non-breaking space can be inserted with :kbd:`Ctrl+K`, :kbd:`Space`."
|
||||
msgstr ""
|
||||
"Un espace insécable peut être inséré avec :kbd:`Ctrl+K`, :kbd:`Espace`."
|
||||
|
||||
#: ../../source/more/typography.rst:101
|
||||
msgid ""
|
||||
"Thin spaces are also supported, and can be inserted with :kbd:`Ctrl+K`, :"
|
||||
"kbd:`Shift+Space`."
|
||||
msgstr ""
|
||||
"Les espaces courtes sont également supportés, et peuvent être insérés avec :"
|
||||
"kbd:`Ctrl+K`, :kbd:`Maj+Espace`."
|
||||
|
||||
#: ../../source/more/typography.rst:102
|
||||
msgid ""
|
||||
"Non-breaking thin space can be inserted with :kbd:`Ctrl+K`, :kbd:"
|
||||
"`Ctrl+Space`."
|
||||
msgstr ""
|
||||
"Une espace courte insécable peut être insérée avec :kbd:`Ctrl+K`, :kbd:"
|
||||
"`Ctrl+Espace`."
|
||||
|
||||
#: ../../source/more/typography.rst:104
|
||||
msgid ""
|
||||
"These are all insert features, and the **Insert** menu has more. The "
|
||||
"keyboard shortcuts for them are also listed in :ref:"
|
||||
"`docs_features_shortcuts`."
|
||||
msgstr ""
|
||||
"Ce sont toutes des fonctions d'insertion, et le menu **Insérer** en propose "
|
||||
"d'autres. Les raccourcis clavier sont également listés dans :ref:"
|
||||
"`docs_features_shortcuts`."
|
||||
@@ -1,158 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-29 11:25+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/technical/locations.rst:5
|
||||
msgid "File Locations"
|
||||
msgstr "Emplacement des fichiers"
|
||||
|
||||
#: ../../source/technical/locations.rst:9
|
||||
msgid ""
|
||||
"UmbraEdit will create a few files on your system outside of the "
|
||||
"application folder itself. These file locations are described in this "
|
||||
"chapter."
|
||||
msgstr ""
|
||||
"UmbraEdit créera quelques fichiers sur votre système en dehors du "
|
||||
"dossier de l'application elle-même. L'emplacement de ces fichiers est "
|
||||
"décrit dans ce chapitre."
|
||||
|
||||
#: ../../source/technical/locations.rst:16
|
||||
msgid "Configuration"
|
||||
msgstr "Configuration"
|
||||
|
||||
#: ../../source/technical/locations.rst:18
|
||||
msgid ""
|
||||
"The general configuration of UmbraEdit, including everything that is "
|
||||
"in **Preferences**, is saved in one central configuration file. The "
|
||||
"location of this file depends on your operating system. The system paths "
|
||||
"are provided by the Qt QStandardPaths_ class and its ``ConfigLocation`` "
|
||||
"value."
|
||||
msgstr ""
|
||||
"La configuration générale de UmbraEdit, y compris tout ce qui se "
|
||||
"trouve dans les **Préférences**, est enregistrée dans un fichier de "
|
||||
"configuration central. L'emplacement de ce fichier dépend de votre "
|
||||
"système d'exploitation. Les chemins d'accès au système sont fournis par "
|
||||
"la classe Qt QStandardPaths_ et sa valeur ``ConfigLocation``."
|
||||
|
||||
#: ../../source/technical/locations.rst:22
|
||||
#: ../../source/technical/locations.rst:45
|
||||
msgid "The standard paths are:"
|
||||
msgstr "Les chemins standard sont les suivants :"
|
||||
|
||||
#: ../../source/technical/locations.rst:24
|
||||
msgid "Linux: ``~/.config/umbraedit/umbraedit.conf``"
|
||||
msgstr "Linux : ``~/.config/umbraedit/umbraedit.conf``"
|
||||
|
||||
#: ../../source/technical/locations.rst:25
|
||||
msgid "MacOS: ``~/Library/Preferences/umbraedit/umbraedit.conf``"
|
||||
msgstr "MacOS: ``~/Library/Preferences/umbraedit/umbraedit.conf``"
|
||||
|
||||
#: ../../source/technical/locations.rst:26
|
||||
msgid ""
|
||||
"Windows: ``C:\\Users\\<USER>\\AppData\\Local\\umbraedit\\umbraedit."
|
||||
"conf``"
|
||||
msgstr ""
|
||||
"Windows: ``C:\\Users\\<USER>\\AppData\\Local\\umbraedit\\umbraedit."
|
||||
"conf``"
|
||||
|
||||
#: ../../source/technical/locations.rst:28
|
||||
#: ../../source/technical/locations.rst:51
|
||||
msgid ""
|
||||
"Here, ``~`` corresponds to the user's home directory on Linux and MacOS, "
|
||||
"and ``<USER>`` is the user's username on Windows."
|
||||
msgstr ""
|
||||
"Ici, ``~`` correspond au répertoire personnel de l'utilisateur sous "
|
||||
"Linux et MacOS, et ``<USER>`` est le nom d'utilisateur de l'utilisateur "
|
||||
"sous Windows."
|
||||
|
||||
#: ../../source/technical/locations.rst:32
|
||||
#: ../../source/technical/locations.rst:55
|
||||
msgid ""
|
||||
"These are the standard operating system defined locations. If your "
|
||||
"system has been set up in a different way, these locations may also be "
|
||||
"different."
|
||||
msgstr ""
|
||||
"Il s'agit des emplacements standard définis par le système "
|
||||
"d'exploitation. Si votre système a été configuré différemment, ces "
|
||||
"emplacements peuvent également être différents."
|
||||
|
||||
#: ../../source/technical/locations.rst:39
|
||||
msgid "Application Data"
|
||||
msgstr "Données d'application"
|
||||
|
||||
#: ../../source/technical/locations.rst:41
|
||||
msgid ""
|
||||
"UmbraEdit also stores a bit of data that is generated by the user's "
|
||||
"actions. This includes the list of recent projects form the **Welcome** "
|
||||
"dialog. Custom themes should also be saved here. The system paths are "
|
||||
"provided by the Qt QStandardPaths_ class and its ``AppDataLocation`` "
|
||||
"value."
|
||||
msgstr ""
|
||||
"UmbraEdit stocke également un certain nombre de données générées par "
|
||||
"les actions de l'utilisateur. Cela inclut la liste des projets récents "
|
||||
"de la boîte de dialogue **Bienvenue**. Les thèmes personnalisés "
|
||||
"devraient également être sauvegardés ici. Les chemins d'accès au système "
|
||||
"sont fournis par la classe Qt QStandardPaths_ et sa valeur "
|
||||
"``AppDataLocation``."
|
||||
|
||||
#: ../../source/technical/locations.rst:47
|
||||
msgid "Linux: ``~/.local/share/umbraedit/``"
|
||||
msgstr "Linux: ``~/.local/share/umbraedit/``"
|
||||
|
||||
#: ../../source/technical/locations.rst:48
|
||||
msgid "MacOS: ``~/Library/Application Support/umbraedit/``"
|
||||
msgstr "MacOS: ``~/Library/Application Support/umbraedit/``"
|
||||
|
||||
#: ../../source/technical/locations.rst:49
|
||||
msgid "Windows: ``C:\\Users\\<USER>\\AppData\\Roaming\\umbraedit\\``"
|
||||
msgstr "Windows: ``C:\\Users\\<USER>\\AppData\\Roaming\\umbraedit\\``"
|
||||
|
||||
#: ../../source/technical/locations.rst:58
|
||||
msgid "The Application Data location also holds several folders:"
|
||||
msgstr ""
|
||||
"L'emplacement des données d'application contient également plusieurs "
|
||||
"dossiers :"
|
||||
|
||||
#: ../../source/technical/locations.rst:60
|
||||
msgid "``cache``"
|
||||
msgstr "``cache``"
|
||||
|
||||
#: ../../source/technical/locations.rst:61
|
||||
msgid ""
|
||||
"This folder is used to save the preview data for the **Manuscript "
|
||||
"Build** tool."
|
||||
msgstr ""
|
||||
"Ce dossier est utilisé pour enregistrer les données de prévisualisation "
|
||||
"pour l'outil **Compilation de manuscrit**."
|
||||
|
||||
#: ../../source/technical/locations.rst:63
|
||||
msgid "``icons``, ``syntax`` and ``themes``"
|
||||
msgstr "``icons``, ``syntax`` and ``themes``"
|
||||
|
||||
#: ../../source/technical/locations.rst:64
|
||||
msgid ""
|
||||
"These folders are empty by default, but this is where the user can store "
|
||||
"custom theme files. See :ref:`docs_more_custom` for more details."
|
||||
msgstr ""
|
||||
"Ces dossiers sont vides par défaut, mais c'est là que l'utilisateur peut "
|
||||
"stocker des fichiers de thèmes personnalisés. Voir :ref:"
|
||||
"`docs_more_custom` pour plus de détails."
|
||||
@@ -1,283 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-29 11:39+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/technical/source.rst:5
|
||||
msgid "Running from Source"
|
||||
msgstr "Exécuter depuis la source"
|
||||
|
||||
#: ../../source/technical/source.rst:11
|
||||
msgid ""
|
||||
"This chapter describes various ways of running UmbraEdit directly from "
|
||||
"the source code, and how to build the various components like the "
|
||||
"translation files and documentation."
|
||||
msgstr ""
|
||||
"Ce chapitre décrit les différentes façons d'exécuter UmbraEdit "
|
||||
"directement à partir du code source, et comment construire les "
|
||||
"différents composants tels que les fichiers de traduction et la "
|
||||
"documentation."
|
||||
|
||||
#: ../../source/technical/source.rst:16
|
||||
msgid ""
|
||||
"The text below assumes the command ``python`` corresponds to a Python 3 "
|
||||
"executable. Python 2 is now deprecated, but on many systems the command "
|
||||
"``python3`` may be needed instead. Likewise, ``pip`` may need to be "
|
||||
"replaced with ``pip3``."
|
||||
msgstr ""
|
||||
"Le texte ci-dessous suppose que la commande ``python`` correspond à un "
|
||||
"exécutable Python 3. Python 2 est maintenant déprécié, mais sur de "
|
||||
"nombreux systèmes, la commande ``python3`` peut être utilisée à la "
|
||||
"place. De même, ``pip`` peut être remplacé par ``pip3``."
|
||||
|
||||
#: ../../source/technical/source.rst:20
|
||||
msgid ""
|
||||
"Most of the custom commands for building packages of UmbraEdit, or "
|
||||
"building assets, are contained in the ``pkgutils.py`` script in the root "
|
||||
"of the source code. You can list the available commands by running:"
|
||||
msgstr ""
|
||||
"La plupart des commandes personnalisées pour construire des paquets de "
|
||||
"UmbraEdit, ou pour construire des actifs, sont contenues dans le "
|
||||
"script ``pkgutils.py`` à la racine du code source. Vous pouvez lister "
|
||||
"les commandes disponibles en lançant :"
|
||||
|
||||
#: ../../source/technical/source.rst:32
|
||||
msgid "Dependencies"
|
||||
msgstr "Dépendances"
|
||||
|
||||
#: ../../source/technical/source.rst:34
|
||||
msgid ""
|
||||
"UmbraEdit has been designed to rely on as few dependencies as "
|
||||
"possible. Only the Python wrapper for the Qt GUI libraries is required. "
|
||||
"The package for spell checking is optional, but recommended. Everything "
|
||||
"else is handled with standard Python libraries."
|
||||
msgstr ""
|
||||
"UmbraEdit a été conçu pour s'appuyer sur le moins de dépendances "
|
||||
"possible. Seul le wrapper Python pour les bibliothèques Qt GUI est "
|
||||
"nécessaire. Le paquetage pour la vérification orthographique est "
|
||||
"optionnel, mais recommandé. Tout le reste est géré par les bibliothèques "
|
||||
"Python standard."
|
||||
|
||||
#: ../../source/technical/source.rst:38
|
||||
msgid ""
|
||||
"The following Python packages are needed to run all features of "
|
||||
"UmbraEdit:"
|
||||
msgstr ""
|
||||
"Les paquets Python suivants sont nécessaires pour exécuter toutes les "
|
||||
"fonctionnalités de UmbraEdit :"
|
||||
|
||||
#: ../../source/technical/source.rst:40
|
||||
msgid "``PyQt6`` – needed for connecting with the Qt6 libraries."
|
||||
msgstr "``PyQt6`` - nécessaire pour se connecter aux bibliothèques Qt6."
|
||||
|
||||
#: ../../source/technical/source.rst:41
|
||||
msgid "``PyEnchant`` – needed for spell checking (optional)."
|
||||
msgstr ""
|
||||
"``PyEnchant`` - nécessaire pour la vérification orthographique "
|
||||
"(optionnel)."
|
||||
|
||||
#: ../../source/technical/source.rst:43
|
||||
msgid ""
|
||||
"If you want spell checking, you must install the ``PyEnchant`` package. "
|
||||
"The spell check library must be at least 3.0 to work with Windows. On "
|
||||
"Linux, 2.0 also works fine."
|
||||
msgstr ""
|
||||
"Si vous voulez un correcteur orthographique, vous devez installer le "
|
||||
"paquet ``PyEnchant``. La bibliothèque de vérification orthographique "
|
||||
"doit être au moins en version 3.0 pour fonctionner sous Windows. Sous "
|
||||
"Linux, la version 2.0 fonctionne également très bien."
|
||||
|
||||
#: ../../source/technical/source.rst:46
|
||||
msgid ""
|
||||
"If you install from PyPi, these dependencies should be installed "
|
||||
"automatically. If you install from source, dependencies can still be "
|
||||
"installed from PyPi with:"
|
||||
msgstr ""
|
||||
"Si vous installez à partir de PyPi, ces dépendances devraient être "
|
||||
"installées automatiquement. Si vous installez à partir des sources, les "
|
||||
"dépendances peuvent toujours être installées à partir de PyPi avec :"
|
||||
|
||||
#: ../../source/technical/source.rst:55
|
||||
msgid ""
|
||||
"On Linux distros, the Qt library is usually split up into multiple "
|
||||
"packages. In some cases, secondary dependencies may not be installed "
|
||||
"automatically. For UmbraEdit, the library files for rendering the SVG "
|
||||
"icons may be left out and needs to be installed manually. This is the "
|
||||
"case on for instance Arch Linux."
|
||||
msgstr ""
|
||||
"Sur les distributions Linux, la bibliothèque Qt est généralement divisée "
|
||||
"en plusieurs paquets. Dans certains cas, des dépendances secondaires "
|
||||
"peuvent ne pas être installées automatiquement. Pour UmbraEdit, les "
|
||||
"fichiers de la bibliothèque pour le rendu des icônes SVG peuvent être "
|
||||
"omis et doivent être installés manuellement. C'est le cas, par exemple, "
|
||||
"sous Arch Linux."
|
||||
|
||||
#: ../../source/technical/source.rst:64
|
||||
msgid "Build and Install from Source"
|
||||
msgstr "Compiler et installer à partir des sources"
|
||||
|
||||
#: ../../source/technical/source.rst:66
|
||||
msgid ""
|
||||
"If you want to install UmbraEdit directly from the source available on "
|
||||
"GitHub_, you must first build the package using the Python Packaging "
|
||||
"Authority's build tool. It can be installed with:"
|
||||
msgstr ""
|
||||
"Si vous souhaitez installer UmbraEdit directement à partir des sources "
|
||||
"disponibles sur GitHub_, vous devez d'abord construire le paquet à "
|
||||
"l'aide de l'outil de construction de la Python Packaging Authority. Il "
|
||||
"peut être installé avec :"
|
||||
|
||||
#: ../../source/technical/source.rst:73
|
||||
msgid "On Debian-based systems the tool can also be installed with:"
|
||||
msgstr ""
|
||||
"Sur les systèmes basés sur Debian, l'outil peut également être installé "
|
||||
"avec :"
|
||||
|
||||
#: ../../source/technical/source.rst:79
|
||||
msgid ""
|
||||
"With the tool installed, run the following command from the root of the "
|
||||
"UmbraEdit source code:"
|
||||
msgstr ""
|
||||
"Une fois l'outil installé, exécutez la commande suivante à partir de la "
|
||||
"racine du code source de UmbraEdit :"
|
||||
|
||||
#: ../../source/technical/source.rst:85
|
||||
msgid ""
|
||||
"This should generate a ``.whl`` file in the ``dist/`` folder at your "
|
||||
"current location. The wheel file can then be installed on your system. "
|
||||
"Here with example version number 2.0.7, but yours may be different:"
|
||||
msgstr ""
|
||||
"Cela devrait générer un fichier ``.whl`` dans le dossier ``dist/`` de "
|
||||
"votre emplacement actuel. Le fichier wheel peut alors être installé sur "
|
||||
"votre système. Ici avec l'exemple de la version numéro 2.0.7, mais la "
|
||||
"vôtre peut être différente :"
|
||||
|
||||
#: ../../source/technical/source.rst:97
|
||||
msgid "Building the Translation Files"
|
||||
msgstr "Création des fichiers de traduction"
|
||||
|
||||
#: ../../source/technical/source.rst:99
|
||||
msgid ""
|
||||
"If you installed UmbraEdit from a package, the translation files "
|
||||
"should be pre-built and included. If you're running UmbraEdit from the "
|
||||
"source code, you will need to generate the files yourself. The files you "
|
||||
"need will be written to the ``umbraedit/assets/i18n`` folder, and will "
|
||||
"have the ``.qm`` file extension."
|
||||
msgstr ""
|
||||
"Si vous avez installé UmbraEdit à partir d'un paquetage, les fichiers "
|
||||
"de traduction devraient être préconstruits et inclus. Si vous exécutez "
|
||||
"UmbraEdit à partir du code source, vous devrez générer les fichiers "
|
||||
"vous-même. Les fichiers dont vous avez besoin seront écrits dans le "
|
||||
"dossier ``umbraedit/assets/i18n``, et auront l'extension ``.qm``."
|
||||
|
||||
#: ../../source/technical/source.rst:104
|
||||
msgid "You can build the ``.qm`` files with:"
|
||||
msgstr "Vous pouvez construire les fichiers ``.qm`` avec :"
|
||||
|
||||
#: ../../source/technical/source.rst:110
|
||||
msgid ""
|
||||
"This requires that the Qt Linguist tool is installed on your system. On "
|
||||
"Ubuntu and Debian, the needed package is called ``qttools5-dev-tools``."
|
||||
msgstr ""
|
||||
"Cela nécessite que l'outil Qt Linguist soit installé sur votre système. "
|
||||
"Sur Ubuntu et Debian, le paquet nécessaire s'appelle ``qttools5-dev-"
|
||||
"tools``."
|
||||
|
||||
#: ../../source/technical/source.rst:115
|
||||
msgid ""
|
||||
"If you want to improve UmbraEdit with translation files for another "
|
||||
"language, or update an existing translation, instructions for how to "
|
||||
"contribute can be found in the ``README.md`` file in the ``i18n`` folder "
|
||||
"of the source code."
|
||||
msgstr ""
|
||||
"Si vous voulez améliorer UmbraEdit avec des fichiers de traduction "
|
||||
"pour une autre langue, ou mettre à jour une traduction existante, les "
|
||||
"instructions pour contribuer peuvent être trouvées dans le fichier "
|
||||
"``README.md`` dans le dossier ``i18n`` du code source."
|
||||
|
||||
#: ../../source/technical/source.rst:123
|
||||
msgid "Building the Example Project"
|
||||
msgstr "Construction du projet d'exemple"
|
||||
|
||||
#: ../../source/technical/source.rst:125
|
||||
msgid ""
|
||||
"In order to be able to create new projects from example files, you need "
|
||||
"a ``sample.zip`` file in the ``assets`` folder of the source. This file "
|
||||
"can be built from the ``pkgutils.py`` script by running:"
|
||||
msgstr ""
|
||||
"Afin de pouvoir créer de nouveaux projets à partir des fichiers "
|
||||
"d'exemple, vous avez besoin d'un fichier ``sample.zip`` dans le dossier "
|
||||
"``assets`` de la source. Ce fichier peut être construit à partir du "
|
||||
"script ``pkgutils.py`` en exécutant :"
|
||||
|
||||
#: ../../source/technical/source.rst:137
|
||||
msgid "Building the Documentation"
|
||||
msgstr "Élaboration de la documentation"
|
||||
|
||||
#: ../../source/technical/source.rst:139
|
||||
msgid ""
|
||||
"A local copy of this documentation can be generated as HTML. This "
|
||||
"requires installing some Python packages from PyPi:"
|
||||
msgstr ""
|
||||
"Une copie locale de cette documentation peut être générée au format "
|
||||
"HTML. Cela nécessite l'installation de certains paquets Python à partir "
|
||||
"de PyPi :"
|
||||
|
||||
#: ../../source/technical/source.rst:146
|
||||
msgid ""
|
||||
"The documentation can then be built from the root folder in the source "
|
||||
"code by running:"
|
||||
msgstr ""
|
||||
"La documentation peut ensuite être créée à partir du dossier racine du "
|
||||
"code source en lançant le programme :"
|
||||
|
||||
#: ../../source/technical/source.rst:152
|
||||
msgid ""
|
||||
"If successful, the documentation should be available in the ``docs/build/"
|
||||
"html`` folder and you can open the ``index.html`` file in your browser."
|
||||
msgstr ""
|
||||
"En cas de succès, la documentation devrait être disponible dans le "
|
||||
"dossier `docs/build/html` et vous pouvez ouvrir le fichier `index.html` "
|
||||
"dans votre navigateur."
|
||||
|
||||
#: ../../source/technical/source.rst:155
|
||||
msgid ""
|
||||
"You can also build a PDF manual from the documentation using the "
|
||||
"``pkgutils.py`` script:"
|
||||
msgstr ""
|
||||
"Vous pouvez également créer un manuel PDF à partir de la documentation "
|
||||
"en utilisant le script ``pkgutils.py`` :"
|
||||
|
||||
#: ../../source/technical/source.rst:161
|
||||
msgid ""
|
||||
"This will build the English documentation as a PDF using LaTeX. The file "
|
||||
"will then be copied into the assets folder and made available in the "
|
||||
"**Help** menu in UmbraEdit. Replace ``en`` with ``all`` to build for "
|
||||
"all languages. The Sphinx build system has a few extra dependencies when "
|
||||
"building the PDF. Please check the `Sphinx Docs`_ for more details."
|
||||
msgstr ""
|
||||
"Cela permettra de créer la documentation anglaise au format PDF en "
|
||||
"utilisant LaTeX. Le fichier sera ensuite copié dans le dossier assets et "
|
||||
"rendu disponible dans le menu **Aide** de UmbraEdit. Remplacez ``en`` "
|
||||
"par ``all`` pour construire pour toutes les langues. Le système de "
|
||||
"construction Sphinx a quelques dépendances supplémentaires lors de la "
|
||||
"construction du PDF. Veuillez consulter la `Docs Sphinx`_ pour plus de "
|
||||
"détails."
|
||||
@@ -1,501 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-29 11:33+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/technical/storage.rst:5
|
||||
msgid "How Data is Stored"
|
||||
msgstr "Comment les données sont stockées"
|
||||
|
||||
#: ../../source/technical/storage.rst:9
|
||||
msgid ""
|
||||
"This chapter contains details of how UmbraEdit stores and handles the "
|
||||
"project data."
|
||||
msgstr ""
|
||||
"Ce chapitre contient des détails sur la manière dont UmbraEdit stocke "
|
||||
"et gère les données du projet."
|
||||
|
||||
#: ../../source/technical/storage.rst:13
|
||||
msgid "Overview"
|
||||
msgstr "Présentation générale"
|
||||
|
||||
#: ../../source/technical/storage.rst:15
|
||||
msgid ""
|
||||
"The files of a UmbraEdit project are stored in a dedicated project "
|
||||
"folder. The project structure is kept in a file at the root of this "
|
||||
"folder called ``nwProject.nwx``. All the document files and associated "
|
||||
"meta data are stored in other folders below the project folder."
|
||||
msgstr ""
|
||||
"Les fichiers d'un projet UmbraEdit sont stockés dans un dossier dédié "
|
||||
"au projet. La structure du projet est conservée dans un fichier à la "
|
||||
"racine de ce dossier appelé ``nwProject.nwx``. Tous les fichiers de "
|
||||
"documents et les métadonnées associées sont stockés dans d'autres "
|
||||
"dossiers sous le dossier du projet."
|
||||
|
||||
#: ../../source/technical/storage.rst:19
|
||||
msgid "This way of storing data was chosen for several reasons."
|
||||
msgstr ""
|
||||
"Ce mode de stockage des données a été choisi pour plusieurs raisons."
|
||||
|
||||
#: ../../source/technical/storage.rst:21
|
||||
msgid ""
|
||||
"Firstly, all the text you add to your project is saved directly to your "
|
||||
"project folder in separate files. Only the project structure and the "
|
||||
"text you are currently editing is stored in memory at any given time, "
|
||||
"which means there is a smaller risk of losing data if the application or "
|
||||
"your computer crashes."
|
||||
msgstr ""
|
||||
"Tout d'abord, tout le texte que vous ajoutez à votre projet est "
|
||||
"enregistré directement dans le dossier de votre projet, dans des "
|
||||
"fichiers séparés. Seule la structure du projet et le texte que vous êtes "
|
||||
"en train d'éditer sont stockés en mémoire à un moment donné, ce qui "
|
||||
"signifie qu'il y a moins de risque de perdre des données si "
|
||||
"l'application ou votre ordinateur tombe en panne."
|
||||
|
||||
#: ../../source/technical/storage.rst:26
|
||||
msgid ""
|
||||
"Secondly, having multiple small files means it is very easy to "
|
||||
"synchronise them between computers with standard file synchronisation "
|
||||
"tools."
|
||||
msgstr ""
|
||||
"Deuxièmement, le fait d'avoir plusieurs petits fichiers signifie qu'il "
|
||||
"est très facile de les synchroniser entre ordinateurs à l'aide d'outils "
|
||||
"de synchronisation de fichiers standard."
|
||||
|
||||
#: ../../source/technical/storage.rst:29
|
||||
msgid ""
|
||||
"Thirdly, if you use `version control`_ software to track the changes to "
|
||||
"your project, the file formats used for the files are well suited. All "
|
||||
"the JSON documents have line breaks and indents as well, which makes it "
|
||||
"easier to track them with version control software."
|
||||
msgstr ""
|
||||
"Troisièmement, si vous utilisez un logiciel de `contrôle de version`_ "
|
||||
"pour suivre les modifications apportées à votre projet, les formats "
|
||||
"utilisés pour les fichiers sont bien adaptés. Tous les documents JSON "
|
||||
"comportent des sauts de ligne et des retraits, ce qui facilite leur "
|
||||
"suivi avec un logiciel de contrôle de version."
|
||||
|
||||
#: ../../source/technical/storage.rst:35
|
||||
msgid ""
|
||||
"Since UmbraEdit has to keep track of a bunch of files and folders when "
|
||||
"a project is open, it may not run well on some virtual file systems. A "
|
||||
"file or folder must be accessible with exactly the path it was saved or "
|
||||
"created with. An example where this is not the case is the way Google "
|
||||
"Drive is mapped on Linux Gnome desktops using gvfs/gio."
|
||||
msgstr ""
|
||||
"Comme UmbraEdit doit garder la trace d'un grand nombre de fichiers et "
|
||||
"de dossiers lorsqu'un projet est ouvert, il peut ne pas fonctionner "
|
||||
"correctement sur certains systèmes de fichiers virtuels. Un fichier ou "
|
||||
"un dossier doit être accessible avec exactement le chemin avec lequel il "
|
||||
"a été sauvegardé ou créé. Un exemple où ce n'est pas le cas est la façon "
|
||||
"dont Google Drive est mappé sur les bureaux Linux Gnome en utilisant "
|
||||
"gvfs/gio."
|
||||
|
||||
#: ../../source/technical/storage.rst:42
|
||||
msgid ""
|
||||
"You should not add additional files to the project folder yourself. Nor "
|
||||
"should you, as a rule, manually edit files within it. If you really must "
|
||||
"manually edit the text files, e.g. with some automated task you want to "
|
||||
"perform, you need to rebuild the Project Index when you open the project "
|
||||
"again."
|
||||
msgstr ""
|
||||
"Vous ne devez pas ajouter vous-même des fichiers supplémentaires au "
|
||||
"dossier du projet. En règle générale, vous ne devez pas non plus "
|
||||
"modifier manuellement les fichiers qui s'y trouvent. Si vous devez "
|
||||
"vraiment modifier manuellement les fichiers texte, par exemple dans le "
|
||||
"cadre d'une tâche automatisée, vous devez reconstruire l'index du projet "
|
||||
"lorsque vous ouvrez à nouveau le projet."
|
||||
|
||||
#: ../../source/technical/storage.rst:47
|
||||
msgid ""
|
||||
"Editing text files in the ``content`` folder is less risky as these are "
|
||||
"just plain text. Editing the main project XML file, however, may make "
|
||||
"the project file unreadable and you may crash UmbraEdit and lose "
|
||||
"project structure information and project settings."
|
||||
msgstr ""
|
||||
"L'édition de fichiers texte dans le dossier ``content`` est moins "
|
||||
"risquée car il s'agit de texte simple. Cependant, éditer le fichier XML "
|
||||
"du projet principal peut rendre le fichier du projet illisible et vous "
|
||||
"risquez de planter UmbraEdit et de perdre les informations sur la "
|
||||
"structure et les paramètres du projet."
|
||||
|
||||
#: ../../source/technical/storage.rst:53
|
||||
msgid "Project Structure"
|
||||
msgstr "Structure du projet"
|
||||
|
||||
#: ../../source/technical/storage.rst:55
|
||||
msgid ""
|
||||
"All UmbraEdit files are written with utf-8 encoding. Since Python "
|
||||
"automatically converts Unix line endings to Windows line endings on "
|
||||
"Windows systems, UmbraEdit does not make any adaptations to the "
|
||||
"formatting on Windows systems. This is handled entirely by the Python "
|
||||
"standard library. Python also handles this when working on the same "
|
||||
"files on both Windows and Unix-based operating systems."
|
||||
msgstr ""
|
||||
"Tous les fichiers UmbraEdit sont écrits avec l'encodage utf-8. Comme "
|
||||
"Python convertit automatiquement les fins de ligne Unix en fins de ligne "
|
||||
"Windows sur les systèmes Windows, UmbraEdit ne fait aucune adaptation "
|
||||
"au formatage sur les systèmes Windows. Ceci est entièrement géré par la "
|
||||
"bibliothèque standard de Python. Python s'en occupe également lorsqu'il "
|
||||
"travaille sur les mêmes fichiers sur les systèmes d'exploitation Windows "
|
||||
"et Unix."
|
||||
|
||||
#: ../../source/technical/storage.rst:63
|
||||
msgid "Main Project File"
|
||||
msgstr "Fichier principal du projet"
|
||||
|
||||
#: ../../source/technical/storage.rst:65
|
||||
msgid ""
|
||||
"The project itself requires a dedicated folder for storing its files, "
|
||||
"where UmbraEdit will create its own \"file system\" where the "
|
||||
"project's folder and file hierarchy is described in a project XML file. "
|
||||
"This is the main project file in the project's root folder with the name "
|
||||
"``nwProject.nwx``. This file also contains all the meta data required "
|
||||
"for the project (except the index data), and a number of related project "
|
||||
"settings."
|
||||
msgstr ""
|
||||
"Le projet lui-même nécessite un dossier dédié pour stocker ses fichiers, "
|
||||
"où UmbraEdit créera son propre « système de fichiers » où la "
|
||||
"hiérarchie des dossiers et des fichiers du projet est décrite dans un "
|
||||
"fichier XML du projet. C'est le fichier principal du projet dans le "
|
||||
"dossier racine du projet avec le nom ``nwProject.nwx``. Ce fichier "
|
||||
"contient également toutes les métadonnées requises pour le projet (à "
|
||||
"l'exception des données d'index), ainsi qu'un certain nombre de "
|
||||
"paramètres liés au projet."
|
||||
|
||||
#: ../../source/technical/storage.rst:71
|
||||
msgid ""
|
||||
"If this file is lost or corrupted, the structure of the project is lost, "
|
||||
"although not the text itself. It is important to keep this file backed "
|
||||
"up, either through the built-in backup tool, or your own backup solution."
|
||||
msgstr ""
|
||||
"Si ce fichier est perdu ou corrompu, la structure du projet est perdue, "
|
||||
"mais pas le texte lui-même. Il est important de sauvegarder ce fichier, "
|
||||
"soit à l'aide de l'outil de sauvegarde intégré, soit à l'aide de votre "
|
||||
"propre solution de sauvegarde."
|
||||
|
||||
#: ../../source/technical/storage.rst:75
|
||||
msgid ""
|
||||
"The project XML file is indent-formatted, and is suitable for diff tools "
|
||||
"and version control since most of the file will stay static, although a "
|
||||
"timestamp is set in the meta section on line 2, and various meta data "
|
||||
"entries incremented, on each save."
|
||||
msgstr ""
|
||||
"Le fichier XML du projet est formaté en indentation et convient aux "
|
||||
"outils de comparaison et de contrôle de version, car la majeure partie "
|
||||
"du fichier reste statique, bien qu'un horodatage soit défini dans la "
|
||||
"section méta à la ligne 2 et que diverses entrées de données méta soient "
|
||||
"incrémentées à chaque enregistrement."
|
||||
|
||||
#: ../../source/technical/storage.rst:79
|
||||
msgid ""
|
||||
"A full project file format specification is available under \"More "
|
||||
"Documents\"."
|
||||
msgstr ""
|
||||
"Une spécification complète du format de fichier du projet est disponible "
|
||||
"sous « Plus d'informations »."
|
||||
|
||||
#: ../../source/technical/storage.rst:83
|
||||
msgid "Project Documents"
|
||||
msgstr "Documents de projet"
|
||||
|
||||
#: ../../source/technical/storage.rst:85
|
||||
msgid ""
|
||||
"All the project documents are saved in a subfolder of the main project "
|
||||
"folder named ``content``. Each document has a file handle based on a 52 "
|
||||
"bit random number, represented as a hexadecimal string. The documents "
|
||||
"are saved with a filename assembled from this handle and the file "
|
||||
"extension ``.nwd``."
|
||||
msgstr ""
|
||||
"Tous les documents du projet sont enregistrés dans un sous-dossier du "
|
||||
"dossier principal du projet nommé ``content``. Chaque document possède "
|
||||
"un identifiant de fichier basé sur un nombre aléatoire de 52 bits, "
|
||||
"représenté sous la forme d'une chaîne hexadécimale. Les documents sont "
|
||||
"enregistrés avec un nom de fichier assemblé à partir de cet identifiant "
|
||||
"et de l'extension ``.nwd``."
|
||||
|
||||
#: ../../source/technical/storage.rst:90
|
||||
msgid ""
|
||||
"If you wish to find the file system location of a document in the "
|
||||
"project, you can either look it up in the project XML file, select "
|
||||
"**Show File Details** from the **Document** menu when having the "
|
||||
"document open in the editor, or look in the ``ToC.txt`` file in the root "
|
||||
"of the project folder. The ``ToC.txt`` file has a list of all documents "
|
||||
"in the project, referenced by their label, and where they are saved."
|
||||
msgstr ""
|
||||
"Si vous souhaitez trouver l'emplacement du système de fichiers d'un "
|
||||
"document dans le projet, vous pouvez soit le rechercher dans le fichier "
|
||||
"XML du projet, soit sélectionner **Afficher les détails du fichier** "
|
||||
"dans le menu **Document** lorsque le document est ouvert dans l'éditeur, "
|
||||
"soit rechercher dans le fichier ``ToC.txt`` à la racine du dossier du "
|
||||
"projet. Le fichier ``ToC.txt`` contient une liste de tous les documents "
|
||||
"du projet, référencés par leur étiquette, et l'endroit où ils sont "
|
||||
"sauvegardés."
|
||||
|
||||
#: ../../source/technical/storage.rst:96
|
||||
msgid ""
|
||||
"The reason for this cryptic file naming is to avoid issues with file "
|
||||
"naming conventions and restrictions on different operating systems, and "
|
||||
"also to have a file name that does not depend on what you name the "
|
||||
"document within the project, or changes it to. This is particularly "
|
||||
"useful when using a versioning system."
|
||||
msgstr ""
|
||||
"La raison de ce nom de fichier cryptique est d'éviter les problèmes liés "
|
||||
"aux conventions de dénomination des fichiers et aux restrictions sur les "
|
||||
"différents systèmes d'exploitation, et aussi d'avoir un nom de fichier "
|
||||
"qui ne dépend pas du nom que vous donnez au document dans le projet, ou "
|
||||
"des modifications que vous lui apportez. Ceci est particulièrement utile "
|
||||
"lors de l'utilisation d'un système de gestion des versions."
|
||||
|
||||
#: ../../source/technical/storage.rst:101
|
||||
msgid ""
|
||||
"Each document file contains a plain text version of the text from the "
|
||||
"editor. The file can in principle be edited in any text editor, and is "
|
||||
"suitable for diffing and version control if so desired. Just make sure "
|
||||
"the file remains in utf-8 encoding, otherwise unicode characters may "
|
||||
"become mangled when the file is opened in UmbraEdit again."
|
||||
msgstr ""
|
||||
"Chaque fichier de document contient une version en texte brut du texte "
|
||||
"de l'éditeur. Le fichier peut en principe être édité dans n'importe quel "
|
||||
"éditeur de texte, et convient pour le diffing et le contrôle de version "
|
||||
"si on le souhaite. Assurez-vous simplement que le fichier reste en "
|
||||
"encodage utf-8, sinon les caractères unicode risquent d'être altérés "
|
||||
"lorsque le fichier est ouvert dans UmbraEdit."
|
||||
|
||||
#: ../../source/technical/storage.rst:106
|
||||
msgid ""
|
||||
"Editing these files is generally not recommended. The reason for this is "
|
||||
"that the index will not be automatically updated when doing so, which "
|
||||
"means UmbraEdit doesn't know you've altered the file. If you *do* edit "
|
||||
"a file in this manner, you should rebuild the index when you next open "
|
||||
"the project in UmbraEdit."
|
||||
msgstr ""
|
||||
"Il est généralement déconseillé de modifier ces fichiers. La raison en "
|
||||
"est que l'index ne sera pas automatiquement mis à jour, ce qui signifie "
|
||||
"que UmbraEdit ne sait pas que vous avez modifié le fichier. Si vous "
|
||||
"modifiez un fichier de cette manière, vous devez reconstruire l'index "
|
||||
"lorsque vous ouvrez le projet dans UmbraEdit."
|
||||
|
||||
#: ../../source/technical/storage.rst:111
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The first lines of the file may contain some meta data starting with the "
|
||||
"characters ``%%~``. These lines are mainly there to restore some "
|
||||
"information if the file is lost from the main project file, and the "
|
||||
"information may be helpful if you do open the file in an external editor "
|
||||
"as it contains the document label and the document class and layout. The "
|
||||
"lines can be deleted without any consequences to the rest of the content "
|
||||
"of the file, and will be added back the next time the document is saved "
|
||||
"in UmbraEdit."
|
||||
msgstr ""
|
||||
"Les premières lignes du fichier peuvent contenir des métadonnées "
|
||||
"commençant par les caractères ``%%~``. Ces lignes sont principalement là "
|
||||
"pour restaurer certaines informations si le fichier est perdu dans le "
|
||||
"fichier principal du projet, et ces informations peuvent être utiles si "
|
||||
"vous ouvrez le fichier dans un éditeur externe car elles contiennent "
|
||||
"l'étiquette du document ainsi que la classe et la mise en page du "
|
||||
"document. Les lignes peuvent être supprimées sans conséquences pour le "
|
||||
"reste du contenu du fichier, et seront ajoutées la prochaine fois que le "
|
||||
"document sera sauvegardé dans UmbraEdit."
|
||||
|
||||
#: ../../source/technical/storage.rst:120
|
||||
msgid "The File Saving Process"
|
||||
msgstr "Le processus d'enregistrement des fichiers"
|
||||
|
||||
#: ../../source/technical/storage.rst:122
|
||||
msgid ""
|
||||
"When saving the project file, or any of the documents, the data is first "
|
||||
"saved to a temporary file. If successful, the old data file is then "
|
||||
"removed, and the temporary file replaces it. This ensures that the "
|
||||
"previously saved data is only replaced when the new data has been "
|
||||
"successfully saved to the storage medium."
|
||||
msgstr ""
|
||||
"Lors de l'enregistrement du fichier de projet ou de l'un des documents, "
|
||||
"les données sont d'abord enregistrées dans un fichier temporaire. En cas "
|
||||
"de succès, l'ancien fichier de données est alors supprimé et remplacé "
|
||||
"par le fichier temporaire. Cela garantit que les données précédemment "
|
||||
"enregistrées ne sont remplacées que lorsque les nouvelles données ont "
|
||||
"été enregistrées avec succès sur le support de stockage."
|
||||
|
||||
#: ../../source/technical/storage.rst:129
|
||||
msgid "Project Meta Data"
|
||||
msgstr "Métadonnées du projet"
|
||||
|
||||
#: ../../source/technical/storage.rst:131
|
||||
msgid ""
|
||||
"The project folder contains a subfolder named ``meta``, containing a "
|
||||
"number of files. The meta folder contains semi-important files. That is, "
|
||||
"they can be lost with only minor impact to the project. All files in "
|
||||
"this folder are JSON or JSON Lines files, although some other files may "
|
||||
"remain from earlier versions of UmbraEdit as they haven't all been "
|
||||
"JSON files in the past."
|
||||
msgstr ""
|
||||
"Le dossier du projet contient un sous-dossier nommé ``meta``, contenant "
|
||||
"un certain nombre de fichiers. Le dossier meta contient des fichiers "
|
||||
"semi-importants. C'est-à-dire qu'ils peuvent être perdus avec un impact "
|
||||
"mineur sur le projet. Tous les fichiers de ce dossier sont des fichiers "
|
||||
"JSON ou JSON Lines, bien que certains autres fichiers puissent provenir "
|
||||
"de versions antérieures de UmbraEdit, car ils n'ont pas tous été des "
|
||||
"fichiers JSON dans le passé."
|
||||
|
||||
#: ../../source/technical/storage.rst:136
|
||||
msgid ""
|
||||
"If you use version control software on your project, you can exclude "
|
||||
"this folder, although you may want to track the session log file and the "
|
||||
"custom words list."
|
||||
msgstr ""
|
||||
"Si vous utilisez un logiciel de contrôle de version pour votre projet, "
|
||||
"vous pouvez exclure ce dossier, même si vous souhaitez suivre le fichier "
|
||||
"journal de la session et la liste des mots personnalisés."
|
||||
|
||||
#: ../../source/technical/storage.rst:141
|
||||
msgid "The Project Index"
|
||||
msgstr "L'index des projets"
|
||||
|
||||
#: ../../source/technical/storage.rst:143
|
||||
msgid ""
|
||||
"Between writing sessions, the project index is saved in a JSON file in "
|
||||
"``meta/index.json``. This file is not critical. If it is lost, it can be "
|
||||
"completely rebuilt from within UmbraEdit from the **Tools** menu."
|
||||
msgstr ""
|
||||
"Entre les sessions d'écriture, l'index du projet est sauvegardé dans un "
|
||||
"fichier JSON dans ``meta/index.json``. Ce fichier n'est pas critique. "
|
||||
"S'il est perdu, il peut être complètement reconstruit à partir de "
|
||||
"UmbraEdit dans le menu **Outils**."
|
||||
|
||||
#: ../../source/technical/storage.rst:147
|
||||
msgid ""
|
||||
"The index is maintained and updated whenever a document or note is saved "
|
||||
"in the editor. It contains all references and tags in documents and "
|
||||
"notes, as well as the location of all headers in the project, and the "
|
||||
"word counts within each header section."
|
||||
msgstr ""
|
||||
"L'index est maintenu et mis à jour chaque fois qu'un document ou une "
|
||||
"note est enregistré dans l'éditeur. Il contient toutes les références et "
|
||||
"les balises des documents et des notes, ainsi que l'emplacement de tous "
|
||||
"les en-têtes dans le projet et le nombre de mots dans chaque section de "
|
||||
"l'en-tête."
|
||||
|
||||
#: ../../source/technical/storage.rst:151
|
||||
msgid ""
|
||||
"The integrity of the index is checked when the file is loaded. It is "
|
||||
"possible to corrupt the index if the file is manually edited and "
|
||||
"manipulated, so the check is important to avoid sudden crashes of "
|
||||
"UmbraEdit. If the file contains errors, UmbraEdit will automatically "
|
||||
"build it anew. If the check somehow fails and UmbraEdit keeps "
|
||||
"crashing, you can delete the file manually and rebuild the index. If "
|
||||
"this too fails, you have likely encountered a bug."
|
||||
msgstr ""
|
||||
"L'intégrité de l'index est vérifiée lorsque le fichier est chargé. Il "
|
||||
"est possible de corrompre l'index si le fichier est édité et manipulé "
|
||||
"manuellement, c'est pourquoi cette vérification est importante pour "
|
||||
"éviter les plantages soudains de UmbraEdit. Si le fichier contient des "
|
||||
"erreurs, UmbraEdit le reconstruira automatiquement. Si la vérification "
|
||||
"échoue d'une manière ou d'une autre et que UmbraEdit continue à se "
|
||||
"bloquer, vous pouvez supprimer le fichier manuellement et reconstruire "
|
||||
"l'index. Si cela échoue également, vous avez probablement rencontré un "
|
||||
"bogue."
|
||||
|
||||
#: ../../source/technical/storage.rst:159
|
||||
msgid "Build Definitions"
|
||||
msgstr "Définitions des compilations"
|
||||
|
||||
#: ../../source/technical/storage.rst:161
|
||||
msgid ""
|
||||
"The build definitions from the **Manuscript Build** tool are kept in the "
|
||||
"``meta/builds.json`` file. If this file is lost, all custom build "
|
||||
"definitions are lost too."
|
||||
msgstr ""
|
||||
"Les définitions de construction de l'outil **Compilation du manuscrit** "
|
||||
"sont conservées dans le fichier ``meta/builds.json``. Si ce fichier est "
|
||||
"perdu, toutes les définitions de construction personnalisées sont "
|
||||
"également perdues."
|
||||
|
||||
#: ../../source/technical/storage.rst:166
|
||||
msgid "Cached GUI Options"
|
||||
msgstr "Options de l'interface graphique mises en cache"
|
||||
|
||||
#: ../../source/technical/storage.rst:168
|
||||
msgid ""
|
||||
"A file named ``meta/options.json`` contains the latest state of various "
|
||||
"GUI buttons, switches, dialog window sizes, column sizes, etc, from the "
|
||||
"GUI. These are the GUI settings that are specific to the project. Global "
|
||||
"GUI settings are stored in the main config file."
|
||||
msgstr ""
|
||||
"Un fichier nommé ``meta/options.json`` contient le dernier état des "
|
||||
"différents boutons de l'interface graphique, des commutateurs, de la "
|
||||
"taille des fenêtres de dialogue, de la taille des colonnes, etc, de "
|
||||
"l'interface graphique. Ce sont les paramètres de l'interface graphique "
|
||||
"qui sont spécifiques au projet. Les paramètres globaux de l'interface "
|
||||
"graphique sont stockés dans le fichier de configuration principal."
|
||||
|
||||
#: ../../source/technical/storage.rst:172
|
||||
msgid ""
|
||||
"The file is not critical, but if it is lost, all such GUI options will "
|
||||
"revert back to their default settings."
|
||||
msgstr ""
|
||||
"Le fichier n'est pas critique, mais s'il est perdu, toutes les options "
|
||||
"de l'interface graphique reviendront à leurs paramètres par défaut."
|
||||
|
||||
#: ../../source/technical/storage.rst:177
|
||||
msgid "Custom Word List"
|
||||
msgstr "Liste des mots personnalisés"
|
||||
|
||||
#: ../../source/technical/storage.rst:179
|
||||
msgid ""
|
||||
"A file named ``meta/userdict.json`` contains all the custom words you've "
|
||||
"added to the project for spell checking purposes. The content of the "
|
||||
"file can be edited from the **Tools** menu. If you lose this file, all "
|
||||
"your custom spell check words will be lost too."
|
||||
msgstr ""
|
||||
"Un fichier nommé ``meta/userdict.json`` contient tous les mots "
|
||||
"personnalisés que vous avez ajoutés au projet à des fins de vérification "
|
||||
"orthographique. Le contenu de ce fichier peut être édité à partir du "
|
||||
"menu **Outils**. Si vous perdez ce fichier, tous vos mots personnalisés "
|
||||
"pour la vérification orthographique seront également perdus."
|
||||
|
||||
#: ../../source/technical/storage.rst:185
|
||||
msgid "Session Stats"
|
||||
msgstr "Statistiques de la session"
|
||||
|
||||
#: ../../source/technical/storage.rst:187
|
||||
msgid ""
|
||||
"The writing progress is saved in the ``meta/sessions.jsonl`` file. This "
|
||||
"file records the length and word counts of each writing session on the "
|
||||
"given project. The file is used by the **Writing Statistics** tool. If "
|
||||
"this file is lost, the history it contains is also lost, but it has "
|
||||
"otherwise no impact on the project."
|
||||
msgstr ""
|
||||
"La progression de l'écriture est sauvegardée dans le fichier ``meta/"
|
||||
"sessions.jsonl``. Ce fichier enregistre la durée et le nombre de mots de "
|
||||
"chaque session d'écriture sur le projet donné. Ce fichier est utilisé "
|
||||
"par l'outil **Statistiques d'écriture**. Si ce fichier est perdu, "
|
||||
"l'historique qu'il contient est également perdu, mais cela n'a par "
|
||||
"ailleurs aucun impact sur le projet."
|
||||
|
||||
#: ../../source/technical/storage.rst:192
|
||||
msgid ""
|
||||
"Each session is recorded as a JSON object on a single line of the file. "
|
||||
"Each session record is appended tot he file."
|
||||
msgstr ""
|
||||
"Chaque session est enregistrée sous la forme d'un objet JSON sur une "
|
||||
"seule ligne du fichier. Chaque enregistrement de session est ajouté au "
|
||||
"fichier."
|
||||
@@ -1,160 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-29 11:41+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/technical/tests.rst:5
|
||||
msgid "Running Tests"
|
||||
msgstr "Exécution des tests"
|
||||
|
||||
#: ../../source/technical/tests.rst:7
|
||||
msgid ""
|
||||
"The UmbraEdit source code is well covered by tests. The test framework used "
|
||||
"for the development is ``pytest`` with the use of an extension for Qt."
|
||||
msgstr ""
|
||||
"Le code source de UmbraEdit est bien couvert par des tests. Le cadre de test "
|
||||
"utilisé pour le développement est ``pytest`` avec l'utilisation d'une extension "
|
||||
"pour Qt."
|
||||
|
||||
#: ../../source/technical/tests.rst:12
|
||||
msgid "Dependencies"
|
||||
msgstr "Dépendances"
|
||||
|
||||
#: ../../source/technical/tests.rst:14
|
||||
msgid "The dependencies for running the tests can be installed with:"
|
||||
msgstr ""
|
||||
"Les dépendances nécessaires à l'exécution des tests peuvent être installées "
|
||||
"avec :"
|
||||
|
||||
#: ../../source/technical/tests.rst:20
|
||||
msgid ""
|
||||
"This will install a couple of extra packages for coverage and test management. "
|
||||
"The minimum requirement is ``pytest`` and ``pytest-qt``."
|
||||
msgstr ""
|
||||
"Cela installera quelques paquets supplémentaires pour la couverture et la "
|
||||
"gestion des tests. Le minimum requis est ``pytest`` et ``pytest-qt``."
|
||||
|
||||
#: ../../source/technical/tests.rst:25
|
||||
msgid "Simple Test Run"
|
||||
msgstr "Test simple"
|
||||
|
||||
#: ../../source/technical/tests.rst:27
|
||||
msgid ""
|
||||
"To run the tests, you simply need to execute the following from the root of the "
|
||||
"source folder:"
|
||||
msgstr ""
|
||||
"Pour exécuter les tests, il suffit d'exécuter ce qui suit à partir de la racine "
|
||||
"du dossier source :"
|
||||
|
||||
#: ../../source/technical/tests.rst:33
|
||||
msgid ""
|
||||
"Since several of the tests involve opening up the UmbraEdit GUI, you may want "
|
||||
"to disable the GUI for the duration of the test run. Moving your mouse while "
|
||||
"the tests are running may otherwise interfere with the execution of some tests."
|
||||
msgstr ""
|
||||
"Puisque plusieurs des tests impliquent l'ouverture de l'interface graphique de "
|
||||
"UmbraEdit, vous pouvez désactiver l'interface graphique pour la durée de "
|
||||
"l'exécution du test. Si vous déplacez votre souris pendant que les tests sont "
|
||||
"en cours d'exécution, vous risquez d'interférer avec l'exécution de certains "
|
||||
"tests."
|
||||
|
||||
#: ../../source/technical/tests.rst:37
|
||||
msgid ""
|
||||
"You can disable the renderring of the GUI by setting the flag "
|
||||
"``QT_QPA_PLATFORM=offscreen``:"
|
||||
msgstr ""
|
||||
"Vous pouvez désactiver le rendu de l'interface graphique en définissant le "
|
||||
"drapeau ``QT_QPA_PLATFORM=offscreen`` :"
|
||||
|
||||
#: ../../source/technical/tests.rst:45
|
||||
msgid "Advanced Options"
|
||||
msgstr "Options avancées"
|
||||
|
||||
#: ../../source/technical/tests.rst:47
|
||||
msgid ""
|
||||
"Adding the flag ``-v`` to the ``pytest`` command will increase verbosity of the "
|
||||
"test execution."
|
||||
msgstr ""
|
||||
"L'ajout du drapeau ``-v`` à la commande ``pytest`` augmente la verbosité de "
|
||||
"l'exécution du test."
|
||||
|
||||
#: ../../source/technical/tests.rst:49
|
||||
msgid "You can also add coverage report generation. For instance to HTML:"
|
||||
msgstr ""
|
||||
"Vous pouvez également ajouter la génération de rapports de couverture. Par "
|
||||
"exemple en HTML :"
|
||||
|
||||
#: ../../source/technical/tests.rst:55
|
||||
msgid "Other useful report formats are ``xml``, and ``term`` for terminal output."
|
||||
msgstr ""
|
||||
"D'autres formats de rapport utiles sont ``xml``, et ``term`` pour la sortie "
|
||||
"terminal."
|
||||
|
||||
#: ../../source/technical/tests.rst:57
|
||||
msgid ""
|
||||
"You can also run tests per subpackage of UmbraEdit with the ``-m`` command. "
|
||||
"The available subpackage groups are ``base``, ``core``, and ``gui``. Consider "
|
||||
"for instance:"
|
||||
msgstr ""
|
||||
"Vous pouvez aussi lancer des tests par sous-paquet de UmbraEdit avec la "
|
||||
"commande ``-m``. Les groupes de sous-paquetages disponibles sont ``base``, "
|
||||
"``core``, et ``gui``. Prenons un exemple :"
|
||||
|
||||
#: ../../source/technical/tests.rst:64
|
||||
msgid ""
|
||||
"This will only run the tests of the \"core\" package, that is, all the classes "
|
||||
"that deal with the project data of a UmbraEdit project. The \"gui\" tests, "
|
||||
"likewise, will run the tests for the GUI components, and the \"base\" tests "
|
||||
"cover the bits in-between."
|
||||
msgstr ""
|
||||
"Ceci n'exécutera que les tests du paquet « core », c'est-à-dire toutes les "
|
||||
"classes qui traitent les données d'un projet UmbraEdit. Les tests « gui », de "
|
||||
"même, exécuteront les tests des composants de l'interface graphique, et les "
|
||||
"tests « base » couvriront les éléments intermédiaires."
|
||||
|
||||
#: ../../source/technical/tests.rst:68
|
||||
msgid ""
|
||||
"You can also filter the tests with the ``-k`` switch. The following will do the "
|
||||
"same as ``-m core``:"
|
||||
msgstr ""
|
||||
"Vous pouvez également filtrer les tests avec le commutateur ``-k``. Ce qui suit "
|
||||
"fera la même chose que ``-m core`` :"
|
||||
|
||||
#: ../../source/technical/tests.rst:75
|
||||
msgid ""
|
||||
"All tests are named in such a way that you can filter them by adding more bits "
|
||||
"of the test names. They all start with the word \"test\". Then comes the group: "
|
||||
"\"Core\", \"Base\", \"Dlg\", \"Tool\", or \"Gui\". Finally comes the name of "
|
||||
"the class or module, which generally corresponds to a single source code file. "
|
||||
"For instance, running the following will run all tests for the document editor:"
|
||||
msgstr ""
|
||||
"Tous les tests sont nommés de manière à ce que vous puissiez les filtrer en "
|
||||
"ajoutant d'autres éléments aux noms des tests. Ils commencent tous par le mot « "
|
||||
"test ». Vient ensuite le groupe : « Core », “Base”, “Dlg”, “Tool” ou “Gui”. "
|
||||
"Enfin, vient le nom de la classe ou du module, qui correspond généralement à un "
|
||||
"seul fichier de code source. Par exemple, l'exécution de ce qui suit lancera "
|
||||
"tous les tests pour l'éditeur de documents :"
|
||||
|
||||
#: ../../source/technical/tests.rst:84
|
||||
msgid "To run a single test, simply add the full test name to the ``-k`` switch."
|
||||
msgstr ""
|
||||
"Pour lancer un seul test, il suffit d'ajouter le nom complet du test au "
|
||||
"commutateur ``-k``."
|
||||
@@ -1,392 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-28 16:04+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:5
|
||||
msgid "Advanced Formatting"
|
||||
msgstr "Mise en forme avancée"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:7
|
||||
msgid ""
|
||||
"Standard Markdown formatting is somewhat limited, so UmbraEdit has some "
|
||||
"additional formatting codes for special use cases. These codes are all based "
|
||||
"on brackets, and some allow an additional value to be set after a colon."
|
||||
msgstr ""
|
||||
"Le formatage Markdown standard est quelque peu limité, c'est pourquoi "
|
||||
"UmbraEdit dispose de quelques codes de formatage supplémentaires pour des "
|
||||
"cas d'utilisation particuliers. Ces codes sont tous basés sur les crochets, et "
|
||||
"certains permettent de définir une valeur supplémentaire après les deux points."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:11
|
||||
msgid "This section covers all these formatting codes."
|
||||
msgstr "Cette section couvre tous ces codes de formatage."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:17
|
||||
msgid "Formatting with Shortcodes"
|
||||
msgstr "Mise en forme avec les shortcodes"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:19
|
||||
msgid ""
|
||||
"For basic formatting, like emphasis, you should use the standard Markdown "
|
||||
"style formatting tags descried in :ref:`docs_usage_basics_emphasis` whenever "
|
||||
"possible."
|
||||
msgstr ""
|
||||
"Pour le formatage de base, comme la mise en valeur, vous devriez utiliser les "
|
||||
"balises de formatage standard du style Markdown décrites dans :ref:"
|
||||
"`docs_usage_basics_emphasis` chaque fois que possible."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:22
|
||||
msgid ""
|
||||
"For additional formatting options, you can use shortcodes. Shortcodes is a "
|
||||
"form of in-line codes that wrap the section of text to be formatted. "
|
||||
"Shortcodes can be nested to apply multiple formats to the same piece of text."
|
||||
msgstr ""
|
||||
"Pour des options de formatage supplémentaires, vous pouvez utiliser des "
|
||||
"shortcodes. Les shortcodes sont une forme de codes en ligne qui enveloppent la "
|
||||
"section de texte à mettre en forme. Les shortcodes peuvent être imbriqués pour "
|
||||
"appliquer plusieurs formats à la même partie de texte."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:26
|
||||
msgid ""
|
||||
"These shortcodes are intended for special formatting cases, or more complex "
|
||||
"cases that cannot be solved with simple Markdown-like formatting codes. "
|
||||
"Available shortcodes are listed below."
|
||||
msgstr ""
|
||||
"Ces shortcodes sont destinés à des cas de formatage spéciaux ou à des cas plus "
|
||||
"complexes qui ne peuvent pas être résolus avec de simples codes de formatage "
|
||||
"de type Markdown. Les shortcodes disponibles sont énumérés ci-dessous."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:29
|
||||
msgid "Shortcodes Formats"
|
||||
msgstr "Formats des shortcodes"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "Syntax"
|
||||
msgstr "Syntaxe"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "Description"
|
||||
msgstr "Description"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "``[b]text[/b]``"
|
||||
msgstr "``[b]texte[/b]``"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "Text is displayed as bold text."
|
||||
msgstr "Le texte est affiché en gras."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "``[i]text[/i]``"
|
||||
msgstr "``[i]texte[/i]``"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "Text is displayed as italicised text."
|
||||
msgstr "Le texte est affiché en italique."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "``[s]text[/s]``"
|
||||
msgstr "``[s]texte[/s]``"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "Text is displayed as strike through text."
|
||||
msgstr "Le texte est affiché sous forme de texte barré."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "``[u]text[/u]``"
|
||||
msgstr "``[u]texte[/u]``"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "Text is displayed as underlined text."
|
||||
msgstr "Le texte est affiché sous forme de texte souligné."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "``[m]text[/m]``"
|
||||
msgstr "``[m]texte[/m]``"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "Text is displayed as highlighted text."
|
||||
msgstr "Le texte est affiché en surbrillance."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "``[sup]text[/sup]``"
|
||||
msgstr "``[sup]texte[/sup]``"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "Text is displayed as superscript text."
|
||||
msgstr "Le texte est affiché en exposant."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "``[sub]text[/sub]``"
|
||||
msgstr "``[sub]texte[/sub]``"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "Text is displayed as subscript text."
|
||||
msgstr "Le texte est affiché en indice."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "``[footnote:key]``"
|
||||
msgstr "``[footnote:clé]``"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "A reference to a :ref:`footnote comment <docs_usage_comments_footnotes>`."
|
||||
msgstr ""
|
||||
"Une référence à un :ref:`commentaire de note de bas de page "
|
||||
"<docs_usage_comments_footnotes>`."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:43
|
||||
msgid ""
|
||||
"Unlike Markdown style codes, these can be used anywhere within a paragraph. "
|
||||
"Even in the middle of a word if you need to. You can also freely combine them "
|
||||
"to form more complex formatting."
|
||||
msgstr ""
|
||||
"Contrairement aux codes de style Markdown, ces codes peuvent être utilisés "
|
||||
"n'importe où dans un paragraphe. Même au milieu d'un mot si nécessaire. Vous "
|
||||
"pouvez également les combiner librement pour obtenir une mise en forme plus "
|
||||
"complexe."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:46
|
||||
msgid ""
|
||||
"The shortcodes are available from the **Format** menu and in the editor "
|
||||
"toolbar, which can be activated by clicking the left-most icon button in the "
|
||||
"editor header."
|
||||
msgstr ""
|
||||
"Les shortcodes sont disponibles dans le menu **Format** et dans la barre "
|
||||
"d'outils de l'éditeur, qui peut être activée en cliquant sur l'icône la plus à "
|
||||
"gauche dans l'en-tête de l'éditeur."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:51
|
||||
msgid ""
|
||||
"Shortcodes are not processed until you generate a preview or generate a "
|
||||
"manuscript document. So there is no highlighting of the text between the "
|
||||
"formatting markers. There is also no check that your markers make sense. You "
|
||||
"must ensure that you have both the opening and closing formatting markers "
|
||||
"where you want them."
|
||||
msgstr ""
|
||||
"Les shortcodes ne sont pas traités tant que vous n'avez pas généré un aperçu "
|
||||
"ou un document manuscrit. Il n'y a donc pas de mise en évidence du texte entre "
|
||||
"les marqueurs de formatage. Il n'y a pas non plus de vérification de la "
|
||||
"logique de vos marqueurs. Vous devez vous assurer que les marqueurs de "
|
||||
"formatage d'ouverture et de fermeture se trouvent à l'endroit voulu."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:62
|
||||
msgid "Vertical Space and Page Breaks"
|
||||
msgstr "Espace vertical et sauts de page"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:64
|
||||
msgid ""
|
||||
"You can apply page breaks to partition, chapter and scene headings for novel "
|
||||
"documents from the **Manuscript Build** tool. If you need to add a page break "
|
||||
"or additional vertical spacing in other places, there are special codes "
|
||||
"available for this purpose."
|
||||
msgstr ""
|
||||
"Vous pouvez appliquer des sauts de page aux en-têtes de partition, de chapitre "
|
||||
"et de scène pour les documents de roman à partir de l'outil **Compiler le "
|
||||
"manuscrit**. Si vous avez besoin d'ajouter un saut de page ou un espacement "
|
||||
"vertical supplémentaire à d'autres endroits, il existe des codes spéciaux à "
|
||||
"cet effet."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:68
|
||||
msgid ""
|
||||
"Adding more than one line break between paragraphs will **not** increase the "
|
||||
"space between those paragraphs when generating a manuscript document. To add "
|
||||
"additional space between paragraphs, add the text ``[vspace]`` on a line of "
|
||||
"its own, and the **Manuscript Build** tool will insert a blank paragraph in "
|
||||
"its place."
|
||||
msgstr ""
|
||||
"L'ajout de plus d'un saut de ligne entre les paragraphes n'augmentera **pas** "
|
||||
"l'espace entre ces paragraphes lors de la génération d'un document manuscrit. "
|
||||
"Pour ajouter de l'espace entre les paragraphes, ajoutez le texte ``[vspace]`` "
|
||||
"sur une ligne distincte, et l'outil **Compilation du manuscrit** insérera un "
|
||||
"paragraphe vide à sa place."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:73
|
||||
msgid ""
|
||||
"If you need multiple blank paragraphs just add a colon and a number to the "
|
||||
"above code. For instance, writing ``[vspace:3]`` will insert three blank "
|
||||
"paragraphs."
|
||||
msgstr ""
|
||||
"Si vous avez besoin de plusieurs paragraphes vides, il suffit d'ajouter deux "
|
||||
"points et un chiffre au code ci-dessus. Par exemple, en écrivant "
|
||||
"``[vspace:3]``, vous insérerez trois paragraphes vides."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:76
|
||||
msgid ""
|
||||
"If you need to add a page break somewhere, put the text ``[new page]`` on a "
|
||||
"line by itself before the text you wish to start on a new page."
|
||||
msgstr ""
|
||||
"Si vous devez ajouter un saut de page quelque part, placez le texte ``[ new "
|
||||
"page]`` sur une ligne isolée avant le texte que vous souhaitez faire commencer "
|
||||
"sur une nouvelle page."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:81
|
||||
msgid ""
|
||||
"The page break code is applied to the text that follows it. It adds a \"page "
|
||||
"break before\" mark to the text when exporting to HTML or Open Document. This "
|
||||
"means that a ``[new page]`` code which has no text following it will not "
|
||||
"result in a page break."
|
||||
msgstr ""
|
||||
"Le code de saut de page est appliqué au texte qui le suit. Il ajoute une "
|
||||
"marque de « saut de page avant » au texte lors de l'exportation vers HTML ou "
|
||||
"Open Document. Cela signifie qu'un code ``[ new page]`` qui n'est suivi "
|
||||
"d'aucun texte n'entraînera pas de saut de page."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:85
|
||||
#: ../../source/usage/advanced_formatting.rst:132
|
||||
msgid ":bdg-info:`Example`"
|
||||
msgstr ":bdg-info:`Exemple`"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:104
|
||||
msgid "Inserting Word Counts in the Text"
|
||||
msgstr "Insérer le nombre de mots dans le texte"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:106
|
||||
msgid ""
|
||||
"The cover page of a manuscript normally has the word count stated on it. Any "
|
||||
"statistics value collected by UmbraEdit can be inserted into any document "
|
||||
"using a special shortcode. You can insert the code for any of the available "
|
||||
"statistics values from the **Insert** menu under **Word/Character Count**."
|
||||
msgstr ""
|
||||
"La page de couverture d'un manuscrit indique normalement le nombre de mots. "
|
||||
"Toute valeur statistique collectée par UmbraEdit peut être insérée dans "
|
||||
"n'importe quel document à l'aide d'un shortcode spécial. Vous pouvez insérer "
|
||||
"le code pour n'importe quelle valeur statistique disponible dans le menu "
|
||||
"**Insérer** sous **Nombre de mots/caractères**."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:111
|
||||
msgid ""
|
||||
"The value inserted is the actual count for your entire manuscript, so it is "
|
||||
"not populated until you run the **Manuscript Build** tool. Until then they "
|
||||
"will show up as \"0\" in the viewer panel."
|
||||
msgstr ""
|
||||
"La valeur insérée est le nombre réel pour l'ensemble de votre manuscrit, elle "
|
||||
"n'est donc pas renseignée tant que vous n'avez pas exécuté l'outil "
|
||||
"**Compilation du manuscrit**. Jusqu'à ce moment-là, ils apparaîtront sous la "
|
||||
"forme d'un « 0 » dans le panneau de visualisation."
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:114
|
||||
msgid "The available codes are:"
|
||||
msgstr "Les codes disponibles sont les suivants :"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:116
|
||||
msgid "Stats Shortcodes"
|
||||
msgstr "Shortcodes de statistiques"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "Code"
|
||||
msgstr "Code"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "``[field:allChars]``"
|
||||
msgstr "``[field:allChars]``"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "Characters"
|
||||
msgstr "Personnages"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "``[field:textChars]``"
|
||||
msgstr "``[field:textChars]``"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "Characters in Text"
|
||||
msgstr "Caractères dans un texte"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "``[field:titleChars]``"
|
||||
msgstr "``[field:titleChars]``"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "Characters in Headings"
|
||||
msgstr "Caractères dans les titres"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "``[field:paragraphCount]``"
|
||||
msgstr "``[field:paragraphCount]``"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "Paragraphs"
|
||||
msgstr "Paragraphes"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "``[field:titleCount]``"
|
||||
msgstr "``[field:titleCount]``"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "Headings"
|
||||
msgstr "En-têtes"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "``[field:allWordChars]``"
|
||||
msgstr "``[field:allWordChars]``"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "Characters, No Spaces"
|
||||
msgstr "Caractères, sans les espaces"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "``[field:textWordChars]``"
|
||||
msgstr "``[field:textWordChars]``"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "Characters in Text, No Spaces"
|
||||
msgstr "Caractères dans le texte, sans les espaces"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "``[field:titleWordChars]``"
|
||||
msgstr "``[field:titleWordChars]``"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "Characters in Headings, No Spaces"
|
||||
msgstr "Caractères dans les titres, sans les espaces"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "``[field:allWords]``"
|
||||
msgstr "``[field:allWords]``"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "Words"
|
||||
msgstr "Mots"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "``[field:textWords]``"
|
||||
msgstr "``[field:textWords]``"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "Words in Text"
|
||||
msgstr "Mots dans le texte"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "``[field:titleWords]``"
|
||||
msgstr "``[field:titleWords]``"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:1
|
||||
msgid "Words in Headings"
|
||||
msgstr "Mots dans les entêtes"
|
||||
|
||||
#: ../../source/usage/advanced_formatting.rst:134
|
||||
msgid ""
|
||||
"This is an example cover page. A similar page is automatically generated when "
|
||||
"you create a new project."
|
||||
msgstr ""
|
||||
"Il s'agit d'un exemple de page de couverture. Une page similaire est "
|
||||
"automatiquement générée lorsque vous créez un nouveau projet."
|
||||
@@ -1,185 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-28 14:45+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:5
|
||||
msgid "Alignment and Indentation"
|
||||
msgstr "Alignement et indentation"
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:7
|
||||
msgid ""
|
||||
"The Markdown standard doesn't have commands for aligning text, so "
|
||||
"UmbraEdit adds its own syntax for this. It also has syntax for "
|
||||
"indentation, which is similar to Markdown block quotes."
|
||||
msgstr ""
|
||||
"Le standard Markdown n'a pas de commandes pour aligner le texte, donc "
|
||||
"UmbraEdit ajoute sa propre syntaxe pour cela. Il dispose également "
|
||||
"d'une syntaxe pour l'indentation, qui est similaire aux guillemets de "
|
||||
"bloc de Markdown."
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:12
|
||||
msgid "Paragraph Alignment and Indentation"
|
||||
msgstr "Alignement et indentation des paragraphes"
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:14
|
||||
msgid ""
|
||||
"All documents have the text by default aligned to the left or justified, "
|
||||
"depending on your setting in **Preferences**."
|
||||
msgstr ""
|
||||
"Le texte de tous les documents est par défaut aligné à gauche ou "
|
||||
"justifié, selon les paramètres définis dans les **Préférences**."
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:17
|
||||
msgid ""
|
||||
"You can override the default text alignment on individual paragraphs by "
|
||||
"specifying alignment tags. These tags are double angle brackets. Either "
|
||||
"``>>`` or ``<<``. You put them either before or after the paragraph, and "
|
||||
"they will \"push\" the text towards the edge the brackets point towards. "
|
||||
"This should be fairly intuitive."
|
||||
msgstr ""
|
||||
"Vous pouvez remplacer l'alignement par défaut du texte sur des "
|
||||
"paragraphes individuels en spécifiant des balises d'alignement. Ces "
|
||||
"balises sont des doubles chevrons. Il peut s'agir de ``>>`` ou de "
|
||||
"``<<``. Vous les placez avant ou après le paragraphe, et elles « "
|
||||
"pousseront » le texte vers le bord vers lequel les crochets pointent. "
|
||||
"Cela devrait être assez intuitif."
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:22
|
||||
msgid ""
|
||||
"Indentation uses a similar syntax. But here you use a single ``>`` or "
|
||||
"``<`` to \"push\" the text away from the edge."
|
||||
msgstr ""
|
||||
"L'indentation utilise une syntaxe similaire. Mais ici, vous utilisez un "
|
||||
"seul ``>`` ou ``<`` pour éloigner le texte du bord."
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:25
|
||||
#: ../../source/usage/alignment_and_indent.rst:52
|
||||
#: ../../source/usage/alignment_and_indent.rst:69
|
||||
msgid ":bdg-info:`Example`"
|
||||
msgstr ":bdg-info:`Exemple`"
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:27
|
||||
msgid "Text Alignment and Indentation"
|
||||
msgstr "Alignement et indentation du texte"
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:1
|
||||
msgid "Syntax"
|
||||
msgstr "Syntaxe"
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:1
|
||||
msgid "Description"
|
||||
msgstr "Description"
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:1
|
||||
msgid "``>> Right aligned text``"
|
||||
msgstr "``>> Texte aligné à droite``"
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:1
|
||||
msgid "The text paragraph is right-aligned."
|
||||
msgstr "Le paragraphe est aligné à droite."
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:1
|
||||
msgid "``Left aligned text <<``"
|
||||
msgstr "``Texte aligné à gauche <<``"
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:1
|
||||
msgid "The text paragraph is left-aligned."
|
||||
msgstr "Le paragraphe est aligné à gauche."
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:1
|
||||
msgid "``>> Centred text <<``"
|
||||
msgstr "``>> Texte centré <<``"
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:1
|
||||
msgid "The text paragraph is centred."
|
||||
msgstr "Le paragraphe est centré."
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:1
|
||||
msgid "``> Left indented text``"
|
||||
msgstr "``> Texte en retrait à gauche``"
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:1
|
||||
msgid "The text has an increased left margin."
|
||||
msgstr "Le texte a une marge gauche plus importante."
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:1
|
||||
msgid "``Right indented text <``"
|
||||
msgstr "``Texte en retrait à droite <``"
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:1
|
||||
msgid "The text has an increased right margin."
|
||||
msgstr "Le texte a une marge droite plus importante."
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:1
|
||||
msgid "``> Left/right indented text <``"
|
||||
msgstr "``> Texte indenté gauche/droite <```"
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:1
|
||||
msgid "The text has both margins increased."
|
||||
msgstr "Les deux marges du texte ont été augmentées."
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:41
|
||||
msgid ""
|
||||
"The text editor will not show the alignment and indentation live. But "
|
||||
"the viewer will show them when you open the document there. It will of "
|
||||
"course also be reflected in the document generated from the **Manuscript "
|
||||
"Build** tool as long as the format supports paragraph alignment."
|
||||
msgstr ""
|
||||
"L'éditeur de texte n'affiche pas l'alignement et l'indentation en "
|
||||
"direct. Mais l'afficheur les affichera lorsque vous y ouvrirez le "
|
||||
"document. Ils seront bien sûr également reflétés dans le document généré "
|
||||
"par l'outil de compilation de manuscrits, à condition que le format "
|
||||
"prenne en charge l'alignement des paragraphes."
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:47
|
||||
msgid "Alignment with Line Breaks"
|
||||
msgstr "Alignement avec les sauts de ligne"
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:49
|
||||
msgid ""
|
||||
"If you have line breaks in the paragraph, the markers for all the lines "
|
||||
"are combined and used for the entire paragraph. For the following text, "
|
||||
"all lines will be centred:"
|
||||
msgstr ""
|
||||
"Si le paragraphe comporte des retours à la ligne, les marqueurs de "
|
||||
"toutes les lignes sont combinés et utilisés pour l'ensemble du "
|
||||
"paragraphe. Pour le texte suivant, toutes les lignes seront centrées :"
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:63
|
||||
msgid "Alignment with First Line Indent"
|
||||
msgstr "Alignement sur le retrait de la première ligne"
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:65
|
||||
msgid ""
|
||||
"If you have first line indent enabled in your manuscript build settings, "
|
||||
"you probably want to disable it for text in verses. Adding any alignment "
|
||||
"tags will cause the first line indent to be switched off for that "
|
||||
"paragraph."
|
||||
msgstr ""
|
||||
"Si vous avez activé le retrait de première ligne dans les paramètres de "
|
||||
"compilation de votre Manuscrit, vous voudrez probablement le désactiver "
|
||||
"pour le texte en vers. L'ajout de balises d'alignement entraînera la "
|
||||
"désactivation du retrait de première ligne pour ce paragraphe."
|
||||
|
||||
#: ../../source/usage/alignment_and_indent.rst:71
|
||||
msgid "The following text will always be aligned against the left margin:"
|
||||
msgstr "Le texte suivant sera toujours aligné sur la marge de gauche :"
|
||||
@@ -1,219 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-28 10:44+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:5
|
||||
msgid "Basic Formatting"
|
||||
msgstr "Mise en forme de base"
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:9
|
||||
msgid ""
|
||||
"The basic text formatting syntax of UmbraEdit is based on Markdown_. "
|
||||
"It is only a subset of the Markdown syntax though. Lists, images, and "
|
||||
"links are not supported."
|
||||
msgstr ""
|
||||
"La syntaxe de formatage de texte de base de UmbraEdit est basée sur "
|
||||
"Markdown_. Il ne s'agit toutefois que d'un sous-ensemble de la syntaxe "
|
||||
"Markdown. Les listes, les images et les liens ne sont pas pris en charge."
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:12
|
||||
msgid ""
|
||||
"That said, URLs in the text should automatically be highlighted and "
|
||||
"become clickable. However, only URLs starting with \"http\" or \"https\" "
|
||||
"are recognised. In the editor, you must hold down the :kbd:`Ctrl` key "
|
||||
"when clicking a URL to follow it."
|
||||
msgstr ""
|
||||
"Cela dit, les URL dans le texte devraient automatiquement être mis en "
|
||||
"évidence et devenir cliquables. Cependant, seules les URL commençant par "
|
||||
"« http » ou « https » sont reconnues. Dans l'éditeur, vous devez "
|
||||
"maintenir la touche :kbd:`Ctrl` enfoncée lorsque vous cliquez sur une "
|
||||
"URL pour la suivre."
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:20
|
||||
msgid "Text Paragraphs"
|
||||
msgstr "Paragraphes du texte"
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:22
|
||||
msgid ""
|
||||
"A text paragraph is indicated by a blank line. That is, you need two "
|
||||
"line breaks to separate two fragments of text into two paragraphs. "
|
||||
"Single line breaks are treated as line breaks within a paragraph."
|
||||
msgstr ""
|
||||
"Un paragraphe de texte est indiqué par une ligne blanche. En d'autres "
|
||||
"termes, il faut deux sauts de ligne pour séparer deux fragments de texte "
|
||||
"en deux paragraphes. Les sauts de ligne simples sont traités comme des "
|
||||
"sauts de ligne à l'intérieur d'un paragraphe."
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:26
|
||||
msgid ""
|
||||
"It is important that you actually follow this rule. You should not, for "
|
||||
"instance, mimic indented paragraphs manually in the editor. This, and a "
|
||||
"lot of other formatting options that can be applied to text paragraphs "
|
||||
"in the :ref:`Manuscript Tool <docs_ui_manuscript>` depend on paragraphs "
|
||||
"being separated by blank lines."
|
||||
msgstr ""
|
||||
"Il est important de respecter cette règle. Vous ne devez pas, par "
|
||||
"exemple, imiter les paragraphes indentés manuellement dans l'éditeur. "
|
||||
"Ceci, ainsi que beaucoup d'autres options de formatage qui peuvent être "
|
||||
"appliquées aux paragraphes de texte dans l'outil :ref:`Manuscript Tool "
|
||||
"<docs_ui_manuscript>`, dépendent du fait que les paragraphes sont "
|
||||
"séparés par des lignes vides."
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:31
|
||||
msgid ":bdg-success:`Correct`"
|
||||
msgstr ":bdg-success:`Correct`"
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:41
|
||||
msgid ":bdg-danger:`Incorrect`"
|
||||
msgstr ":bdg-danger:`Incorrect`"
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:50
|
||||
msgid ""
|
||||
"If you do as shown in the \"Incorrect\" example, UmbraEdit will "
|
||||
"understand this as a single paragraph with two lines."
|
||||
msgstr ""
|
||||
"Si vous procédez comme dans l'exemple « Incorrect », UmbraEdit "
|
||||
"comprendra qu'il s'agit d'un seul paragraphe de deux lignes."
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:57
|
||||
msgid "Text Emphasis with Markdown"
|
||||
msgstr "Mise en valeur du texte avec Markdown"
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:59
|
||||
msgid ""
|
||||
"A minimal set of Markdown text emphasis styles are supported for text "
|
||||
"paragraphs."
|
||||
msgstr ""
|
||||
"Un ensemble minimal de styles d'accentuation de texte Markdown est pris "
|
||||
"en charge pour les paragraphes de texte."
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:61
|
||||
msgid "``_text_``"
|
||||
msgstr "``_texte_``"
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:62
|
||||
msgid "The text is rendered as emphasised text (italicised)."
|
||||
msgstr "Le texte est rendu en italique."
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:64
|
||||
msgid "``**text**``"
|
||||
msgstr "``**texte**``"
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:65
|
||||
msgid "The text is rendered as strongly emphasised text (bold)."
|
||||
msgstr "Le texte est rendu en gras."
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:67
|
||||
msgid "``~~text~~``"
|
||||
msgstr "``~~texte~~``"
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:68
|
||||
msgid "Strike through text."
|
||||
msgstr "Barrer le texte."
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:70
|
||||
msgid ""
|
||||
"In Markdown guides it is often recommended to differentiate between "
|
||||
"strong emphasis and emphasis by using ``**`` for strong and ``_`` for "
|
||||
"emphasis, although Markdown generally also supports ``__`` for strong "
|
||||
"and ``*`` for emphasis. However, since the differentiation makes the "
|
||||
"highlighting and conversion significantly simpler and faster, in "
|
||||
"UmbraEdit this is a rule, not just a recommendation."
|
||||
msgstr ""
|
||||
"Dans les guides Markdown, il est souvent recommandé de différencier le "
|
||||
"gras de l'italique en utilisant ``**`` pour le gras et ``_`` pour "
|
||||
"l'italique, bien que Markdown supporte également ``__`` pour le gras et "
|
||||
"``*`` pour l'italique. Cependant, puisque la différenciation rend la "
|
||||
"mise en évidence et la conversion significativement plus simple et plus "
|
||||
"rapide, dans UmbraEdit il s'agit d'une règle et non d'une simple "
|
||||
"recommandation."
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:76
|
||||
msgid "In addition, the following rules apply:"
|
||||
msgstr "En outre, les règles suivantes s'appliquent :"
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:78
|
||||
msgid ""
|
||||
"The emphasis and strike through formatting tags do not allow spaces "
|
||||
"between the words and the tag itself. That is, ``**text**`` is valid, "
|
||||
"``**text **`` is not."
|
||||
msgstr ""
|
||||
"Les balises de mise en valeur et de biffage n'autorisent pas les espaces "
|
||||
"entre les mots et la balise elle-même. Autrement dit, ``**texte**`` est "
|
||||
"valide, ``**texte **`` ne l'est pas."
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:80
|
||||
msgid ""
|
||||
"More generally, the delimiters must be on the outer edge of words. That "
|
||||
"is, ``some **text in bold** here`` is valid, ``some** text in bold** "
|
||||
"here`` is not."
|
||||
msgstr ""
|
||||
"Plus généralement, les délimiteurs doivent se trouver aux bords des "
|
||||
"mots. Autrement dit, « certains **textes en gras** ici » sont valides, « "
|
||||
"certains** textes en gras** ici » ne le sont pas."
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:82
|
||||
msgid ""
|
||||
"If using both ``**`` and ``_`` to wrap the same text, the underscore "
|
||||
"must be the **inner** wrapper. This is due to the underscore also being "
|
||||
"a valid word character, so if they are on the outside, they violate rule "
|
||||
"2."
|
||||
msgstr ""
|
||||
"Si vous utilisez à la fois ``**`` et ``_`` pour envelopper le même "
|
||||
"texte, le trait de soulignement doit être à **l'intérieure**. Ceci est "
|
||||
"dû au fait que le trait de soulignement est également un caractère "
|
||||
"verbal valide, donc s'il est à l'extérieur, il viole la règle 2."
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:85
|
||||
msgid ""
|
||||
"Text emphasis does not span past line breaks. If you need to add "
|
||||
"emphasis to multiple lines or paragraphs, you must apply it to each of "
|
||||
"them in turn."
|
||||
msgstr ""
|
||||
"L'accentuation du texte ne s'étend pas au-delà des sauts de ligne. Si "
|
||||
"vous devez ajouter une emphase à plusieurs lignes ou paragraphes, vous "
|
||||
"devez l'appliquer à chacun d'entre eux à tour de rôle."
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:87
|
||||
msgid ""
|
||||
"Text emphasis can only be used in comments and paragraphs. Headings and "
|
||||
"meta data tags don't allow for formatting, and any formatting markup "
|
||||
"will be displayed as-is."
|
||||
msgstr ""
|
||||
"Cette mise en valeur du texte ne peut être utilisée que dans les "
|
||||
"commentaires et les paragraphes. Les titres et les balises de "
|
||||
"métadonnées ne permettent pas la mise en forme, et toute marque de mise "
|
||||
"en forme sera affichée telle quelle."
|
||||
|
||||
#: ../../source/usage/basic_formatting.rst:92
|
||||
msgid ""
|
||||
"UmbraEdit supports standard escape syntax for the emphasis markup "
|
||||
"characters in case the editor misunderstands your intended usage of "
|
||||
"them. That is, ``\\*``, ``\\_`` and ``\\~`` will generate a plain ``*``, "
|
||||
"``_`` and ``~``, respectively, without interpreting them as part of the "
|
||||
"markup."
|
||||
msgstr ""
|
||||
"UmbraEdit supporte la syntaxe d'échappement standard pour les "
|
||||
"caractères d'accentuation au cas où l'éditeur ne comprendrait pas "
|
||||
"l'usage que vous voulez en faire. C'est-à-dire que ``\\*``, ``\\_`` et "
|
||||
"``\\~`` généreront respectivement un ``*``, ``_`` et ``~``, sans les "
|
||||
"interpréter comme faisant partie du balisage."
|
||||
@@ -1,261 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-29 14:27+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:5
|
||||
msgid "Chapters and Scenes"
|
||||
msgstr "Chapitres et scènes"
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:9
|
||||
msgid ""
|
||||
"Since UmbraEdit uses a plain text format, the structure of your novel must "
|
||||
"follow a certain set of simple rules. For documents in a **Novel** type root "
|
||||
"folder, it is the heading that determines if the document is a chapter or a "
|
||||
"scene."
|
||||
msgstr ""
|
||||
"Comme UmbraEdit utilise un format de texte brut, la structure de votre "
|
||||
"roman doit suivre un certain nombre de règles simples. Pour les documents "
|
||||
"situés dans un dossier racine de type **Roman**, c'est le titre qui détermine "
|
||||
"s'il s'agit d'un chapitre ou d'une scène."
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:13
|
||||
msgid ""
|
||||
"The formatting of headings is based on Markdown_. A heading is indicated by a "
|
||||
"line starting with one or more ``#`` characters. It accepts up to four of "
|
||||
"these. You can use multiple headings in the same document, but it is the "
|
||||
"first heading that determines which icon and information is displayed in the "
|
||||
"project tree."
|
||||
msgstr ""
|
||||
"Le formatage des titres est basé sur Markdown_. Un titre est indiqué par une "
|
||||
"ligne commençant par un ou plusieurs caractères ``#``. Il en accepte jusqu'à "
|
||||
"quatre. Vous pouvez utiliser plusieurs titres dans le même document, mais "
|
||||
"c'est le premier titre qui détermine l'icône et les informations affichées "
|
||||
"dans l'arborescence du projet."
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:20
|
||||
msgid ""
|
||||
"You can use the same heading levels for your notes in the other root folders, "
|
||||
"but they aren't treated as chapters or scenes, so there you are free to use "
|
||||
"them as you want."
|
||||
msgstr ""
|
||||
"Vous pouvez utiliser les mêmes niveaux de titres pour vos notes dans les "
|
||||
"autres dossiers racines, mais ils ne sont pas traités comme des chapitres ou "
|
||||
"des scènes, et vous êtes donc libre de les utiliser comme vous le souhaitez."
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:27
|
||||
msgid "Heading Levels"
|
||||
msgstr "Niveaux d'en-tête"
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:31
|
||||
msgid "An illustration of how heading levels correspond to the novel structure."
|
||||
msgstr ""
|
||||
"Illustration de la correspondance entre les niveaux d'en-tête et la structure "
|
||||
"du roman."
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:33
|
||||
msgid ""
|
||||
"Four levels of headings are understood for novel documents. You can pick and "
|
||||
"choose from these as you want, but if your story has chapters, you should use "
|
||||
"these headings to indicate them. If you also add scene headings, you have "
|
||||
"better control of how your scene separators are formatted in your manuscript. "
|
||||
"The chapter and scenes headings are also displayed in the :ref:`Novel View "
|
||||
"<docs_ui_main_novel>` and :ref:`Outline View <docs_ui_main_outline>`."
|
||||
msgstr ""
|
||||
"Quatre niveaux d'en-têtes sont prévus pour les documents de roman. Vous "
|
||||
"pouvez les choisir à votre guise, mais si votre histoire comporte des "
|
||||
"chapitres, vous devez utiliser ces titres pour les indiquer. Si vous ajoutez "
|
||||
"également des titres de scènes, vous pourrez mieux contrôler la façon dont "
|
||||
"vos séparateurs de scènes sont formatés dans votre manuscrit. Les titres de "
|
||||
"chapitres et de scènes sont également affichés dans les vues :ref:`Novel View "
|
||||
"<docs_ui_main_novel>` et :ref:`Outline View <docs_ui_main_outline>`."
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:39
|
||||
msgid "``# Title Text``"
|
||||
msgstr "``# Texte de titre``"
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:40
|
||||
msgid ""
|
||||
"This is a heading level one. This heading indicates the start of a new "
|
||||
"partition. Partitions are for when you want to split your story into \"Part "
|
||||
"1\", \"Part 2\", etc. You can also choose to use them for splitting the text "
|
||||
"up into acts, and then hide these headings in your manuscript so that they "
|
||||
"are not included in the output."
|
||||
msgstr ""
|
||||
"Il s'agit d'une en-tête de niveau un. Ce titre indique le début d'une "
|
||||
"nouvelle partie. Les parties sont utilisées lorsque vous souhaitez diviser "
|
||||
"votre histoire en « Partie 1 », « Partie 2 », etc. Vous pouvez également "
|
||||
"choisir de les utiliser pour diviser le texte en actes, puis de masquer ces "
|
||||
"titres dans votre manuscrit afin qu'ils ne soient pas inclus dans la sortie."
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:45
|
||||
msgid "``## Chapter Title``"
|
||||
msgstr "``## Titre de chapitre``"
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:46
|
||||
msgid ""
|
||||
"This is a heading level two. This heading indicates the start of a new "
|
||||
"chapter. Chapter numbers can be inserted automatically when building the "
|
||||
"manuscript, so you don't have to do this in the title. See :ref:"
|
||||
"`docs_ui_manuscript_head_numbers` for more details."
|
||||
msgstr ""
|
||||
"Il s'agit d'une en-tête de niveau deux. Ce titre indique le début d'un "
|
||||
"nouveau chapitre. Les numéros de chapitre peuvent être insérés "
|
||||
"automatiquement lors de la construction du manuscrit, de sorte que vous "
|
||||
"n'avez pas à le faire dans le titre. Voir :ref:"
|
||||
"`docs_ui_manuscript_head_numbers` pour plus de détails."
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:50
|
||||
msgid "``### Scene Title``"
|
||||
msgstr "``### Titre de scène``"
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:51
|
||||
msgid ""
|
||||
"This is a heading level three. This heading indicates the start of a new "
|
||||
"scene. Scene numbers or scene separators can be inserted automatically when "
|
||||
"building the manuscript, so you can use the title field as a working title "
|
||||
"for your scenes if you wish, but you must provide a minimal title."
|
||||
msgstr ""
|
||||
"Il s'agit d'une en-tête de niveau trois. Ce titre indique le début d'une "
|
||||
"nouvelle scène. Des numéros de scène ou des séparateurs de scène peuvent être "
|
||||
"insérés automatiquement lors de la construction du manuscrit. Vous pouvez "
|
||||
"donc utiliser le champ titre comme titre de travail pour vos scènes si vous "
|
||||
"le souhaitez, mais vous devez fournir un titre minimal."
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:56
|
||||
msgid "``#### Section Title``"
|
||||
msgstr "``#### Titre de section``"
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:57
|
||||
msgid ""
|
||||
"This is a heading level four. This heading indicates the start of a new "
|
||||
"section. Section titles can be replaced by separators or ignored completely "
|
||||
"when building the manuscript. The meaning of a section is really whatever you "
|
||||
"want it to be. You can use it to split your scenes up into chunks, or into "
|
||||
"separate documents."
|
||||
msgstr ""
|
||||
"Il s'agit d'une en-tête de niveau quatre. Ce titre indique le début d'une "
|
||||
"nouvelle section. Les titres de section peuvent être remplacés par des "
|
||||
"séparateurs ou ignorés complètement lors de la construction du manuscrit. La "
|
||||
"signification d'une section est en fait celle que vous voulez lui donner. "
|
||||
"Vous pouvez l'utiliser pour diviser vos scènes en morceaux ou en documents "
|
||||
"distincts."
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:62
|
||||
msgid ""
|
||||
"For headings level one through three, adding a ``!`` modifies the meaning of "
|
||||
"the heading. The alternative meaning of the heading is only relevant when you "
|
||||
"generate your manuscript, but you may want to keep the use cases in mind "
|
||||
"while writing."
|
||||
msgstr ""
|
||||
"Pour les en-têtes de niveau un à trois, l'ajout d'un ``!`` modifie la "
|
||||
"signification de l'en-tête. La signification alternative de l'en-tête n'est "
|
||||
"pertinente que lorsque vous générez votre manuscrit, mais vous pouvez garder "
|
||||
"à l'esprit les cas d'utilisation lors de la rédaction."
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:66
|
||||
msgid "``#! Title Text``"
|
||||
msgstr "``#! Texte de titre``"
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:67
|
||||
msgid ""
|
||||
"This tells the **Manuscript Build** tool that the level one heading is "
|
||||
"intended to be used for the novel or notes folder's main title, like for "
|
||||
"instance the novel title on the cover page. When building the manuscript, "
|
||||
"this will use a different styling of the title, which you can modify "
|
||||
"independently from how partition titles are styled. See :ref:"
|
||||
"`docs_usage_front_back_matter_title` for more details."
|
||||
msgstr ""
|
||||
"Cela indique à l'outil **Compiler le manuscrit** que l'en-tête de niveau un "
|
||||
"est destiné à être utilisé pour le titre principal du roman ou du dossier de "
|
||||
"notes, comme par exemple le titre du roman sur la page de couverture. Lors de "
|
||||
"la compilation du manuscrit, l'outil utilisera un style différent pour le "
|
||||
"titre, que vous pouvez modifier indépendamment de la façon dont les titres "
|
||||
"des parties sont stylisés. Voir :ref:`docs_usage_front_back_matter_title` "
|
||||
"pour plus de détails."
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:73
|
||||
msgid "``##! Chapter Title``"
|
||||
msgstr "``## ! Titre de chapitre``"
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:74
|
||||
msgid ""
|
||||
"This tells the **Manuscript Build** tool to not assign a chapter number to "
|
||||
"this chapter title if automatic chapter numbers are enabled. Such titles are "
|
||||
"useful for prologues and epilogues for instance. See :ref:"
|
||||
"`docs_usage_front_back_matter_unnumbered` for more details."
|
||||
msgstr ""
|
||||
"Cette option indique à l'outil **Compilation du manuscrit** de ne pas "
|
||||
"attribuer de numéro de chapitre à ce titre de chapitre si la numérotation "
|
||||
"automatique des chapitres est activée. De tels titres sont utiles pour les "
|
||||
"prologues et les épilogues par exemple. Voir :ref:"
|
||||
"`docs_usage_front_back_matter_unnumbered` pour plus de détails."
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:78
|
||||
msgid "``###! Scene Title``"
|
||||
msgstr "``###! Titre de scène``"
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:79
|
||||
msgid ""
|
||||
"This is an alternative scene heading that can be formatted differently in the "
|
||||
"**Manuscript Build** tool. It is intended for separating \"soft\" and "
|
||||
"\"hard\" scene breaks. Aside from this, it behaves identically to a regular "
|
||||
"scene heading. See :ref:`docs_ui_manuscript_head_hard_soft` for more details."
|
||||
msgstr ""
|
||||
"Il s'agit d'un titre de scène alternatif qui peut être formaté différemment "
|
||||
"dans l'outil **Compilation du manuscrit**. Il est destiné à séparer les "
|
||||
"coupures de scène « douces » et « dures ». A part cela, il se comporte de la "
|
||||
"même manière qu'un titre de scène normal. Voir :ref:"
|
||||
"`docs_ui_manuscript_head_hard_soft` pour plus de détails."
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:84
|
||||
msgid ""
|
||||
"The formatting of these headings can be customised quite extensively in the :"
|
||||
"ref:`Manuscript Tool <docs_ui_manuscript>`, which is covered in a separate "
|
||||
"part of the documentation."
|
||||
msgstr ""
|
||||
"Le formatage de ces en-têtes peut être personnalisé de manière assez poussée "
|
||||
"dans l'outil :ref:`Manuscript Tool <docs_ui_manuscript>`, qui fait l'objet "
|
||||
"d'une partie distincte de la documentation."
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:90
|
||||
msgid ""
|
||||
"The space after the ``#`` or ``!`` character is mandatory. The editor will "
|
||||
"change colour and font size when the heading is correctly formatted."
|
||||
msgstr ""
|
||||
"L'espace après le caractère ``#`` ou ``!`` est obligatoire. L'éditeur "
|
||||
"changera de couleur et de taille de police lorsque le titre sera correctement "
|
||||
"formaté."
|
||||
|
||||
#: ../../source/usage/chapters_and_scenes.rst:93
|
||||
msgid ""
|
||||
"Page breaks can be automatically added before titles, partition, chapter and "
|
||||
"scene headings from the **Manuscript Build** tool when you build your project "
|
||||
"to a format that supports page breaks. If you want page breaks in other "
|
||||
"places, you have to specify them manually. See :ref:"
|
||||
"`docs_usage_formatting_breaks` for more details."
|
||||
msgstr ""
|
||||
"Les sauts de page peuvent être automatiquement ajoutés avant les titres, les "
|
||||
"parties, les chapitres et les scènes à partir de l'outil **Compilation du "
|
||||
"manuscrit** lorsque vous créez votre projet dans un format qui prend en "
|
||||
"charge les sauts de page. Si vous voulez des sauts de page à d'autres "
|
||||
"endroits, vous devez les spécifier manuellement. Voir :ref:"
|
||||
"`docs_usage_formatting_breaks` pour plus de détails."
|
||||
@@ -1,254 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025
|
||||
# This file is distributed under the same license as the UmbraEdit
|
||||
# package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: UmbraEdit 2.7rc1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-27 19:59+0200\n"
|
||||
"PO-Revision-Date: 2025-05-28 11:20+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: ../../source/usage/comments.rst:5
|
||||
msgid "Comments and Notes"
|
||||
msgstr "Commentaires et notes"
|
||||
|
||||
#: ../../source/usage/comments.rst:7
|
||||
msgid ""
|
||||
"You can add comments to your text that are not a part of the story. "
|
||||
"Regular comments are intended for you to add notes to yourself inside "
|
||||
"the text, which may be useful when you revise your drafts. However, "
|
||||
"there are several types of comments you can use."
|
||||
msgstr ""
|
||||
"Vous pouvez ajouter à votre texte des commentaires qui ne font pas "
|
||||
"partie de l'histoire. Les commentaires ordinaires sont destinés à vous "
|
||||
"permettre d'ajouter des notes à l'intérieur du texte, ce qui peut "
|
||||
"s'avérer utile lorsque vous révisez vos projets. Cependant, il existe "
|
||||
"plusieurs types de commentaires que vous pouvez utiliser."
|
||||
|
||||
#: ../../source/usage/comments.rst:11
|
||||
msgid ""
|
||||
"This section covers the basic comment types. There are a couple of "
|
||||
"advanced features that use comment syntax too, but they are covered "
|
||||
"later."
|
||||
msgstr ""
|
||||
"Cette section couvre les types de commentaires de base. Il existe "
|
||||
"quelques fonctions avancées qui utilisent également la syntaxe des "
|
||||
"commentaires, mais elles sont abordées plus loin."
|
||||
|
||||
#: ../../source/usage/comments.rst:18
|
||||
msgid "Plain Comments"
|
||||
msgstr "Commentaires simples"
|
||||
|
||||
#: ../../source/usage/comments.rst:20
|
||||
msgid ""
|
||||
"A plain comment is a line or paragraph that starts with the character "
|
||||
"``%`` as its first character. You can put them wherever you like in your "
|
||||
"documents, and you can choose to include or exclude them from your "
|
||||
"manuscript."
|
||||
msgstr ""
|
||||
"Un commentaire simple est une ligne ou un paragraphe qui commence par le "
|
||||
"caractère ``%``. Vous pouvez les placer où vous le souhaitez dans vos "
|
||||
"documents, et vous pouvez choisir de les inclure ou de les exclure de "
|
||||
"votre manuscrit."
|
||||
|
||||
#: ../../source/usage/comments.rst:24
|
||||
msgid ""
|
||||
"For the most part, UmbraEdit completely ignores these comments. They "
|
||||
"are not included in your word or character counts either, and are only "
|
||||
"displayed in the document viewer panel if you enable them."
|
||||
msgstr ""
|
||||
"La plupart du temps, UmbraEdit ignore complètement ces commentaires. "
|
||||
"Ils ne sont pas non plus inclus dans le décompte des mots ou des "
|
||||
"caractères, et ne sont affichés dans le panneau de visualisation du "
|
||||
"document que si vous les activez."
|
||||
|
||||
#: ../../source/usage/comments.rst:28 ../../source/usage/comments.rst:63
|
||||
#: ../../source/usage/comments.rst:80 ../../source/usage/comments.rst:128
|
||||
#: ../../source/usage/comments.rst:156
|
||||
msgid ":bdg-info:`Example`"
|
||||
msgstr ":bdg-info:`Exemple`"
|
||||
|
||||
#: ../../source/usage/comments.rst:44
|
||||
msgid "Synopsis or Description Comments"
|
||||
msgstr "Commentaires Synopsis ou Description"
|
||||
|
||||
#: ../../source/usage/comments.rst:46
|
||||
msgid ""
|
||||
"A special kind of comments are **Synopsis** and **Short Description** "
|
||||
"comments. They are different from plain comments in that they can be "
|
||||
"displayed alongside other information about a scene or a character or "
|
||||
"other story element described in a note. As with plain comments, they "
|
||||
"can be included in your manuscript, but they are formatted differently "
|
||||
"than plain comments."
|
||||
msgstr ""
|
||||
"Les commentaires **Synopsis** et **Description courte** constituent un "
|
||||
"type particulier de commentaires. Ils se distinguent des commentaires "
|
||||
"ordinaires par le fait qu'ils peuvent être affichés à côté d'autres "
|
||||
"informations concernant une scène, un personnage ou un autre élément de "
|
||||
"l'histoire décrit dans une note. Comme les commentaires ordinaires, ils "
|
||||
"peuvent être inclus dans votre manuscrit, mais leur format est différent "
|
||||
"de celui des commentaires ordinaires."
|
||||
|
||||
#: ../../source/usage/comments.rst:53
|
||||
msgid ""
|
||||
"A summary or description comment can be used once, and only once, for "
|
||||
"each heading as they are considered a description of the content of the "
|
||||
"text under that heading. If you add two such comments under the same "
|
||||
"heading, the last one will be used."
|
||||
msgstr ""
|
||||
"Un commentaire de résumé ou de description peut être utilisé une fois, "
|
||||
"et une seule, pour chaque rubrique, car il est considéré comme une "
|
||||
"description du contenu du texte de cette rubrique. Si vous ajoutez deux "
|
||||
"commentaires de ce type sous la même rubrique, c'est le dernier qui sera "
|
||||
"utilisé."
|
||||
|
||||
#: ../../source/usage/comments.rst:59
|
||||
msgid "Synopsis"
|
||||
msgstr "Synopsis"
|
||||
|
||||
#: ../../source/usage/comments.rst:61
|
||||
msgid ""
|
||||
"A **Synopsis** comment is intended for adding a summary of your chapters "
|
||||
"and scenes."
|
||||
msgstr ""
|
||||
"Un commentaire **Synopsis** est destiné à ajouter un résumé de vos "
|
||||
"chapitres et scènes."
|
||||
|
||||
#: ../../source/usage/comments.rst:75
|
||||
msgid "Short Description"
|
||||
msgstr "Brève description"
|
||||
|
||||
#: ../../source/usage/comments.rst:77
|
||||
msgid ""
|
||||
"A **Short Description** comment behaves exactly the same as a synopsis "
|
||||
"comment, but is intended as a description of a story element, like a "
|
||||
"character."
|
||||
msgstr ""
|
||||
"Un commentaire **Brève description** se comporte exactement de la même "
|
||||
"manière qu'un commentaire de synopsis, mais il est destiné à décrire un "
|
||||
"élément de l'histoire, tel qu'un personnage."
|
||||
|
||||
#: ../../source/usage/comments.rst:100
|
||||
msgid ""
|
||||
"The ``%Synopsis:`` and ``%Short:`` comment prefixes are interchangeable, "
|
||||
"but when you include them in the manuscript, they are labelled based on "
|
||||
"the prefix, so the latter may make more sense for a Character note than "
|
||||
"the former."
|
||||
msgstr ""
|
||||
"Les préfixes de commentaire ``%Synopsis:`` et ``%Short:`` sont "
|
||||
"interchangeables, mais lorsque vous les incluez dans le manuscrit, ils "
|
||||
"sont étiquetés en fonction du préfixe, de sorte que ce dernier peut "
|
||||
"avoir plus de sens pour une note de caractère que le premier."
|
||||
|
||||
#: ../../source/usage/comments.rst:108
|
||||
msgid "Footnote Comments"
|
||||
msgstr "Commentaires de note de bas de page"
|
||||
|
||||
#: ../../source/usage/comments.rst:110
|
||||
msgid ""
|
||||
"Footnotes are added with a shortcode, paired with a matching comment for "
|
||||
"the actual footnote text. The matching is done with a key that links the "
|
||||
"two. If you insert a footnote from the **Insert** menu, a unique key is "
|
||||
"generated for you. Shortcodes in general are covered in more detail in :"
|
||||
"ref:`docs_usage_formatting_shortcodes`."
|
||||
msgstr ""
|
||||
"Les notes de bas de page sont ajoutées à l'aide d'un shortcode, associé "
|
||||
"à un commentaire correspondant au texte de la note de bas de page. La "
|
||||
"correspondance est assurée par une clé qui lie les deux. Si vous insérez "
|
||||
"une note de bas de page à partir du menu **Insérer**, une clé unique est "
|
||||
"générée pour vous. Les shortcodes en général sont couverts plus en "
|
||||
"détail dans :ref:`docs_usage_formatting_shortcodes`."
|
||||
|
||||
#: ../../source/usage/comments.rst:115
|
||||
msgid ""
|
||||
"The insert footnote feature will add the footnote shortcode marker at "
|
||||
"the position of your cursor in the editor panel, and create the "
|
||||
"associated footnote comment right after the paragraph. It will then move "
|
||||
"the cursor there so you can immediately start typing the footnote text."
|
||||
msgstr ""
|
||||
"La fonction d'insertion d'une note de bas de page ajoute le marqueur de "
|
||||
"shortcode de note de bas de page à l'emplacement de votre curseur dans "
|
||||
"le panneau de l'éditeur et crée le commentaire de note de bas de page "
|
||||
"associé juste après le paragraphe. Elle déplacera ensuite le curseur à "
|
||||
"cet endroit afin que vous puissiez immédiatement commencer à taper le "
|
||||
"texte de la note de bas de page."
|
||||
|
||||
#: ../../source/usage/comments.rst:119
|
||||
msgid ""
|
||||
"The footnote comment can be anywhere in the document, so if you wish to "
|
||||
"move them to, say, the bottom of the text, you are free to do so."
|
||||
msgstr ""
|
||||
"Le commentaire de la note de bas de page peut se trouver n'importe où "
|
||||
"dans le document, de sorte que si vous souhaitez le placer, par exemple, "
|
||||
"au bas du texte, vous êtes libre de le faire."
|
||||
|
||||
#: ../../source/usage/comments.rst:122
|
||||
msgid ""
|
||||
"Footnote keys are only required to be unique within a document, so if "
|
||||
"you copy, move or merge text, you must make sure the keys are not "
|
||||
"duplicated. If you use the automatically generated keys from the "
|
||||
"**Insert** menu, they are unique among all indexed documents. They are "
|
||||
"not guaranteed to be unique against footnotes in the **Archive** or "
|
||||
"**Trash** folder though, but the chance of accidentally generating the "
|
||||
"same key twice in a project is relatively small."
|
||||
msgstr ""
|
||||
"Les clés de notes de bas de page ne doivent être uniques qu'à "
|
||||
"l'intérieur d'un document. Par conséquent, si vous copiez, déplacez ou "
|
||||
"fusionnez du texte, vous devez vous assurer que les clés ne sont pas "
|
||||
"dupliquées. Si vous utilisez les clés générées automatiquement à partir "
|
||||
"du menu **Insérer**, elles sont uniques parmi tous les documents "
|
||||
"indexés. Il n'est pas garanti qu'elles soient uniques par rapport aux "
|
||||
"notes de bas de page du dossier Archives ou Corbeille, mais le risque de "
|
||||
"générer accidentellement la même clé deux fois dans un projet est "
|
||||
"relativement faible."
|
||||
|
||||
#: ../../source/usage/comments.rst:144
|
||||
msgid "Ignored Text"
|
||||
msgstr "Texte ignoré"
|
||||
|
||||
#: ../../source/usage/comments.rst:146
|
||||
msgid ""
|
||||
"If you want to completely ignore some of the text in your documents, but "
|
||||
"are not ready to delete it, you can add ``%~`` before the text paragraph "
|
||||
"or line. This will cause UmbraEdit to skip the text entirely when "
|
||||
"generating previews or building manuscripts."
|
||||
msgstr ""
|
||||
"Si vous souhaitez ignorer complètement une partie du texte dans vos "
|
||||
"documents, mais que vous n'êtes pas prêt à l'effacer, vous pouvez "
|
||||
"ajouter ``%~`` devant le paragraphe ou la ligne de texte. Cela permettra "
|
||||
"à UmbraEdit d'ignorer complètement le texte lors de la génération "
|
||||
"d'aperçus ou de la construction de manuscrits."
|
||||
|
||||
#: ../../source/usage/comments.rst:150
|
||||
msgid ""
|
||||
"This is a better way of removing text than converting them to regular "
|
||||
"comments, as you may want to include regular comments in your previews "
|
||||
"or draft manuscript."
|
||||
msgstr ""
|
||||
"Il s'agit d'un meilleur moyen de supprimer le texte que de le convertir "
|
||||
"en commentaires normaux, car vous souhaiterez peut-être inclure des "
|
||||
"commentaires normaux dans vos prévisualisations ou votre projet de "
|
||||
"manuscrit."
|
||||
|
||||
#: ../../source/usage/comments.rst:153
|
||||
msgid ""
|
||||
"You can toggle the ignored text feature on and off for a paragraph by "
|
||||
"pressing :kbd:`Ctrl+Shift+D` on your keyboard with your cursor somewhere "
|
||||
"in the paragraph."
|
||||
msgstr ""
|
||||
"Vous pouvez activer ou désactiver la fonction de texte ignoré pour un "
|
||||
"paragraphe en appuyant sur :kbd:`Ctrl+Maj+D` sur votre clavier avec "
|
||||
"votre curseur quelque part dans le paragraphe."
|
||||