diff --git a/app/gui/images/app.icns b/app/gui/images/app.icns
index e86ef04b74..ccaf5fd25d 100644
Binary files a/app/gui/images/app.icns and b/app/gui/images/app.icns differ
diff --git a/app/gui/images/app.ico b/app/gui/images/app.ico
index 4780240e11..f90d6c2710 100644
Binary files a/app/gui/images/app.ico and b/app/gui/images/app.ico differ
diff --git a/app/gui/images/tutorial b/app/gui/images/tutorial
index 65e5d237d1..b796f240e9 120000
--- a/app/gui/images/tutorial
+++ b/app/gui/images/tutorial
@@ -1 +1 @@
-../../../../etc/doc/images/tutorial
\ No newline at end of file
+../../../etc/doc/images/tutorial
diff --git a/app/gui/lang/sonic-pi_es.ts b/app/gui/lang/sonic-pi_es.ts
index 167a968224..78d9477a1b 100644
--- a/app/gui/lang/sonic-pi_es.ts
+++ b/app/gui/lang/sonic-pi_es.ts
@@ -306,12 +306,12 @@ Obtén Sonic Pi %1
Auto Indent mode enabled
-
+ Modo de indentación automática habilitadoAuto Indent mode disabled
-
+ Modo de indentación automática deshabilitado
@@ -347,258 +347,258 @@ Obtén Sonic Pi %1
Comment/Uncomment code
-
+ Comentar/Descomentar códigoTranspose Characters
-
+ Transponer caracteresShift Line or Selection Up
-
+ Desplazar línea o selección hacia arribaShift Line or Selection Down
-
+ Desplazar línea o selección hacia abajoMove Cursor Down
-
+ Mover cursor hacia abajoMove Cursor Up
-
+ Mover cursor hacia arribaMove Cursor Down 10 Lines
-
+ Mover cursor 10 líneas hacia abajoMove Cursor Up 10 Lines
-
+ Mover cursor 10 líneas hacia arribaCut to the end of the line
-
+ Cortar hasta el final de la líneaCopy the current selection
-
+ Copiar la selección actualCut the current selection
-
+ Cortar la selección actualPaste the current selection
-
+ Pegar la selección actualMove Cursor Right
-
+ Mover cursor a la derechaMove Cursor Left
-
+ Mover cursor a la izquierdaDelete Right
-
+ Eliminar a la derechaDelete Left
-
+ Eliminar a la izquierdaMove Cursor to Start of Line
-
+ Mover cursor al inicio de la líneaMove Cursor to End of Line
-
+ Mover cursor al final de la líneaMove Cursor to Start of Document
-
+ Mover cursor al inicio del documentoMove Cursor to End of Document
-
+ Mover cursor al final del documentoMove Cursor Right by Word
-
+ Mover cursor una palabra a la derechaMove Cursor Left by Word
-
+ Mover cursor una palabra a la izquierdaUndo the last action
-
+ Deshacer la última acciónRedo the last undo
-
+ Rehacer lo último deshechoSelect all text
-
+ Seleccionar todo el textoDelete word to the right
-
+ Eliminar palabra a la derechaDelete word to the left
-
+ Eliminar palabra a la izquierdaUppercase word or selection
-
+ Convertir palabra o selección a mayúsculasLowercase word or selection
-
+ Convertir palabra o selección a minúsculasSet a mark in the text
-
+ Establecer una marca en el textoLook up documentation for the current word
-
+ Buscar documentación para la palabra actualCycle through the available colour themes
-
+ Cambiar entre los temas de color disponiblesSwitch to the previous tab
-
+ Cambiar a la pestaña anteriorSwitch to the next tab
-
+ Cambiar a la siguiente pestañaSwitch to tab 1
-
+ Cambiar a pestaña 1Switch to tab 2
-
+ Cambiar a pestaña 2Switch to tab 3
-
+ Cambiar a pestaña 3Switch to tab 4
-
+ Cambiar a pestaña 4Switch to tab 5
-
+ Cambiar a pestaña 5Switch to tab 6
-
+ Cambiar a pestaña 6Switch to tab 7
-
+ Cambiar a pestaña 7Switch to tab 8
-
+ Cambiar a pestaña 8Switch to tab 9
-
+ Cambiar a pestaña 9Switch to tab 0
-
+ Cambiar a pestaña 0Place focus on the logs
-
+ Colocar el foco en los registrosShow or hide the buttons
-
+ Mostrar u ocultar los botonesShow or hide the cue log
-
+ Mostrar u ocultar el registro de señalesShow or hide the log
-
+ Mostrar u ocultar el registroZoom in the log
-
+ Ampliar el registroZoom out the log
-
+ Reducir el registroToggle fullscreen mode
-
+ Alternar modo de pantalla completa
@@ -618,45 +618,45 @@ Obtén Sonic Pi %1
Sonic Pi - Unable to Write to Home Directory
-
+ Sonic Pi - No se puede escribir en el directorio de inicioBoot Error - Home Dir not writable:
-
+ Error de arranque - Directorio de inicio no escribible:Quick Fix: set the environment variable SONIC_PI_HOME to a directory you have permission to write to.
-
+ Solución rápida: configure la variable de entorno SONIC_PI_HOME a un directorio donde tenga permisos de escritura.For the curious among you, Sonic Pi automatically stores the contents of the code buffers, configuration files and logs in a folder called .sonic-pi which typically resides in your home directory.
-
+ Para los curiosos, Sonic Pi almacena automáticamente el contenido de los buffers de código, archivos de configuración y registros en una carpeta llamada .sonic-pi que normalmente reside en su directorio de inicio.Unfortunately you don't appear to have permission to write to your home directory:
-
+ Desafortunadamente, parece que no tiene permiso para escribir en su directorio de inicio:To fix this you can set the environment variable SONIC_PI_HOME to any directory you have write access to and Sonic Pi will place its .sonic-pi directory within that.
-
+ Para solucionar esto, puede configurar la variable de entorno SONIC_PI_HOME a cualquier directorio donde tenga acceso de escritura y Sonic Pi colocará su directorio .sonic-pi dentro de él.Boot Error - SONIC_PI_HOME not writable:
-
+ Error de arranque - SONIC_PI_HOME no escribible:Unfortunately it appears you have set the SONIC_PI_HOME environment variable to a directory you don't have permission to write to:
-
+ Desafortunadamente, parece que ha configurado la variable de entorno SONIC_PI_HOME a un directorio donde no tiene permisos de escritura:
@@ -746,12 +746,12 @@ Obtén Sonic Pi %1
Tap Tempo
- Toque Tempo
+ Marcar tempoClick Link Tap Tempo
-
+ Hacer clic para marcar tempo Link
@@ -1051,132 +1051,133 @@ Obtén Sonic Pi %1
Apologies, unable to start...
-
+ Disculpas, no se puede iniciar...
+Sorry, Sonic Pi is having issues booting:
-
+ Lo sentimos, Sonic Pi tiene problemas para arrancar:Vertically center the caret in the editor
-
+ Centrar verticalmente el cursor en el editorMove Line or Selection Up
-
+ Mover línea o selección hacia arribaMove Line or Selection Down
-
+ Mover línea o selección hacia abajoMove Down One Line
-
+ Mover una línea hacia abajoMove Up One Line
-
+ Mover una línea hacia arribaMove Down Ten Lines
-
+ Mover diez líneas hacia abajoMove Up Ten Lines
-
+ Mover diez líneas hacia arribaCut to End of Line
-
+ Cortar hasta el final de la líneaCopy
-
+ CopiarCut
-
+ CortarPaste
-
+ PegarMove Right
-
+ Mover a la derechaMove Left
-
+ Mover a la izquierdaDelete Forward
-
+ Eliminar hacia adelanteDelete Back
-
+ Eliminar hacia atrásMove to Start of Line
-
+ Mover al inicio de la líneaMove to End of Line
-
+ Mover al final de la líneaMove to Start of Document
-
+ Mover al inicio del documentoMove to End of Document
-
+ Mover al final del documentoMove Right One Word
-
+ Mover una palabra a la derechaMove Left One Word
-
+ Mover una palabra a la izquierdaCenter Cursor Vertically
-
+ Centrar cursor verticalmenteUndo
-
+ DeshacerRedo
-
+ Rehacer
@@ -1186,17 +1187,17 @@ Obtén Sonic Pi %1
Delete Word Left
-
+ Eliminar palabra a la izquierdaDelete Word Right
-
+ Eliminar palabra a la derechaUpcase Word or Selection
-
+ Poner palabra o selección en mayúscula
@@ -1226,87 +1227,87 @@ Obtén Sonic Pi %1
Focus Tab 1
-
+ Enfocar pestaña 1Focus Tab 2
-
+ Enfocar pestaña 2Focus Tab 3
-
+ Enfocar pestaña 3Focus Tab 4
-
+ Enfocar pestaña 4Focus Tab 5
-
+ Enfocar pestaña 5Focus Tab 6
-
+ Enfocar pestaña 6Focus Tab 7
-
+ Enfocar pestaña 7Focus Tab 8
-
+ Enfocar pestaña 8Focus Tab 9
-
+ Enfocar pestaña 9Focus Tab 0
-
+ Enfocar pestaña 0Auto Indent Code Buffer
-
+ Indentar automáticamente el buffer de códigoSet Mark
-
+ Establecer marcaEmacs Live Shortcut Mode
-
+ Modo de atajos de Emacs LiveWindows Shortcut Mode
-
+ Modo de atajos de WindowsMac Shortcut Mode
-
+ Modo de atajos de MacUser Shortcut Mode
-
+ Modo de atajos de usuarioShortcut Mode
-
+ Modo de atajos
@@ -1346,12 +1347,12 @@ Obtén Sonic Pi %1
Zoom Out Logs
-
+ Reducir los registrosFocus
-
+ Foco
@@ -1366,7 +1367,7 @@ Obtén Sonic Pi %1
Enabling MIDI <input>...
-
+ Habilitando entrada MIDI...
@@ -1637,7 +1638,7 @@ Obtén Sonic Pi %1
Cannot read file %1:
%2.
- No se puede leer el archivo %1:
+ No se puede leer el archivo %1:
%2.
@@ -1649,7 +1650,7 @@ Obtén Sonic Pi %1
Cannot write file %1:
%2.
- No se puede escribir el archivo %1:
+ No se puede escribir el archivo %1:
%2.
@@ -1843,8 +1844,8 @@ Useful when working with external systems that
can only handle mono.
Alternar Modo Mono
Si se encuentra activado, se mezclarán el audio del altavoz izquierdo y derecho,
-y enviará la misma señal a ambos altavoces.
-Esto es útil cuando se trabaja con sistemas externos que
+y enviará la misma señal a ambos altavoces.
+Esto es útil cuando se trabaja con sistemas externos que
soportan únicamente salida mono.
@@ -1885,7 +1886,7 @@ it is too late to do so
When disabled, Sonic Pi will always
attempt to trigger synths and FX
even when a little late.
- Cuando está habilitado, Sonic Pi impedirá
+ Cuando está habilitado, Sonic Pi impedirá
el inicio de sintetizadores y efectos si
es demasiado tarde para hacerlo
@@ -1921,7 +1922,7 @@ que no está reconocido.
to and from other programs or computers
via the currently connected network.
Sonic Pi puede enviar y recibir mensajes OSC (Open Sound Control)
-hacia y desde otros programas u ordenadores
+hacia y desde otros programas u ordenadores
a través de la red actualmente conectada.
@@ -1964,7 +1965,7 @@ Cuando no se elije, solo se habilita envío y recepción desde la máquina local
Automatically align code on Enter or Run
-
+ Alinear código automáticamente al presionar Enter o Ejecutar
@@ -2005,7 +2006,7 @@ Cuando no esté seleccionado no se recibirán mensajes OSC.
- Reset MIDI subsystems
+ Reset MIDI subsystems
(Required to detect device changes on macOS)Reinicia subsistemas MIDI
(En MacOS, es necesario para detectar cambios en los dispositivos)
@@ -2033,7 +2034,7 @@ Sonic Pi y son recibidos como eventos de señal (cue)
MIDI output devices receive MIDI messages directly from
Sonic Pi which can be sent via the midi_* fns
- Los dispositivos MIDI de salida reciben mensajes MIDI directamente de
+ Los dispositivos MIDI de salida reciben mensajes MIDI directamente de
Sonic Pi, los cuales pueden ser enviados a través de los fns midi_*
@@ -2302,7 +2303,7 @@ Sonic Pi, los cuales pueden ser enviados a través de los fns midi_*
Cambiar opción de registrar mensajes.
-Si esta opción está deshabilitada, actividades como el disparador del sintetizador
+Si esta opción está deshabilitada, actividades como el disparador del sintetizador
o muestra no se imprimirán en el registro por defecto.
@@ -2315,8 +2316,8 @@ o muestra no se imprimirán en el registro por defecto.
Toggle log clearing on run.
If enabled, the log is cleared each
time the run button is pressed.
- Cambia opción de limpiar el registro al iniciar.
-Si se encuentra habilitado, el registro se limpiará
+ Cambia opción de limpiar el registro al iniciar.
+Si se encuentra habilitado, el registro se limpiará
cada vez que se presione el botón de iniciar.
@@ -2392,7 +2393,7 @@ Si se activa el registro se desplaza al último mensaje mostrado.
- Translations have been generously provided by volunteers
+ Translations have been generously provided by volunteers
on https://hosted.weblate.org/projects/sonic-pi/. Thank you! :)Las traducciones han sido proporcionadas generosamente por voluntarios
en https://hosted.weblate.org/projects/sonic-pi/. ¡Gracias! :)
@@ -2415,13 +2416,14 @@ en https://hosted.weblate.org/projects/sonic-pi/. ¡Gracias! :)
System language found: %1
-
+ Idioma del sistema encontrado: %1System language: %1
-
+ Idioma del sistema: %1
+
@@ -2507,7 +2509,7 @@ Mirror Stereo - simple left/right composite wave, with left on top, right on bot
Mono - shows a combined view of the left and right channels (using RMS)
Spectrum - shows the sound frequencies as a spectrum, from low to high frequencies
Stereo - shows two independent scopes for left and right channels
- Los osciloscopias de audio vienen en diversos formatos que pueden
+ Los osciloscopias de audio vienen en diversos formatos que pueden
ser vistos de forma independiente o al tiempo:
Lissajous - ilustra relaciones de fase entre los canales izquierdo y derecho
@@ -2530,7 +2532,7 @@ Estereo - muestra dos osciloscopios independientes para los canales izquierdo y
Toggle automatic update checking.
This check involves sending anonymous information about your platform and version.
- Alterna la opción de comprobación automática de actualizaciones.
+ Alterna la opción de comprobación automática de actualizaciones.
Esta verificación conlleva enviar información anónima de su plataforma y versión actuales.
@@ -2542,7 +2544,7 @@ Esta verificación conlleva enviar información anónima de su plataforma y vers
Force a check for updates now.
This check involves sending anonymous information about your platform and version.
- Comprobar inmediatamente la existencia de actualizaciones.
+ Comprobar inmediatamente la existencia de actualizaciones.
Esta verificación conlleva enviar información anónima acerca de tu plataforma y versión actuales.
@@ -2566,4 +2568,4 @@ Esta verificación conlleva enviar información anónima acerca de tu plataforma
Información de actualización de Sonic Pi
-
+
\ No newline at end of file
diff --git a/app/gui/lang/sonic-pi_fr.ts b/app/gui/lang/sonic-pi_fr.ts
index fe7964ebb7..119c6c587d 100644
--- a/app/gui/lang/sonic-pi_fr.ts
+++ b/app/gui/lang/sonic-pi_fr.ts
@@ -620,28 +620,28 @@
For the curious among you, Sonic Pi automatically stores the contents of the code buffers, configuration files and logs in a folder called .sonic-pi which typically resides in your home directory.
-
+ Pour les plus curieux d'entre vous, Sonic Pi stocke automatiquement le contenu des tampons de code, des fichiers de configuration et des journaux dans un dossier appelé .sonic-pi qui se trouve généralement dans votre répertoire personnel.Unfortunately you don't appear to have permission to write to your home directory:
-
+ Malheureusement, vous ne semblez pas avoir l'autorisation d'écrire dans votre répertoire personnel :To fix this you can set the environment variable SONIC_PI_HOME to any directory you have write access to and Sonic Pi will place its .sonic-pi directory within that.
-
+ Pour résoudre ce problème, vous pouvez définir la variable d'environnement SONIC_PI_HOME à n'importe quel répertoire auquel vous avez accès en écriture et Sonic Pi placera son répertoire .sonic-pi à l'intérieur de celui-ci.Boot Error - SONIC_PI_HOME not writable:
-
+ Erreur de démarrage - SONIC_PI_HOME ne peut pas être écrit :Unfortunately it appears you have set the SONIC_PI_HOME environment variable to a directory you don't have permission to write to:
-
+ Malheureusement, il semble que vous ayez défini la variable d'environnement SONIC_PI_HOME pour un répertoire où vous n'avez pas le droit d'écrire :
@@ -1035,252 +1035,252 @@
Vertically center the caret in the editor
-
+ Centrer verticalement le caret dans l'éditeurMove Line or Selection Up
-
+ Déplacer la ligne ou la sélection vers le hautMove Line or Selection Down
-
+ Déplacer la ligne ou la sélection vers le basMove Down One Line
-
+ Descendre d'une ligneMove Up One Line
-
+ Remonter d'une ligneMove Down Ten Lines
-
+ Descendre de dix lignesMove Up Ten Lines
-
+ Remonter de dix lignesCut to End of Line
-
+ Couper jusqu'à la fin de la ligneCopy
-
+ CopierCut
-
+ CouperPaste
-
+ CollerMove Right
-
+ Déplacer vers la droiteMove Left
-
+ Déplacer vers la gaucheDelete Forward
-
+ Effacer en avantDelete Back
-
+ Effacer en arrièreMove to Start of Line
-
+ Déplacer vers le début de la ligneMove to End of Line
-
+ Déplacer vers la fin de la ligneMove to Start of Document
-
+ Déplacer vers le début du documentMove to End of Document
-
+ Déplacer vers la fin du documentMove Right One Word
-
+ Déplacer d'un mot vers la droiteMove Left One Word
-
+ Déplacer d'un mot vers la gaucheCenter Cursor Vertically
-
+ Centrer le curseur verticalementUndo
-
+ DéfaireRedo
-
+ RefaireSelect All
-
+ Tout sélectionnerDelete Word Left
-
+ Supprimer le mot à gaucheDelete Word Right
-
+ Supprimer le mot à droiteUpcase Word or Selection
-
+ Mise en majuscule du mot ou de la sélectionDowncase Word or Selection
-
+ Mise en minuscule du mot ou de la sélectionShow Docs for Current Word
-
+ Afficher la documentation pour le mot actuelCycle Themes
-
+ Thèmes du cyclePrevious Tab
-
+ Onglet précédentNext Tab
-
+ Onglet suivantFocus Tab 1
-
+ Focus sur l'onglet 1Focus Tab 2
-
+ Focus sur l'onglet 2Focus Tab 3
-
+ Focus sur l'onglet 3Focus Tab 4
-
+ Focus sur l'onglet 4Focus Tab 5
-
+ Focus sur l'onglet 5Focus Tab 6
-
+ Focus sur l'onglet 6Focus Tab 7
-
+ Focus sur l'onglet 7Focus Tab 8
-
+ Focus sur l'onglet 8Focus Tab 9
-
+ Focus sur l'onglet 9Focus Tab 0
-
+ Focus sur l'onglet 0Auto Indent Code Buffer
-
+ Indentation automatique du tampon de codeSet Mark
-
+ Paramétrer un marqueurEmacs Live Shortcut Mode
-
+ Mode raccourci d'Emacs LiveWindows Shortcut Mode
-
+ Mode raccourci de WindowsMac Shortcut Mode
-
+ Mode raccourci de MacUser Shortcut Mode
-
+ Mode raccourci de l'utilisateurShortcut Mode
-
+ Mode raccourci
@@ -1315,17 +1315,17 @@
Zoom In Logs
-
+ Zoom avant des journauxZoom Out Logs
-
+ Zoom arrière des journauxFocus
-
+ Focus
@@ -1340,7 +1340,7 @@
Enabling MIDI <input>...
-
+ Activation du MIDI <input>...
@@ -1965,7 +1965,7 @@ via le réseau actuellement connecté.
Automatically align code on Enter or Run
-
+ Aligner automatiquement le code lors de Entrée ou Run
@@ -2416,13 +2416,14 @@ sur https://hosted.weblate.org/projects/sonic-pi/. Merci ! :)
System language found: %1
-
+ Langue système découverte : %1System language: %1
-
+ Langue système : %1
+
diff --git a/app/gui/lang/sonic-pi_ga.ts b/app/gui/lang/sonic-pi_ga.ts
index 1cd082c49f..4500827daf 100644
--- a/app/gui/lang/sonic-pi_ga.ts
+++ b/app/gui/lang/sonic-pi_ga.ts
@@ -495,7 +495,7 @@
Vertically center the caret in the editor
-
+ Lárnaigh an caret go hingearach san eagarthóir
@@ -1482,7 +1482,7 @@ Faigh Sonic Pi% 1
Enabling MIDI <input>...
-
+ Ag cumasú <ionchur> MIDI...
diff --git a/app/gui/mainwindow.cpp b/app/gui/mainwindow.cpp
index e5d716c525..d12c2681e5 100644
--- a/app/gui/mainwindow.cpp
+++ b/app/gui/mainwindow.cpp
@@ -415,7 +415,6 @@ void MainWindow::setupWindowStructure()
errorPane = new QTextBrowser;
metroPane = new SonicPiMetro(m_spClient, m_spAPI, theme, this);
-
connect(metroPane, SIGNAL(linkEnabled()), this, SLOT(checkEnableLinkMenu()));
connect(metroPane, SIGNAL(linkDisabled()), this, SLOT(uncheckEnableLinkMenu()));
@@ -3187,8 +3186,8 @@ void MainWindow::loadWinShortcuts()
shortcutMap["DeleteBackward"] = resolveShortcut("Ctrl+h");
shortcutMap["LineStart"] = resolveShortcut("Home");
shortcutMap["LineEnd"] = resolveShortcut("End");
- shortcutMap["DocStart"] = resolveShortcut("MetaShift+,");
- shortcutMap["DocEnd"] = resolveShortcut("MetaShift+.");
+ shortcutMap["DocStart"] = resolveShortcut("Ctrl+Home");
+ shortcutMap["DocEnd"] = resolveShortcut("Ctrl+End");
shortcutMap["WordRight"] = resolveShortcut("Ctrl+Right");
shortcutMap["WordLeft"] = resolveShortcut("Ctrl+Left");
shortcutMap["CenterVertically"] = resolveShortcut("Ctrl+l");
@@ -3526,7 +3525,6 @@ void MainWindow::createToolBar()
enableLinkAct->setChecked(false);
connect(enableLinkAct, SIGNAL(triggered()), this, SLOT(toggleLinkMenu()));
-
linkTapTempoAct = new QAction(tr("Tap Tempo"), this);
connect(linkTapTempoAct, SIGNAL(triggered()), metroPane, SLOT(tapTempo()));
@@ -4311,7 +4309,14 @@ void MainWindow::readSettings()
piSettings->themeStyle = theme->themeNameToStyle(styleName);
piSettings->show_autocompletion = gui_settings->value("prefs/show-autocompletion", true).toBool();
piSettings->show_context = gui_settings->value("prefs/show-context", true).toBool();
- piSettings->shortcut_mode = gui_settings->value("prefs/shortcut-mode", 1).toInt();
+#if defined(Q_OS_WIN)
+ int os_shortcut_mode = 2;
+#elif defined(Q_OS_MAC)
+ int os_shortcut_mode = 3;
+#else
+ int os_shortcut_mode = 1;
+#endif
+ piSettings->shortcut_mode = gui_settings->value("prefs/shortcut-mode", os_shortcut_mode).toInt();
emit settingsChanged();
}
diff --git a/app/server/ruby/bin/i18n-tool.rb b/app/server/ruby/bin/i18n-tool.rb
index 84d69fcfb4..f38f40fe95 100755
--- a/app/server/ruby/bin/i18n-tool.rb
+++ b/app/server/ruby/bin/i18n-tool.rb
@@ -49,6 +49,21 @@ def is_number? string
end
+def clean_invisible_chars(text)
+ # Remove or replace problematic invisible Unicode characters that can cause
+ # syntax errors when code is copied from documentation
+ text
+ .gsub(/\u202F/, ' ') # Replace Narrow No-Break Space with regular space
+ .gsub(/\u00A0/, ' ') # Replace Non-Breaking Space with regular space
+ .gsub(/\u200B/, '') # Remove Zero Width Space
+ .gsub(/\u200C/, '') # Remove Zero Width Non-Joiner
+ .gsub(/\u200D/, '') # Remove Zero Width Joiner
+ .gsub(/\uFEFF/, '') # Remove Byte Order Mark
+ .gsub(/\u200E/, '') # Remove Left-to-Right Mark
+ .gsub(/\u200F/, '') # Remove Right-to-Left Mark
+end
+
+
def handle_entry(msgid, filename, line, flags = [])
reference = "#{filename}:#{line}"
msgid.gsub!(/\\([.:_])/, '\1')
@@ -217,7 +232,8 @@ def convert_element(filename, el, bullet = nil)
FileUtils::mkdir_p File.expand_path("../../../../etc/doc/generated/#{l}/tutorial", __dir__)
$translated.each do |filename, newcontent|
File.open(File.expand_path("../../../../etc/doc/generated/#{l}/tutorial/#{filename}", __dir__), 'w') do |f|
- f << newcontent
+ # Clean invisible characters that can cause syntax errors
+ f << clean_invisible_chars(newcontent)
end
end
if ($count_msgid > 0) then
diff --git a/install/windows/wix/sonic-pi.wxs b/install/windows/wix/sonic-pi.wxs
index 28ab2d32c6..b6a645553f 100644
--- a/install/windows/wix/sonic-pi.wxs
+++ b/install/windows/wix/sonic-pi.wxs
@@ -26,19 +26,15 @@
-
-
-
-