diff --git a/.github/workflows/dotnet.yml b/.github/workflows/ci+cd.yml
similarity index 99%
rename from .github/workflows/dotnet.yml
rename to .github/workflows/ci+cd.yml
index 2e2f02c55..cf5c2be51 100644
--- a/.github/workflows/dotnet.yml
+++ b/.github/workflows/ci+cd.yml
@@ -1,4 +1,4 @@
-name: "Build, Test and Pack"
+name: "Build, Test, and Pack"
on:
push:
diff --git a/.github/workflows/l10n-packaging.yml b/.github/workflows/l10n-packaging.yml
new file mode 100644
index 000000000..8559fecbe
--- /dev/null
+++ b/.github/workflows/l10n-packaging.yml
@@ -0,0 +1,55 @@
+
+name: Package latest l10ns
+
+on:
+ push:
+ tags: [ v* ]
+ workflow_dispatch:
+
+concurrency:
+ group: ${{ github.workflow }}-package-l10ns
+ cancel-in-progress: true
+
+jobs:
+
+ package-l10n:
+ strategy:
+ fail-fast: false
+ runs-on: windows-2019
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
+ with:
+ fetch-depth: 0
+
+ # Install the .NET Core workload
+ - name: Install .NET Core
+ uses: actions/setup-dotnet@3447fd6a9f9e57506b15f895c5b76d3b197dc7c2 # v3.2.0
+ with:
+ dotnet-version: 5.0.x
+
+ # Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild
+ - name: Setup MSBuild.exe (Windows OS)
+ uses: microsoft/setup-msbuild@1ff57057b5cfdc39105cd07a01d78e9b0ea0c14c # v1.3.1
+ env:
+ ACTIONS_ALLOW_UNSECURE_COMMANDS: true # So the PATH can be set by this step
+
+ - name: Install Crowdin cli
+ run: npm i -g @crowdin/cli
+
+ - name: Download localizations
+ working-directory: ./l10n
+ run: crowdin download --all -T ${{ secrets.CROWDIN_PAT }}
+
+ - name: Restore packages
+ run: msbuild l10n/l10n.proj /t:restore /p:Configuration=Release /p:Platform="Any CPU"
+
+ - name: Build Nuget package of localizations
+ env:
+ ACTIONS_ALLOW_UNSECURE_COMMANDS: true # So gitversion can set environment vars during the build
+ run: msbuild l10n/l10n.proj /t:PackageL10ns /p:Configuration=Release /p:Platform="Any CPU"
+
+ - name: Publish Nuget package
+ working-directory: ./l10n
+ run: dotnet nuget push *.nupkg --api-key ${{ secrets.SILLSDEV_PUBLISH_NUGET_ORG }} --source https://api.nuget.org/v3/index.json
\ No newline at end of file
diff --git a/.github/workflows/l10n-source.yml b/.github/workflows/l10n-source.yml
new file mode 100644
index 000000000..10c96d568
--- /dev/null
+++ b/.github/workflows/l10n-source.yml
@@ -0,0 +1,55 @@
+
+name: Update l10n Source Strings
+
+on:
+ push:
+ branches: [master]
+ workflow_dispatch:
+
+concurrency:
+ group: ${{ github.workflow }}-update-l10n
+ cancel-in-progress: true
+
+jobs:
+
+ extract-and-upload-strings:
+ strategy:
+ fail-fast: false
+ runs-on: windows-2019
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
+ with:
+ fetch-depth: 0
+
+ # Install the .NET Core workload
+ - name: Install .NET Core
+ uses: actions/setup-dotnet@3447fd6a9f9e57506b15f895c5b76d3b197dc7c2 # v3.2.0
+ with:
+ dotnet-version: 5.0.x
+
+ # Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild
+ - name: Setup MSBuild.exe (Windows OS)
+ uses: microsoft/setup-msbuild@1ff57057b5cfdc39105cd07a01d78e9b0ea0c14c # v1.3.1
+ env:
+ ACTIONS_ALLOW_UNSECURE_COMMANDS: true # So the PATH can be set by this step
+
+ - name: Install Crowdin cli
+ run: npm i -g @crowdin/cli
+
+ - name: Download Chorus.en.xlf source file # new strings will be merged into the existing file
+ working-directory: ./l10n
+ run: crowdin download sources -T ${{ secrets.CROWDIN_PAT }}
+
+ - name: Restore packages
+ run: msbuild l10n/l10n.proj /t:restore /p:Configuration=Release /p:Platform="Any CPU"
+
+ - name: Update l10n strings
+ env:
+ ACTIONS_ALLOW_UNSECURE_COMMANDS: true # So gitversion can set environment vars during the build
+ run: msbuild l10n/l10n.proj /t:UpdateCrowdin /p:Configuration=Release /p:Platform="Any CPU"
+
+ - name: Upload Chorus.en.xlf source file
+ working-directory: ./l10n
+ run: crowdin upload sources -T ${{ secrets.CROWDIN_PAT }}
diff --git a/.github/workflows/test-results.yml b/.github/workflows/test-results.yml
index 6b5f15efe..24aac13f1 100644
--- a/.github/workflows/test-results.yml
+++ b/.github/workflows/test-results.yml
@@ -4,7 +4,7 @@ name: Test Results
on:
workflow_run:
- workflows: ["Build, Test and Pack"]
+ workflows: ["Build, Test, and Pack"]
types:
- completed
diff --git a/.gitignore b/.gitignore
index 14ebca211..d5a665fd4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,45 +1,33 @@
-NuGet.exe
-nuget.exe
-CopyToWeSay.bat
-output/
-obj/
-_Resharper*
-Debug/
-DebugMono/
-Release/
-ReleaseMono/
-_ReSharper.Chorus VS2008/
+.idea/
+.vs/
+*.files
+*.mdb
+*.nupkg
+*.orig
+*.pidb
+*.resources
*.suo
*.user
-CopyToWeSayDev.bat
-lib/Palaso.TestUtilities.pdb
+*.userprefs
+*.xlf
*~
-*.pidb
-Mercurial/
-mercurial/
*ReSharper*
build/old
-launchSettings.json
-lib/$(Configuration)
-*.nupkg
-*.resources
-*.userprefs
-.vs/
-src/Chorus.Tests/bin/*
-src/ChorusMerge.Tests/bin/*
-src/SampleApp/bin/*
-CopyTo Dev WeSay.bat
-MercurialExtensions/
-test-results
-*.mdb
-src/LibChorusTests/test-results/LibChorus.Tests.csproj.test-cache
-**.orig
+CopyTo*WeSay*.bat
Download/
L10NSharp.dll
+launchSettings.json
+lib/$(Configuration)
lib/Chorus_Help.chm
+Mercurial/
+mercurial/
+MercurialExtensions/
+NuGet.exe
+nuget.exe
+obj/
+output/
packages/
-.idea/
-.vs/
riderModule.iml
+/bin/
src/LibChorus/icu4c.readme.txt
-*.files
\ No newline at end of file
+test-results
diff --git a/Chorus.sln b/Chorus.sln
index 7ae837956..f075d7c69 100644
--- a/Chorus.sln
+++ b/Chorus.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.30709.132
+# Visual Studio Version 17
+VisualStudioVersion = 17.7.34031.279
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibChorus", "src\LibChorus\LibChorus.csproj", "{94245366-8F1E-475C-810D-FE89BB3948E0}"
EndProject
@@ -33,10 +33,18 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{164F4259-01F4-4F77-8E29-B768437210C3}"
ProjectSection(SolutionItems) = preProject
CHANGELOG.md = CHANGELOG.md
- GitVersion.yml = GitVersion.yml
- README.md = README.md
Directory.Build.props = Directory.Build.props
Directory.Build.targets = Directory.Build.targets
+ GitVersion.yml = GitVersion.yml
+ README.md = README.md
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github-workflows", ".github-workflows", "{D0B220CC-BFF9-4E5A-99C1-042597A7AE24}"
+ ProjectSection(SolutionItems) = preProject
+ .github\workflows\l10n-packaging.yml = .github\workflows\l10n-packaging.yml
+ .github\workflows\ci+cd.yml = .github\workflows\ci+cd.yml
+ .github\workflows\l10n-source.yml = .github\workflows\l10n-source.yml
+ .github\workflows\test-results.yml = .github\workflows\test-results.yml
EndProjectSection
EndProject
Global
@@ -95,6 +103,9 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {D0B220CC-BFF9-4E5A-99C1-042597A7AE24} = {164F4259-01F4-4F77-8E29-B768437210C3}
+ EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {42350D12-26EB-4C72-B65E-F01D4091CBF7}
EndGlobalSection
diff --git a/DistFiles/localizations/Chorus.es.tmx b/DistFiles/localizations/Chorus.es.tmx
deleted file mode 100644
index ec6a9179e..000000000
--- a/DistFiles/localizations/Chorus.es.tmx
+++ /dev/null
@@ -1,1490 +0,0 @@
-
-
-
-
-
-
- &Add && &OK
-
-
- &Añadir && Aceptar
-
-
-
- true
-
- &Add && &OK
-
-
- &Añadir && &OK
-
-
-
-
- &Cancel
-
-
- &Cancelar
-
-
-
-
- &Add Message
-
-
- &Agregar mensaje
-
-
-
-
- Add new message:
-
-
- Añadir nueva mensaje:
-
-
-
-
- &Resolve Note
-
-
- &Resolver la nota
-
-
-
- true
-
- &Resolved
-
-
- Resuelto
-
-
-
-
- Un&resolve Note
-
-
- Quitar resolución de la nota
-
-
-
-
- &Resolve Note
-
-
- &Resolver la nota
-
-
-
-
- Normal
-
-
- Normal
-
-
-
-
- Raw
-
-
- Datos sin procesar
-
-
-
-
- Action
-
-
- Acción
-
-
-
-
- Item
-
-
- Artículo
-
-
-
-
- Type
-
-
- Tipo
-
-
-
-
- &Cancel
-
-
- &Cancelar
-
-
-
-
- &Close
-
-
- &Cerrar
-
-
-
-
- Error
-
-
- Error
-
-
-
-
- Help
-
-
- Ayuda
-
-
-
-
- &OK
-
-
- Aceptar
-
-
-
-
- Please confirm
-
-
- Por favor, confirmar
-
-
-
-
- Problem
-
-
- Problema
-
-
-
-
- Ambiguous Insert Warning
-
-
- Advertencia: insertar ambigua
-
-
-
-
- {0} and {1} both inserted material in this element in the same place. The automated merger cannot be sure of the correct order for the inserted material, but kept both of them.
-
-
- {0} y {1} ambos insertado material en este elemento en el mismo lugar. La fusión automática no puede estar segura de la orden correcta para el material insertado, pero mantuvo los dos.
-
-
-
-
- Ambiguous Insert Reorder Warning
-
-
- Advertencia: reordenar de insertar ambigua
-
-
-
-
- {0} inserted material in this element, but {1} re-ordered things. The automated merger cannot be sure of the correct position for the inserted material.
-
-
- {0} inserta material en esta elemento, pero {1} reordenado cosas. La fusión automatizado no puede estar seguro de la posición correcta para el material insertado.
-
-
-
- Used in place of a user name when we don't have one
-
- Another user
-
-
- Otro usuario
-
-
-
-
- Both Added Attribute Conflict
-
-
- Conflicto: ambos añadido el atributo
-
-
-
-
- Two users both moved something, but to different locations
-
-
- Dos usuarios han movido algo, pero a diferentes ubicaciones
-
-
-
-
- {0} and {1} added the same element, but with different content.
-
-
- {0} y {1} añaden el mismo elemento, pero con un contenido diferente.
-
-
-
-
- Both added the same element, but with different content conflict
-
-
- Conflicto: ambos añadido el mismo elemento, pero con contenido diferente
-
-
-
-
- Both Added Xml Text Conflict
-
-
- Conflicto: ambos añadido texto Xml
-
-
-
-
- {0} and {1} added different text to this element.
-
-
- {0} y {1} añaden un texto diferente a este elemento.
-
-
-
- atomic in this context means indivisible; we don't know how to merge changes to different parts of it
-
- Both Edited the Same Atomic Element
-
-
- Ambos editado el mismo elemento atómico
-
-
-
-
- Both Edited Attribute Conflict
-
-
- Conflicto: ambos editado un atributo
-
-
-
-
- Both Edited Different Parts Of Dependent Pieces Of Data Warning
-
-
- Advertencia: ambos editado diferentes partes de datos dependiente
-
-
-
-
- {0} edited one part of this element, while {1} edited another part. Since these two pieces of data are thought to be dependent on each other, someone needs to verify that the resulting merge is ok.
-
-
- {0} editado una parte de este elemento, mientras {1} editado otra parte. Puesto que estos dos datos se cree que son dependientes entre sí, alguien tiene que verifique que la combinación resultante es aceptable.
-
-
-
-
- Both edited a text field conflict
-
-
- Conflicto: ambos editado un campo de texto
-
-
-
-
- Both Edited Xml Text Element Conflict
-
-
- Conflicto: ambos editado un elemento de texto Xml
-
-
-
-
- {0} and {1} edited this element.
-
-
- {0} y {1} editan este elemento.
-
-
-
-
- Both Reordered Conflict
-
-
- Conflicto: ambos reordenados
-
-
-
-
- {0} and {1} both re-ordered the children of this element in different ways.
-
-
- {0} y {1} reordenan a los hijos de este elemento de maneras diferentes.
-
-
-
- this phrase is inserted as a desciption of 'who won', in a case where we were able to keep both changes
-
- both users
-
-
- ambos usuarios
-
-
-
-
- The system does not know how to interpret this conflict report.
-
-
- El sistema no sabe cómo interpretar el informe de este conflicto.
-
-
-
- {0} is Conflict.BothAddedDesc
-
- {0}: A copy was made so that the object can be in both places.
-
-
- {0}: se realiza una copia para que el objeto puede estar en dos lugares.
-
-
-
- {0} and {1} are user names
-
- {0} deleted this element, while {1} edited it.
-
-
- {0} elimina este elemento, mientras que {1} lo editó.
-
-
-
- {0} is a general description of the conflict, {1} gives more detail, {2} says how it was resolved
-
- {0} ({1}): {2}
-
-
- {0} ({1}): {2}
-
-
-
- A version of 'who won' used when we don't know
-
- Dunno
-
-
- No lo sé
-
-
-
- string used in place of element content when the element is missing
-
- (empty)
-
-
- (vacío)
-
-
-
-
- Both Inserted at different places Conflict
-
-
- Conflicto: ambos insertadas en diferentes lugares
-
-
-
-
- {0} and {1} both added the same children to this element in different places.
-
-
- {0} y {1} añaden los mismos niños a este elemento en lugares diferentes.
-
-
-
- {0} is a person's ID, typically a name
-
- The merger kept the change made by {0}.
-
-
- La fusión mantuvo el cambio realizado por {0}.
-
-
-
- default description of less serious conflicts; possibly never seen
-
- Merge Warning
-
-
- Advertencia de fusión
-
-
-
- Used as the name of an agent responsible for a change (that is, one made by the merge process itself)
-
- merger
-
-
- fusión
-
-
-
- Used in place of a user name when we don't have one
-
- One user
-
-
- Un usuario
-
-
-
-
- Removed Vs Edited Attribute Conflict
-
-
- Conflicto: eliminado en lugar de editado el atributo
-
-
-
-
- Removed Vs Edited Element Conflict
-
-
- Conflicto: eliminado en lugar de editado el elemento
-
-
-
- {0} and {1} are user names, {2} describes who won
-
- {0} deleted this element, while {1} edited it. {2}
-
-
- {0} elimina este elemento, mientras que {1} lo editó. {2}
-
-
-
-
- Removed Vs Edited Xml Text Element Conflict
-
-
- Conflicto: eliminado en lugar de editado el elemento de texto Xml
-
-
-
-
- {0} deleted this element, while {1} edited its text content. {2}
-
-
- {0} elimina este elemento, mientras que {1} editó su contenido de texto. {2}
-
-
-
- {0} and {3} are names; {1}, {2}, and {4} are data; {5} is a sentence saying which change won
-
- {0} changed {1} to {2}, while {3} changed it to {4}. {5}
-
-
- {0} cambió {1} al {2}, mientras {3} lo cambió a {4}. {5}
-
-
-
- {0} is a user ID; this string labels a block of text with changes highlighted
-
- {0}'s changes:
-
-
- cambios de {0}:
-
-
-
- {0} is a user ID; this string labels his version, when we were not able to highlight changes
-
- {0}'s version:
-
-
- Versión de {0}:
-
-
-
-
- Technical Details
-
-
- Detalles técnicos
-
-
-
-
- Copy
-
-
- Copiar
-
-
-
-
- Edit
-
-
- Editar
-
-
-
-
- Conflict Details
-
-
- Detalles del conflicto
-
-
-
-
- Warning
-
-
- Advertencia
-
-
-
-
- Duplicate Project--Get operation cancelled
-
-
- Proyecto duplicado--Operación de obtener cancelado
-
-
-
-
- Get
-
-
- Obtener
-
-
-
-
- Get Project from Chorus Hub
-
-
- Obtener el proyecto de Chorus Hub
-
-
-
-
- Project
-
-
- Proyecto
-
-
-
-
- &Fix Settings
-
-
- Obteniendo el proyecto...
-
-
-
-
- Status label
-
-
- Etiqueta de estado
-
-
-
-
- status text
-
-
- texto de estado
-
-
-
-
- Get Project From Internet
-
-
- Obtener el proyecto de Internet
-
-
-
-
- &Copy To Computer
-
-
- &Copiar a la computadora
-
-
-
-
- Status text
-
-
- Texto de estado
-
-
-
-
- Get Project From USB Drive
-
-
- Obtener el proyecto de Unidad USB
-
-
-
-
- Name
-
-
- Nombre
-
-
-
-
- Modified Date
-
-
- Fecha de modificación
-
-
-
-
- &Chorus Hub
-
-
- &Chorus Hub
-
-
-
-
- &Internet
-
-
- &Internet
-
-
-
-
- &USB Flash Drive
-
-
- &Unidad flash USB
-
-
-
-
- Receive project
-
-
- Recibir proyecto
-
-
-
-
- Add new question
-
-
- Añadir nueva pregunta
-
-
-
-
- Cancelled.
-
-
- Cancelado.
-
-
-
-
- A serious problem has occurred; Chorus cannot find the repository which owns this note, so it cannot be saved.
-
-
- Un problema grave ha ocurrido; Chorus no puede encontrar el repositorio que es propietaria de esta nota, por lo que no puede ser guardada.
-
-
-
-
- You can't get a project from a colleague at present, because some required information about the projects you already have is unavailable. This may be because you don't have permission to access a file in one of the projects in {0}.\n\nYou will probably need technical support to resolve this problem. The following information may be helpful to tech support:
-
-
- No se puede conseguir un proyecto de un colega en la actualidad, ya que cierta información necesaria acerca de los proyectos que ya tiene no está disponible. Esto puede ser porque usted no tiene permiso para acceder a un archivo en uno de los proyectos en {0}.\n\nEs probable que necesite soporte técnico para resolver este problema. La siguiente información puede ser útil para el soporte técnico:
-
-
-
-
- Cannot get project
-
-
- No se puede obtener proyecto
-
-
-
-
- Found Chorus Hub but it is not compatible with this version of {0}
-
-
- Encontrado Chorus Hub pero no es compatible con esta versión de {0}
-
-
-
-
- The Chorus Server is not compatible with ths client.
-
-
- El servidor de Chorus no es compatible con este cliente.
-
-
-
-
- The Chorus Server is not available.
-
-
- El servidor de Chorus no está disponible.
-
-
-
-
- Copying project
-
-
- Copiando proyecto
-
-
-
-
- Could not change the name to that.
-
-
- No se podía cambiar el nombre a eso.
-
-
-
-
- Custom Location...
-
-
- Ubicación personalizada...
-
-
-
-
- Sorry, conflict details aren't working for this conflict (it might be an old one). Here's the content:
-
-
- Lo sentimos, los detalles del conflicto no están funcionando para este conflicto (podría ser una vieja). Aquí está el contenido:
-
-
-
-
- The directory {0} doesn't exist, but should have been created by the application.
-
-
- El directorio {0} no existe, pero debe haber sido creado por la aplicación.
-
-
-
-
- Done.
-
-
- Listo.
-
-
-
-
- A project with this name already exists on this computer.
-
-
- Un proyecto con este nombre ya existe en esta computadora.
-
-
-
-
- For example, 'Swahili Project'
-
-
- Por ejemplo, 'proyecto de Swahili'
-
-
-
-
- Failed.
-
-
- Error.
-
-
-
-
- Finished
-
-
- Finalizado
-
-
-
-
- Finished copying {0} to this computer at {1}
-
-
- Terminado de copiar {0} a este equipo al {1}
-
-
-
-
- Get {0} from Chorus Hub on {1}
-
-
- Obtener {0} de Chorus Hub en {1}
-
-
-
-
- Getting {0}...
-
-
- Obteniendo {0}...
-
-
-
-
- Getting history...
-
-
- Obteniendo historia...
-
-
-
-
- Getting project...
-
-
- Obteniendo el proyecto...
-
-
-
-
- That name contains characters which are not allowed.
-
-
- Ese nombre contiene caracteres que no son permitidos.
-
-
-
-
- Looking for Chorus Hub...
-
-
- Buscando Chorus Hub...
-
-
-
-
- {0} marked the note as {1}.
-
-
- {0} marcó la nota como {1}.
-
-
-
-
- Sorry, the calling program told Chorus to place the new project inside {0}, but that directory does not exist.
-
-
- Lo sentimos, el programa le dijo a Chorus para colocar el nuevo proyecto dentro de {0}, pero el directorio no existe.
-
-
-
- never seen in normal operation
-
- Please report to issues@wesay.org: mono is calling leave() on SettingsView which was never loaded
-
-
- Por favor, envíe un informe a issues@wesay.org: mono está llamando leave() en SettingsView que nunca fue cargado
-
-
-
-
- Sorry, no Chorus Hub was found.
-
-
- Lo sentimos, no se encontraron Chorus Hub.
-
-
-
-
- Sorry, no conflict details are recorded for this conflict (it might be an old one). Here's the content:
-
-
- Lo sentimos, no hay detalles de conflicto se registran para este conflicto (podría ser uno viejo). Aquí está el contenido:
-
-
-
-
- No projects were found on the Usb Flash Drive.
-
-
- No se encontraron proyectos en la unidad flash USB.
-
-
-
-
- Please enter a name
-
-
- Por favor, introduzca un nombre
-
-
-
-
- Please insert a USB Flash Drive...
-
-
- Por favor, inserte una unidad flash USB...
-
-
-
-
- Chorus encounterd a problem while trying to store these addresses:
-
-
- Chorus encuentra un problema al intentar almacenar estas direcciones:
-
-
-
-
- Project
-
-
- Proyecto
-
-
-
-
- There is a already a project with that name at {0}
-
-
- Ya existe un proyecto con ese nombre en {0}
-
-
-
-
- Project will be downloaded to {0}
-
-
- Proyecto se descargará en {0}
-
-
-
-
- The server ({0}) rejected the project name ({1}), user name ({2}), or password ({3}) (sorry, it didn't tell us which one). Make sure that each of these is correct, and that '{2}' is a member of the '{1}' project, with permission to read data.
-
-
- El servidor ({0}) rechazó el nombre del proyecto ({1}), nombre de usuario ({2}) o contraseña ({3}) (lo siento, no nos dice cuál). Asegúrese de que cada uno de ellos es correcta, y que '{2}' es un miembro del proyecto '{1}', con el permiso para leer los datos.
-
-
-
-
- The project {0} is already using this repository.
-
-
- El proyecto {0} ya está utilizando este repositorio.
-
-
-
-
- The project "{0}" on this computer is already using this repository. {1}
-
-
- El proyecto "{0}" en esta computadora ya está utilizando este repositorio. {1}
-
-
-
-
- Repository Paths is being cleared. If you did that on purpose, fine, click 'Yes'. If not, please click 'No' and report this to issues@wesay.org (we're trying to track down a bug).
-
-
- Rutas de repositorios se está borrando. Si lo hizo a propósito, bien, haga clic en 'Sí'. Si no es así, por favor haga clic en "No" y avisa a issues@wesay.org (estamos tratando de rastrear un error).
-
-
-
-
- Select a chorus-enabled project to open:
-
-
- Seleccione un proyecto para abrir lo que está habilitado para chorus:
-
-
-
-
- Select one of the following:
-
-
- Seleccione uno de los siguientes:
-
-
-
-
- The server {0} did not accept the reqest of {1} to clone from {2} using password {3}.
-
-
- El servidor {0} no aceptó la solicitud del {1} para clonar a partir de {2} usando la contraseña {3}.
-
-
-
-
- Chorus settings problem
-
-
- Problema de configuración de Chorus
-
-
-
-
- Success.
-
-
- Éxito.
-
-
-
-
- Error while looking at USB flash drive. The drive root was {0}. The error was: {1}
-
-
- Error mientras mira a la unidad flash USB. La raíz del disco era {0}. El error fue: {1}
-
-
-
-
- Note
-
-
- Nota
-
-
-
-
- You are about leave a Note with an unsaved message. Continue without saving?
-
-
- Vas a dejar una nota con un mensaje que no se guarda. Continuar sin guardar?
-
-
-
-
- Project Notes
-
-
- Notas del proyecto
-
-
-
- Used in place of list for filter status
-
- All
-
-
- Todo
-
-
-
-
- Author
-
-
- Autor
-
-
-
- Combined in list to show filter status (keep short!)
-
- Conflicts
-
-
- Conflictos
-
-
-
-
- Date
-
-
- Fecha
-
-
-
- Combined in list to show filter status (keep short!)
-
- incl. Resolved
-
-
- incluyen resuelto
-
-
-
-
- Label
-
-
- Etiqueta
-
-
-
-
- menuStrip1
-
-
- menuStrip1
-
-
-
- Used in place of list for filter status
-
- Nothing selected to display
-
-
- Nada seleccionado para mostrar
-
-
-
- Combined in list to show filter status (keep short!)
-
- Notifications
-
-
- Notificaciones
-
-
-
- Combined in list to show filter status (keep short!)
-
- Questions
-
-
- Preguntas
-
-
-
-
- Show Closed Notes
-
-
- Mostrar notas cerrados
-
-
-
-
- Show Merge Conflicts
-
-
- Mostrar los conflictos de fusionar
-
-
-
-
- Show Merge Notifications
-
-
- Mostrar notificaciones de fusionar
-
-
-
-
- Show Questions
-
-
- Mostrar preguntas
-
-
-
-
- Advanced Mode
-
-
- Modo avanzado
-
-
-
-
- Review Project Changes
-
-
- Revisar los cambios del proyecto
-
-
-
-
- Chorus Hub
-
-
- Chorus Hub
-
-
-
-
- Internet
-
-
- Internet
-
-
-
-
- Name to show in change history:
-
-
- Nombre para mostrar en la historia de cambios:
-
-
-
-
- Show Chorus Hub as a Send/Receive option
-
-
- Mostrar Chorus Hub como opción para Enviar/Recibir
-
-
-
-
- Show Internet as Send/Receive option
-
-
- Mostrar Internet como opción para Enviar/Recibir
-
-
-
-
- Send/Receive Settings
-
-
- Configuración de Enviar/Recibir
-
-
-
-
- Login
-
-
- Inicio de sesión
-
-
-
-
- Password
-
-
- Contraseña
-
-
-
-
- Project ID
-
-
- ID del proyecto
-
-
-
-
- Server
-
-
- Servidor
-
-
-
-
- Show characters
-
-
- Mostrar caracteres
-
-
-
-
- URL
-
-
- URL
-
-
-
-
- Send/Receive Server Settings...
-
-
- Configuración del servidor de Enviar/Recibir...
-
-
-
-
- Choose Repositories
-
-
- Seleccionar repositorios
-
-
-
-
- Log
-
-
- Registro
-
-
-
-
- Box:Verbose:
-
-
- Caja:Detallado:
-
-
-
-
- Attempt to Send/Receive with these people, devices, and servers:
-
-
- Intente Enviar/Recibir con estas personas, dispositivos y servidores:
-
-
-
-
- Send/Receive
-
-
- Enviar/Recibir
-
-
-
-
- Tasks
-
-
- Tareas
-
-
-
-
- Send/Receive
-
-
- Enviar/Recibir
-
-
-
-
- Send/Receive Project Changes
-
-
- Enviar/recibir cambios al proyecto
-
-
-
-
- Checking...
-
-
- Verificando...
-
-
-
-
- Label this point in the project history (Optional) :
-
-
- Marque este punto en la historia del proyecto (opcional):
-
-
-
-
- Diagnostics
-
-
- Diagnósticos
-
-
-
-
- &Internet
-
-
- &Internet
-
-
-
-
- &Chorus Hub
-
-
- &Chorus Hub
-
-
-
-
- &USB Flash Drive
-
-
- &Unidad flash USB
-
-
-
-
- &Download
-
-
- &Descargar
-
-
-
-
- Name for the folder on your computer
-
-
- Nombre de la carpeta en su computadora
-
-
-
-
- copy to clipboard
-
-
- copiar al portapapeles
-
-
-
-
- Run Diagnostics
-
-
- Ejecutar diagnósticos
-
-
-
-
- label1
-
-
- label1
-
-
-
-
diff --git a/DistFiles/localizations/Chorus.fr.tmx b/DistFiles/localizations/Chorus.fr.tmx
deleted file mode 100644
index c72270982..000000000
--- a/DistFiles/localizations/Chorus.fr.tmx
+++ /dev/null
@@ -1,1432 +0,0 @@
-
-
-
-
-
-
- &Add && &OK
-
-
- &Ajouter et OK
-
-
-
-
- &Cancel
-
-
- Annuler
-
-
-
-
- &Add Message
-
-
- &Ajouter message
-
-
-
-
- Add new message:
-
-
- Ajouter nouveau message :
-
-
-
-
- &Resolve Note
-
-
- &Résoudre remarque
-
-
-
-
- Un&resolve Note
-
-
- &Rouvrir remarque
-
-
-
-
- &Resolve Note
-
-
- &Résoudre remarque
-
-
-
-
- Normal
-
-
- Normal
-
-
-
-
- Raw
-
-
- Brut
-
-
-
-
- Action
-
-
- Action
-
-
-
-
- Item
-
-
- Élément
-
-
-
-
- Type
-
-
- Type
-
-
-
-
- &Cancel
-
-
- &Annuler
-
-
-
-
- &Close
-
-
- &Fermer
-
-
-
-
- Error
-
-
- Erreur
-
-
-
-
- Help
-
-
- Aide
-
-
-
-
- &OK
-
-
- &OK
-
-
-
-
- Please confirm
-
-
- Veuillez confirmer
-
-
-
-
- Problem
-
-
- Problème
-
-
-
-
- Ambiguous Insert Warning
-
-
- Avertissement d'insertion ambiguë
-
-
-
-
- {0} and {1} both inserted material in this element in the same place. The automated merger cannot be sure of the correct order for the inserted material, but kept both of them.
-
-
- {0} et {1} ont tous les deux inséré des données au même endroit dans cet élément. La fusion automatique ne peut pas être sûre de l'ordre correct pour les données insérées, mais elle a gardé les deux insertions.
-
-
-
-
- Ambiguous Insert Reorder Warning
-
-
- Avertissement de réorganisation ambiguë
-
-
-
-
- {0} inserted material in this element, but {1} re-ordered things. The automated merger cannot be sure of the correct position for the inserted material.
-
-
- {0} a inséré des données dans cet élément, mais {1} a réorganisé des choses. La fusion automatique ne peut pas être sûre de la position correcte pour les données insérées.
-
-
-
- Used in place of a user name when we don't have one
-
- Another user
-
-
- un autre utilisateur
-
-
-
-
- Both Added Attribute Conflict
-
-
- Conflit de deux ajouts d'attribut
-
-
-
-
- Two users both moved something, but to different locations
-
-
- Deux utilisateurs ont déplacé quelque chose, mais à différents endroits
-
-
-
-
- {0} and {1} added the same element, but with different content.
-
-
- {0} et {1} ont ajouté le même élément, mais avec un contenu différent.
-
-
-
-
- Both added the same element, but with different content conflict
-
-
- Conflit de deux ajouts du même élément, mais avec un contenu différent
-
-
-
-
- Both Added Xml Text Conflict
-
-
- Conflit de deux ajouts de texte XML
-
-
-
-
- {0} and {1} added different text to this element.
-
-
- {0} et {1} ont ajouté des textes différents à cet élément.
-
-
-
- atomic in this context means indivisible; we don't know how to merge changes to different parts of it
-
- Both Edited the Same Atomic Element
-
-
- Les deux ont modifié le même élément indivisible
-
-
-
-
- Both Edited Attribute Conflict
-
-
- Conflit de deux modifications d'attribut
-
-
-
-
- Both Edited Different Parts Of Dependent Pieces Of Data Warning
-
-
- Avertissement de deux modifications des parties différentes de données dépendantes
-
-
-
-
- {0} edited one part of this element, while {1} edited another part. Since these two pieces of data are thought to be dependent on each other, someone needs to verify that the resulting merge is ok.
-
-
- {0} a modifié une partie de cet élément, tandis que {1} a modifié une autre partie. Étant donné que ces deux éléments de données sont considérés comme dépendants les uns des autres, quelqu'un doit vérifier la fusion.
-
-
-
-
- Both edited a text field conflict
-
-
- Conflit de deux modifications d'un champ texte
-
-
-
-
- Both Edited Xml Text Element Conflict
-
-
- Conflit de deux modifications d'un élément texte XML
-
-
-
-
- {0} and {1} edited this element.
-
-
- {0} et {1} ont modifié cet élément.
-
-
-
-
- Both Reordered Conflict
-
-
- Conflit de deux réorganisations
-
-
-
-
- {0} and {1} both re-ordered the children of this element in different ways.
-
-
- {0} et {1} ont tous les deux reorganisé les enfants de cet élément de manières différentes.
-
-
-
- this phrase is inserted as a desciption of 'who won', in a case where we were able to keep both changes
-
- both users
-
-
- tous les deux
-
-
-
-
- The system does not know how to interpret this conflict report.
-
-
- Le système ne sait pas comment interpréter ce rapport de conflit.
-
-
-
- {0} is Conflict.BothAddedDesc
-
- {0}: A copy was made so that the object can be in both places.
-
-
- {0}: une copie a été créée afin que l'objet puisse être aux deux endroits.
-
-
-
- {0} and {1} are user names
-
- {0} deleted this element, while {1} edited it.
-
-
- {0} a supprimé cet élément, tandis que {1} l'a modifié.
-
-
-
- {0} is a general description of the conflict, {1} gives more detail, {2} says how it was resolved
-
- {0} ({1}): {2}
-
-
- {0} ({1}): {2}
-
-
-
- A version of 'who won' used when we don't know
-
- Dunno
-
-
- Inconnu
-
-
-
- string used in place of element content when the element is missing
-
- (empty)
-
-
- (vide)
-
-
-
-
- Both Inserted at different places Conflict
-
-
- Conflit de deux insértions à différents endroits
-
-
-
-
- {0} and {1} both added the same children to this element in different places.
-
-
- {0} et {1} ont tous les deux ajouté les mêmes enfants à cet élément mais à différents endroits.
-
-
-
- {0} is a person's ID, typically a name
-
- The merger kept the change made by {0}.
-
-
- La fusion a retenu la modification apportée par {0}.
-
-
-
- default description of less serious conflicts; possibly never seen
-
- Merge Warning
-
-
- Avertissement de fusion
-
-
-
- Used as the name of an agent responsible for a change (that is, one made by the merge process itself)
-
- merger
-
-
- la fusion
-
-
-
- Used in place of a user name when we don't have one
-
- One user
-
-
- un utilisateur
-
-
-
-
- Removed Vs Edited Attribute Conflict
-
-
- Conflit entre suppression et modification d'un attribut
-
-
-
-
- Removed Vs Edited Element Conflict
-
-
- Conflit entre suppression et modification d'un élément
-
-
-
- {0} and {1} are user names, {2} describes who won
-
- {0} deleted this element, while {1} edited it. {2}
-
-
- {0} a supprimé cet élément, tandis que {1} l'a modifié. {2}
-
-
-
-
- Removed Vs Edited Xml Text Element Conflict
-
-
- Conflit entre suppression et modification d'un élément texte XML
-
-
-
-
- {0} deleted this element, while {1} edited its text content. {2}
-
-
- {0} a supprimé cet élément, tandis que {1} a modifié le texte de son contenu. {2}
-
-
-
- {0} and {3} are names; {1}, {2}, and {4} are data; {5} is a sentence saying which change won
-
- {0} changed {1} to {2}, while {3} changed it to {4}. {5}
-
-
- {0} a changé {1} à {2}, tandis que {3} l'a changé à {4}. {5}
-
-
-
- {0} is a user ID; this string labels a block of text with changes highlighted
-
- {0}'s changes:
-
-
- les modifications de {0} :
-
-
-
- {0} is a user ID; this string labels his version, when we were not able to highlight changes
-
- {0}'s version:
-
-
- la version de {0} :
-
-
-
-
- Technical Details
-
-
- Détails techniques
-
-
-
-
- Copy
-
-
- Copier
-
-
-
-
- Edit
-
-
- Modifier
-
-
-
-
- Conflict Details
-
-
- Détails de conflit
-
-
-
-
- Warning
-
-
- Avertissement
-
-
-
-
- Duplicate Project--Get operation cancelled
-
-
- Projet dupliqué--opération annulée
-
-
-
-
- Get
-
-
- Recevoir
-
-
-
-
- Get Project from Chorus Hub
-
-
- Recevoir un projet de Chorus Hub
-
-
-
-
- Project
-
-
- Projet
-
-
-
-
- &Fix Settings
-
-
- Corriger la configuration
-
-
-
-
- Get Project From Internet
-
-
- Recevoir un projet de l'Internet
-
-
-
-
- &Copy To Computer
-
-
- &Copier vers l'ordinateur
-
-
-
-
- Get Project From USB Drive
-
-
- Recevoir un projet d'une clé USB
-
-
-
-
- Name
-
-
- Nom
-
-
-
-
- Modified Date
-
-
- Date de modification
-
-
-
-
- &Chorus Hub
-
-
- &Chorus Hub
-
-
-
-
- &Internet
-
-
- &Internet
-
-
-
-
- &USB Flash Drive
-
-
- Clé &USB
-
-
-
-
- Receive project
-
-
- Recevoir projet
-
-
-
-
- Add new question
-
-
- Ajouter une nouvelle question
-
-
-
-
- Cancelled.
-
-
- Annulé.
-
-
-
-
- A serious problem has occurred; Chorus cannot find the repository which owns this note, so it cannot be saved.
-
-
- Un problème grave est survenu ; Chorus ne peut pas trouver le dépôt qui possède cette remarque, donc on ne peut pas la sauvegarder.
-
-
-
-
- You can't get a project from a colleague at present, because some required information about the projects you already have is unavailable. This may be because you don't have permission to access a file in one of the projects in {0}.\n\nYou will probably need technical support to resolve this problem. The following information may be helpful to tech support:
-
-
- Vous ne pouvez pas recevoir un projet d'un collègue à ce point, parce que certains informations obligatoires sur les projets que vous avez déjà ne sont pas disponibles. C'est peut-être parce que vous n'avez pas l'autorisation d'accéder à un fichier dans l'un des projets dans {0}.\n\nVous aurez probablement besoin d'une assistance technique pour résoudre ce problème. Les informations suivantes peuvent être utiles au support technique :
-
-
-
-
- Cannot get project
-
-
- Impossible de recevoir le projet
-
-
-
-
- Found Chorus Hub but it is not compatible with this version of {0}
-
-
- Chorus Hub trouvé, mais il n'est pas compatible avec cette version de {0}
-
-
-
-
- The Chorus Server is not compatible with ths client.
-
-
- Le serveur Chorus n'est pas compatible avec ce client.
-
-
-
-
- The Chorus Server is not available.
-
-
- Le serveur Chorus n'est pas disponible.
-
-
-
-
- Copying project
-
-
- Copie du projet en cours
-
-
-
-
- Could not change the name to that.
-
-
- Impossible de faire ce changement de nom.
-
-
-
-
- Custom Location...
-
-
- Emplacement personnalisé...
-
-
-
-
- Sorry, conflict details aren't working for this conflict (it might be an old one). Here's the content:
-
-
- Désolé, les détails de conflit ne fonctionnent pas pour ce conflit (peut-être il est un ancien). Voici le contenu :
-
-
-
-
- The directory {0} doesn't exist, but should have been created by the application.
-
-
- Le dossier {0} n'existe pas, mais le logiciel aurait dû le créer.
-
-
-
-
- Done.
-
-
- Terminé.
-
-
-
-
- A project with this name already exists on this computer.
-
-
- Un projet portant ce nom existe déjà sur cet ordinateur.
-
-
-
-
- For example, 'Swahili Project'
-
-
- Par exemple, 'Projet Swahili'
-
-
-
-
- Failed.
-
-
- Échoué.
-
-
-
-
- Finished
-
-
- Terminé
-
-
-
-
- Finished copying {0} to this computer at {1}
-
-
- La copie de {0} vers cet ordinateur a terminé à {1}
-
-
-
-
- Get {0} from Chorus Hub on {1}
-
-
- Recevoir {0} à partir de Chorus Hub sur {1}
-
-
-
-
- Getting {0}...
-
-
- En train de recevoir {0}...
-
-
-
-
- Getting history...
-
-
- En train de recevoir l'histoire...
-
-
-
-
- Getting project...
-
-
- En train de recevoir le projet...
-
-
-
-
- That name contains characters which are not allowed.
-
-
- Ce nom contient des caractères qui ne sont pas autorisés.
-
-
-
-
- Looking for Chorus Hub...
-
-
- À la recherche de Chorus Hub...
-
-
-
-
- {0} marked the note as {1}.
-
-
- {0} a marqué la remarque comme {1}.
-
-
-
-
- Sorry, the calling program told Chorus to place the new project inside {0}, but that directory does not exist.
-
-
- Désolé, le logiciel qui a invoqué Chorus a dit de placer le nouveau projet dans le dossier {0}, mais ce dossier n'existe pas.
-
-
-
- never seen in normal operation
-
- Please report to issues@wesay.org: mono is calling leave() on SettingsView which was never loaded
-
-
- Veuillez signaler à issues@wesay.org : "mono is calling leave() on SettingsView which was never loaded"
-
-
-
-
- Sorry, no Chorus Hub was found.
-
-
- Désolé, aucun Chorus Hub a été trouvé.
-
-
-
-
- Sorry, no conflict details are recorded for this conflict (it might be an old one). Here's the content:
-
-
- Désolé, aucun détail de conflit n'est enregistré pour ce conflit (peut-être il est un ancien). Voici le contenu :
-
-
-
-
- No projects were found on the Usb Flash Drive.
-
-
- Aucun projet n'était trouvé sur la clé USB.
-
-
-
-
- Please enter a name
-
-
- Veuillez entrer un nom
-
-
-
-
- Please insert a USB Flash Drive...
-
-
- Veuillez insérer une clé USB...
-
-
-
-
- Chorus encounterd a problem while trying to store these addresses:
-
-
- Chorus a rencontré un problème en essayant d'enregistrer ces adresses :
-
-
-
-
- Project
-
-
- Projet
-
-
-
-
- There is a already a project with that name at {0}
-
-
- Un projet avec ce nom existe déjà à {0}
-
-
-
-
- Project will be downloaded to {0}
-
-
- Le projet sera téléchargé à {0}
-
-
-
-
- The server ({0}) rejected the project name ({1}), user name ({2}), or password ({3}) (sorry, it didn't tell us which one). Make sure that each of these is correct, and that '{2}' is a member of the '{1}' project, with permission to read data.
-
-
- Le serveur ({0}) a rejeté le nom du projet ({1}), le nom d'utilisateur ({2}) ou le mot de passe ({3}). (Désolé, il n'a pas nous dit lequel.) Il faut vérifier que chacun est correcte, et que '{2}' est un membre du projet '{1}', avec l'autorisation de lire les données.
-
-
-
-
- The project {0} is already using this repository.
-
-
- Le projet {0} utilise déjà ce dépôt.
-
-
-
-
- The project "{0}" on this computer is already using this repository. {1}
-
-
- Le projet "{0}" sur cet ordinateur utilise déjà ce dépôt. {1}
-
-
-
-
- Repository Paths is being cleared. If you did that on purpose, fine, click 'Yes'. If not, please click 'No' and report this to issues@wesay.org (we're trying to track down a bug).
-
-
- 'Repository Paths' sera vider. Si vous avez l'intention de le faire, veuillez cliquer sur 'Oui'. Sinon, veuillez cliquer sur 'Non' et signaler ce problème à issues@wesay.org (nous essayons de traquer un bogue).
-
-
-
-
- Select a chorus-enabled project to open:
-
-
- Sélectionner un projet compatible avec Chorus à ouvrir :
-
-
-
-
- Select one of the following:
-
-
- Sélectionner l'une des opérations suivantes :
-
-
-
-
- The server {0} did not accept the reqest of {1} to clone from {2} using password {3}.
-
-
- Le serveur {0} n'a pas accepté la demande de {1} pour cloner à partir de {2} en utilisant le mot de passe {3}.
-
-
-
-
- Chorus settings problem
-
-
- Problème de configuration de Chorus
-
-
-
-
- Success.
-
-
- Succès.
-
-
-
-
- Error while looking at USB flash drive. The drive root was {0}. The error was: {1}
-
-
- Erreur en regardant une clé USB. La racine était {0}. L'erreur était : {1}
-
-
-
-
- Note
-
-
- Remarque
-
-
-
-
- You are about leave a Note with an unsaved message. Continue without saving?
-
-
- Vous êtes sur le point de fermer une remarque avec un message non enregistrée. Continuer sans enregistrer ?
-
-
-
-
- Project Notes
-
-
- Remarques du projet
-
-
-
- Used in place of list for filter status
-
- All
-
-
- Toutes
-
-
-
-
- Author
-
-
- Auteur
-
-
-
- Combined in list to show filter status (keep short!)
-
- Conflicts
-
-
- Conflits
-
-
-
-
- Date
-
-
- Date
-
-
-
- Combined in list to show filter status (keep short!)
-
- incl. Resolved
-
-
- avec Résolue
-
-
-
-
- Label
-
-
- Étiquette
-
-
-
- Used in place of list for filter status
-
- Nothing selected to display
-
-
- Aucune sélection de l'affichage
-
-
-
- Combined in list to show filter status (keep short!)
-
- Notifications
-
-
- Notifications
-
-
-
- Combined in list to show filter status (keep short!)
-
- Questions
-
-
- Questions
-
-
-
-
- Show Closed Notes
-
-
- Afficher les remarques fermées
-
-
-
-
- Show Merge Conflicts
-
-
- Afficher les conflits de fusion
-
-
-
-
- Show Merge Notifications
-
-
- Afficher les notifications de fusion
-
-
-
-
- Show Questions
-
-
- Afficher les questions
-
-
-
-
- Advanced Mode
-
-
- Mode avancé
-
-
-
-
- Review Project Changes
-
-
- Examiner les modifications au projet
-
-
-
-
- Chorus Hub
-
-
- Chorus Hub
-
-
-
-
- Internet
-
-
- Internet
-
-
-
-
- Name to show in change history:
-
-
- Nom à afficher dans l'historique :
-
-
-
-
- Show Chorus Hub as a Send/Receive option
-
-
- Afficher Chorus Hub comme une option d'Envoyer/recevoir
-
-
-
-
- Show Internet as Send/Receive option
-
-
- Afficher Internet comme une option d'Envoyer/recevoir
-
-
-
-
- Send/Receive Settings
-
-
- Configuration d'Envoyer/recevoir
-
-
-
-
- Login
-
-
- Identifiant
-
-
-
-
- Password
-
-
- Mot de passe
-
-
-
-
- Project ID
-
-
- ID de projet
-
-
-
-
- Server
-
-
- Serveur
-
-
-
-
- Show characters
-
-
- Afficher les caractères
-
-
-
-
- URL
-
-
- URL
-
-
-
-
- Send/Receive Server Settings...
-
-
- Paramètres de serveur de envoyer/recevoir
-
-
-
-
- Choose Repositories
-
-
- Chosir des dépôts
-
-
-
-
- Log
-
-
- Journal
-
-
-
-
- Box:Verbose:
-
-
- Détaillé :
-
-
-
-
- Attempt to Send/Receive with these people, devices, and servers:
-
-
- Essayer d'Envoyer/recevoir avec ces gens, périphériques et serveurs :
-
-
-
-
- Send/Receive
-
-
- Envoyer/recevoir
-
-
-
-
- Tasks
-
-
- Tâches
-
-
-
-
- Send/Receive
-
-
- Envoyer/recevoir
-
-
-
-
- Send/Receive Project Changes
-
-
- Changements de projet de envoyer/recevoir
-
-
-
-
- Checking...
-
-
- Vérification...
-
-
-
-
- Label this point in the project history (Optional) :
-
-
- Étiqueter ce point dans l'historique du projet (facultatif) :
-
-
-
-
- Diagnostics
-
-
- Diagnostics
-
-
-
-
- &Internet
-
-
- &Internet
-
-
-
-
- &Chorus Hub
-
-
- &Chorus Hub
-
-
-
-
- &USB Flash Drive
-
-
- Clé &USB
-
-
-
-
- &Download
-
-
- Télécharger
-
-
-
-
- Name for the folder on your computer
-
-
- Nom du dossier sur votre ordinateur
-
-
-
-
- copy to clipboard
-
-
- Copier dans le Presse-papiers
-
-
-
-
- Run Diagnostics
-
-
- Lancer des diagnostics
-
-
-
-
diff --git a/DistFiles/localizations/Chorus.zh-CN.tmx b/DistFiles/localizations/Chorus.zh-CN.tmx
deleted file mode 100644
index 9200eb82a..000000000
--- a/DistFiles/localizations/Chorus.zh-CN.tmx
+++ /dev/null
@@ -1,178 +0,0 @@
-
-
-
-
-
-
- Cancel
-
-
- 取消(&C)
-
-
-
-
- &Close
-
-
- 关闭 (&C)
-
-
-
-
- Error
-
-
- 错误
-
-
-
-
- Help
-
-
- 帮助
-
-
-
-
- OK
-
-
- 确定(&O)
-
-
-
-
- Please confirm
-
-
- 确定
-
-
-
-
- Problem
-
-
- 问题
-
-
-
-
- Project
-
-
- 项目
-
-
-
-
- Label
-
-
- 标签
-
-
-
- Combined in list to show filter status (keep short!)
-
- Questions
-
-
- 问题
-
-
-
-
- Internet
-
-
- 互联网
-
-
-
-
- Name to show in change history:
-
-
- 要在更改历史记录中显示的名称:
-
-
-
-
- Show Chorus Hub as a Send/Receive option
-
-
- 显示ChorusHub作为一个发送/接收选项
-
-
-
-
- Show Internet as Send/Receive option
-
-
- 显示互联网作为发送/接收选项
-
-
-
-
- Send/Receive Settings
-
-
- 发送/接收设置
-
-
-
-
- Login
-
-
- 登入
-
-
-
-
- Password
-
-
- 密码
-
-
-
-
- Project ID
-
-
- 项目 ID
-
-
-
-
- Show characters
-
-
- 显示字符
-
-
-
-
- Send/Receive
-
-
- 发送/接受
-
-
-
-
- Send/Receive
-
-
- 发送/接受
-
-
-
-
diff --git a/README.md b/README.md
index 35153cb63..871bdf4df 100644
--- a/README.md
+++ b/README.md
@@ -69,13 +69,13 @@ The following list of features should help you understand why we built this laye
any piece of data, and to carry on conversations about the data until they mark the
note as "resolved".
-### Status
+## Status
Chorus is functional and being used in several applications with different development teams.
However, we are not really interested in supporting
any further uses until things mature and someone writes good developer documentation.
-Documentation (what little exists) drips out in the form of occasional blogs
-[here](http://chorussr.wordpress.com/).
+Documentation (what little exists) was kept on [this blog](http://chorussr.wordpress.com/),
+which contains three posts from August 2009.
## Testers
@@ -128,4 +128,8 @@ Further instructions at https://github.com/sillsdev/libpalaso/wiki/Developing-wi
### Debugging LibChorus in client projects
-Copy `src/LibChorus/Properties/launchSettings.json.sample` to `launchSettings.json`; verify paths to executables and in arguments.
\ No newline at end of file
+Copy `src/LibChorus/Properties/launchSettings.json.sample` to `launchSettings.json`; verify paths to executables and in arguments.
+
+### Localization
+
+Chorus is localized with [L10NSharp](https://github.com/sillsdev/l10nsharp). Chorus-specific documentation is under `l10n/README.md`.
diff --git a/l10n/README.md b/l10n/README.md
new file mode 100644
index 000000000..bb67e6304
--- /dev/null
+++ b/l10n/README.md
@@ -0,0 +1,36 @@
+## Chorus Localization
+
+### Using localizations in a project
+
+1. Add a Nuget dependency on SIL.Chorus.l10ns to the project where you initialize the L10nSharp `LocalizationManager`
+2. Add a build step to copy the Chorus.%langcode%.xlf files to the correct folder in your project
+
+### Updating Crowdin with source string changes (automatic)
+
+On each commit to `master`, a GitHub Action runs to
+- Download the current `Chorus.en.xlf` from Crowdin.
+ (L10NSharp.ExtractXliff version 7.0.0-beta0011 fails to extract all strings, as not all are internationalized.
+ Merging into the existing file is easier than fixing 195 uninternationalized strings.)
+- Extract all internationalized strings from all Chorus projects to `Chorus.en.xlf`
+- Upload Chorus.en.xlf to [Crowdin](https://crowdin.com/project/sil-common-libraries)
+
+See `../.github/workflows/l10n-source.yml`
+
+It can also be run manually as follows (requires the [Crowdin CLI](https://crowdin.github.io/crowdin-cli/)):
+```
+crowdin download sources -T CROWDIN_ACCESS_TOKEN
+msbuild l10n.proj /t:UpdateCrowdin
+crowdin upload sources -T CROWDIN_ACCESS_TOKEN
+```
+
+### Building a NuGet package with the latest translations
+
+This process is run by a github action whenever a version tag is pushed and manually as needed
+(See `../.github/workflows/l10n-packaging.yml`)
+
+It can also be run manually as follows (requires the [Crowdin CLI](https://crowdin.github.io/crowdin-cli/)):
+```
+crowdin download --all -T CROWDIN_ACCESS_TOKEN
+msbuild l10n.proj /t:PackageL10ns
+nuget push -ApiKey TheSilNugetApiKey SIL.Chorus.l10n.nupkg
+```
\ No newline at end of file
diff --git a/l10n/crowdin.yml b/l10n/crowdin.yml
new file mode 100644
index 000000000..f0bf84326
--- /dev/null
+++ b/l10n/crowdin.yml
@@ -0,0 +1,10 @@
+project_id: 393909
+base_path: "."
+preserve_hierarchy: true
+
+files: [
+ {
+ "source" : "Chorus.en.xlf",
+ "translation" : "/%locale%/Chorus.%locale%.xlf",
+ }
+]
\ No newline at end of file
diff --git a/l10n/l10n.proj b/l10n/l10n.proj
new file mode 100644
index 000000000..6754c84ff
--- /dev/null
+++ b/l10n/l10n.proj
@@ -0,0 +1,57 @@
+
+
+
+
+ netframework4.8
+ SIL.Chorus.l10ns
+ $(GitVersion_NuGetVersion)
+ Jason Naylor
+ SIL International
+ true
+ false
+
+
+
+
+ All
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/l10n/l10ns.nuspec b/l10n/l10ns.nuspec
new file mode 100644
index 000000000..1fca271db
--- /dev/null
+++ b/l10n/l10ns.nuspec
@@ -0,0 +1,16 @@
+
+
+
+ SIL.Chorus.l10ns
+ $version$
+ These are the xlif localizations of Chorus and its libraries.
+ It includes the localizations of all the SIL packages built from https://github.com/sillsdev/chorus
+ Jason Naylor
+ MIT
+ https://github.com/sillsdev/chorus
+ Copyright © 2010-2023 SIL International
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Chorus/UI/Notes/AnnotationEditorView.Designer.cs b/src/Chorus/UI/Notes/AnnotationEditorView.Designer.cs
index 11e5f1c45..ed4b06c8f 100644
--- a/src/Chorus/UI/Notes/AnnotationEditorView.Designer.cs
+++ b/src/Chorus/UI/Notes/AnnotationEditorView.Designer.cs
@@ -1,4 +1,4 @@
-using SIL.Windows.Forms.HtmlBrowser;
+using SIL.Windows.Forms.HtmlBrowser;
namespace Chorus.UI.Notes
{
@@ -55,7 +55,7 @@ private void InitializeComponent()
//
this._okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.l10NSharpExtender1.SetLocalizableToolTip(this._okButton, null);
- this.l10NSharpExtender1.SetLocalizationComment(this._okButton, null);
+ this.l10NSharpExtender1.SetLocalizationComment(this._okButton, "DO NOT LOCALIZE: this placeholder text is replaced when the dialog is displayed");
this.l10NSharpExtender1.SetLocalizingId(this._okButton, "AnnotationEditorView.Add");
this._okButton.Location = new System.Drawing.Point(159, 389);
this._okButton.Name = "_okButton";
@@ -88,7 +88,7 @@ private void InitializeComponent()
this._closeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.l10NSharpExtender1.SetLocalizableToolTip(this._closeButton, null);
this.l10NSharpExtender1.SetLocalizationComment(this._closeButton, null);
- this.l10NSharpExtender1.SetLocalizingId(this._closeButton, "AnnotationEditorView.AddAndOk");
+ this.l10NSharpExtender1.SetLocalizingId(this._closeButton, "Common.Cancel");
this._closeButton.Location = new System.Drawing.Point(255, 389);
this._closeButton.Name = "_closeButton";
this._closeButton.Size = new System.Drawing.Size(63, 23);
diff --git a/src/Chorus/UI/Notes/AnnotationEditorView.cs b/src/Chorus/UI/Notes/AnnotationEditorView.cs
index 8217010ac..4c869606b 100644
--- a/src/Chorus/UI/Notes/AnnotationEditorView.cs
+++ b/src/Chorus/UI/Notes/AnnotationEditorView.cs
@@ -123,12 +123,6 @@ private void AnnotationView_Load(object sender, EventArgs e)
_existingMessagesDisplay.ScrollLastElementIntoView();
}
- private void OnBrower_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
- {
- WebBrowser x = sender as WebBrowser;
- x.Document.BackColor = this.BackColor;
- }
-
private void _existingMessagesDisplay_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
if (e.Url.Scheme == "about" || e.Url.Scheme == "file")
diff --git a/src/LibChorusTests/notes/AnnotationRepositoryTests.cs b/src/LibChorusTests/notes/AnnotationRepositoryTests.cs
index fcfac9dc7..946b3fffc 100644
--- a/src/LibChorusTests/notes/AnnotationRepositoryTests.cs
+++ b/src/LibChorusTests/notes/AnnotationRepositoryTests.cs
@@ -214,6 +214,7 @@ public void AddAnnotation_NotifiesIndices()
}
}
+ // JohnT (2020.03), RE: https://jira.sil.org/browse/LT-20074
// I'm not very happy with this test. It's more integration than unit test. It might be flaky,
// if some build agent's file system is slow to send file modification notifications.
// It doesn't guarantee that both the guards against sending notifications for our own Saves
@@ -223,7 +224,7 @@ public void AddAnnotation_NotifiesIndices()
// the setup of the watcher or the code in Save that tries to prevent the notifications at all,
// which is more than half the code this test wants to exercise.
[Test]
- [Category("SkipOnBuildServer")]
+ [Platform(Exclude = "Win", Reason = "flaky (on both platforms)")]
public void ExternalFileModification_NotifiesIndices_ButSaveDoesNot()
{
const int SleepTime = 10; // milliseconds