From f5dd36260f258b8a8bda8355042344f1bec56747 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Tue, 8 Apr 2025 15:33:08 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- language/translate.json | 20 +++++++++---------- public/js/recorder/i18n/Template.js | 6 ++++++ public/js/recorder/i18n/en-US.js | 6 ++++++ public/js/recorder/i18n/es.js | 6 ++++++ public/js/recorder/i18n/fr.js | 6 ++++++ public/js/recorder/i18n/zh-CN.js | 6 ++++++ .../manage/components/ChatInput/index.vue | 5 ++++- .../public/js/recorder/i18n/Template.js | 6 ++++++ .../statics/public/js/recorder/i18n/en-US.js | 6 ++++++ .../statics/public/js/recorder/i18n/es.js | 6 ++++++ .../statics/public/js/recorder/i18n/fr.js | 6 ++++++ .../statics/public/js/recorder/i18n/zh-CN.js | 6 ++++++ 12 files changed, 74 insertions(+), 11 deletions(-) create mode 100644 public/js/recorder/i18n/Template.js create mode 100644 public/js/recorder/i18n/en-US.js create mode 100644 public/js/recorder/i18n/es.js create mode 100644 public/js/recorder/i18n/fr.js create mode 100644 public/js/recorder/i18n/zh-CN.js create mode 100644 resources/assets/statics/public/js/recorder/i18n/Template.js create mode 100644 resources/assets/statics/public/js/recorder/i18n/en-US.js create mode 100644 resources/assets/statics/public/js/recorder/i18n/es.js create mode 100644 resources/assets/statics/public/js/recorder/i18n/fr.js create mode 100644 resources/assets/statics/public/js/recorder/i18n/zh-CN.js diff --git a/language/translate.json b/language/translate.json index da3494f54..4d4c7d7df 100644 --- a/language/translate.json +++ b/language/translate.json @@ -28729,15 +28729,15 @@ }, { "key": "无法录音:NotFoundError: Requested device not found,无可用麦克风", - "zh": "", - "zh-CHT": "無法錄音:NotFoundError: Requested device not found,無可用麥克風", - "en": "Unable to record: NotFoundError: Requested device not found, no available microphone", - "ko": "녹음할 수 없음: NotFoundError: 요청한 장치를 찾을 수 없음, 사용 가능한 마이크 없음", - "ja": "録音できません: NotFoundError: 要求されたデバイスが見つかりません、使用可能なマイクがありません", - "de": "Aufnahme nicht möglich: NotFoundError: Angefordertes Gerät nicht gefunden, kein verfügbares Mikrofon", - "fr": "Impossible d'enregistrer : NotFoundError : Périphérique demandé introuvable, aucun microphone disponible", - "id": "Tidak dapat merekam: NotFoundError: Perangkat yang diminta tidak ditemukan, tidak ada mikrofon yang tersedia", - "ru": "Невозможно записать: NotFoundError: Запрашиваемое устройство не найдено, нет доступного микрофона" + "zh": "无法录音:无可用麦克风", + "zh-CHT": "無法錄音:無可用麥克風", + "en": "Unable to record: No available microphone", + "ko": "녹음할 수 없음: 사용 가능한 마이크 없음", + "ja": "録音できません:使用可能なマイクがありません", + "de": "Aufnahme nicht möglich: Kein verfügbares Mikrofon", + "fr": "Impossible d'enregistrer : Aucun microphone disponible", + "id": "Tidak dapat merekam: Tidak ada mikrofon yang tersedia", + "ru": "Невозможно записать: Нет доступного микрофона" }, { "key": "状态[(%T1)]设置错误,状态负责人[(%T2)]不在项目成员内", @@ -29423,4 +29423,4 @@ "id": "Gagal memulai sesi baru dengan AI", "ru": "Не удалось начать новый сеанс с ИИ" } -] \ No newline at end of file +] diff --git a/public/js/recorder/i18n/Template.js b/public/js/recorder/i18n/Template.js new file mode 100644 index 000000000..39140ef4d --- /dev/null +++ b/public/js/recorder/i18n/Template.js @@ -0,0 +1,6 @@ +/* +录音 +https://github.com/xiangyuecn/Recorder +src: i18n/Template.js +*/ +!function(t){var a="object"==typeof window&&!!window.document;!function(t,a){"use strict";var u=t.i18n;t.CLog('Import Recorder i18n lang="Your-Language-Name"');var e={lang:u.alias["Your-Language-Name"]="your-language"};u.data["rtl$your-language"]=!1,u.data["desc$your-language"]="This file is a language translation template file. After copying and renaming, translate the text into the corresponding language. 此文件为语言翻译模板文件,复制并改名后,将文本翻译成对应语言即可。",u.put(e,["K8zP:","mSxV:","nMIy:","eS8i:","ZGlf:","7TU0:","JwCL:","VGjB:","MxX1:","XUap:","yOta:","VwPd:","vHnb:","O9P7:","LMEm:","d48C:","tlbC:","VtS4:","5tWi:","dFm8:","VtJO:","EMJq:","A5bm:","1iU7:","BTW2:","Nclz:","jBa9:","gyO5:","oWNo:","COxc:","upb8:","Q1GA:","KxE2:","xEQR:","bDOG:","IjL3:","RiWe:","hWVz:","UHvm:","Essp:","2XBl:","LG7e:","7uMV:","4Kfd:","bM5i:","gFUF:","2ghS:","ufqH:","6WmN:","kLDN:","Bp2y:","upkE:","Xq4s:","3CQP:","u8JG:","1skY:","Wv7l:","Vkbd:","QWnr:","Sz2H:","wf9t:","Dl2c:","Ltz3:","xGuI:","AxOH:","xkKd:","CxeT:","NonBrowser-1:","IllegalArgs-1:","NeedImport-2:","NotSupport-1:","8HO5:"]),u.put(e,["b2mN:","tQBv:","q12D:","TxjV:","Q7p7:","6o9Z:","yYWs:","jOi8:"]),u.put(e,["O8Gn:","5si6:","R8yz:","hB9D:","oTiy:","dIpw:"]),u.put(e,["L49q:","tsTW:","aG4z:","PIX0:"]),u.put(e,["d8YX:","29UK:","quVJ:"]),u.put(e,["Zm7L:","eGB9:","zLTa:","yhUs:","k9PT:","fT6M:","mPxH:","uY9i:","iMSm:","b9zm:"]),u.put(e,["fWsN:","uMUJ:","KmRz:","sDkA:"]),u.put(e,["gPSE:","wyw9:"]),u.put(e,["0XYC:","6DDt:","I4h4:","P6Gs:","JwDm:","qx6X:","cdOx:","S2Bu:","ZfGG:","N4ke:","IHZd:","L8sC:","TZPq:","iCFC:","wE2k:","mOaT:"]),u.put(e,["3RBa:","U212:","7qAD:","QGsW:","emJR:","GsYy:","bSFZ:"]),u.put(e,["Ikdz:","IC5Y:"]),u.put(e,["WWoj:","rCAM:","t2OF:","Z2y2:"]),u.put(e,["uXtA:","kIBu:","ha2K:","wpTL:","bpvP:","fLJD:","YnzX:","nwKR:","citA:","ecp9:","EKmS:","k7Qo:","Douz:","wqSH:","g3VX:"])}((a?window:Object).Recorder)}(); \ No newline at end of file diff --git a/public/js/recorder/i18n/en-US.js b/public/js/recorder/i18n/en-US.js new file mode 100644 index 000000000..db9b1e4d0 --- /dev/null +++ b/public/js/recorder/i18n/en-US.js @@ -0,0 +1,6 @@ +/* +录音 +https://github.com/xiangyuecn/Recorder +src: i18n/en-US.js +*/ +!function(e){var t="object"==typeof window&&!!window.document;!function(e,t){"use strict";var o=e.i18n;e.CLog('Import Recorder i18n lang="en-US"');var n={lang:o.alias["en-US"]="en"};o.data.rtl$en=!1,o.data.desc$en="English, 英语。This translation mainly comes from: google translation + Baidu translation, translated from Chinese to English. 此翻译主要来自:google翻译+百度翻译,由中文翻译成英文。",o.put(n,["K8zP:Duplicate import {1}","mSxV:There are {1} GetContext unclosed","nMIy: (Note: ctx is not in the running state. At least one of rec.open and start must be called during user operations (touch, click, etc.), otherwise ctx.resume will be attempted during rec.start, which may cause compatibility issues (iOS only), please refer to the runningContext configuration in the documentation) ","eS8i:The sampleRate of the Stream {1} is not equal to {2}, so the sampleRate conversion will be performed (note: the sound quality will not improve and may even deteriorate). This phenomenon mainly occurs when echoCancellation is not disabled on the mobile terminal. When the browser has echoCancellation, it may only return audio data with a sampleRate of 16k. ","ZGlf:. Due to 375 callbacks in 1 second in {1}, there may be performance problems on the mobile side, which may cause the callback to be lost and the recording to be shortened, but it will not affect the PC side. It is not recommended to enable {1} for now.","7TU0:Connect uses the old {1}, ","JwCL:But {1} is set trying to enable {2}","VGjB:Can set {1} try to enable {2}","MxX1:{1} did not return any audio, reverting to {2}","XUap:{1} redundant callback","yOta:Connect uses {1}, set {2} to restore old-fashioned {3}","VwPd: (This browser does not support {1}) ","vHnb:{1} did not return any audio, downgrade to {2}","O9P7:{1} redundant callback","LMEm:Connect uses {1}, set {2} to restore to using {3} or old-fashioned {4}","d48C:The filter sampleRate of {1} has changed, reset the filter","tlbC:{1} seems to have passed in an unreset chunk {2}","VtS4:{1} and {2} must be number","5tWi:Recording open failed: ","dFm8:open cancelled","VtJO:open interrupted","EMJq:, you can try to use the RecordApp solution ","A5bm:Cannot record: ","1iU7:This browser does not support obtaining recordings from stream","BTW2:Failed to open recording from stream: ","Nclz:No permission to record (cross domain, please try adding microphone access policy to iframe, such as: {1})","jBa9:, no microphone available","gyO5:User denied recording permission","oWNo:Browser prohibits recording of unsafe pages, which can be resolved by enabling HTTPS","COxc:This browser does not support recording","upb8:It was found that open was called multiple times at the same time","Q1GA:Invalid recording: no audio stream","KxE2:, will try to disable echoCancellation and try again","xEQR:Error requesting recording permission","bDOG:Unable to record: ","IjL3:Note: The {1} parameter has been configured, which may cause the browser to not correctly select the microphone, or the mobile terminal to not enable echoCancellation, etc. ","RiWe:, when {1} is not configured, the browser may automatically enable echoCancellation. When echoCancellation is not disabled on the mobile terminal, the system playback volume may be reduced (can be restored after closing the recording) and only 16k sampleRate audio stream is provided (when echoCancellation is not required, it can be explicitly configured to disable to obtain 48k high-quality stream). Please refer to the {2} configuration in the document","hWVz:close is ignored (because multiple recs are open at the same time, only the last one will actually close)","UHvm:ignore","Essp:{1} architecture not supported","2XBl:{1} type does not support setting takeoffEncodeChunk","LG7e:(Encoder not loaded)","7uMV:{1} environment does not support real-time processing","4Kfd:Compensation {1}ms","bM5i:Uncompensated {1}ms","gFUF:Callback error is not allowed, you need to ensure that no exception will be thrown","2ghS:Low performance, took {1}ms","ufqH:Buffers cannot be cleared before entering async","6WmN:start failed: not open","kLDN:start recording, ","Bp2y:start was interrupted","upkE:, may fail to record: ","Xq4s:Stop and start time difference: ","3CQP:compensate: ","u8JG:Failed to stop recording: ","1skY:, please set {1}","Wv7l:Stop recording, encoding takes {1}ms, audio duration {2}ms, file size {3}b","Vkbd:{1} encoder returned not {2}","QWnr:After enabling takeoffEncodeChunk, the length of the blob returned by stop is 0 and no audio data is provided","Sz2H:Invalid generated {1}","wf9t:Recording not started","Dl2c:, No user interaction before starting recording, resulting in AudioContext not running","Ltz3:Recording not captured","xGuI:The {1} encoder is not loaded. Please try to find the {1} encoder in the src/engine directory of the {2} and load it","AxOH:Recording error: ","xkKd:Audio buffers are released","CxeT:Sampled: {1}, took: {2}ms","NonBrowser-1:Non-browser environment, does not support {1}","IllegalArgs-1:Illegal argument: {1}","NeedImport-2:Calling {1} needs to import {2} first","NotSupport-1:Not support: {1}","8HO5:Override import {1}"]),o.put(n,["b2mN:AMR-NB (NarrowBand), sampleRate setting is invalid (only 8000hz is provided), bitRate range: {1} (default 12.2kbps), one frame 20ms, {2} bytes; browsers generally do not support playing amr format, available Recorder.amr2wav() transcoding into wav playback","tQBv:AMR Info: does not match the set {1}, has been updated to {2}","q12D:Data sampleRate lower than {1}","TxjV:The current browser version is too low to process in real time","Q7p7:takeoffEncodeChunk takes over the binary data output by the AMR encoder, and only the first callback data (the first frame) contains the AMR header; when merging into an AMR file, if the first frame data is not included, the AMR header must be added at the beginning of the file: Recorder.AMR.AMR_HEADER (converted to binary), otherwise it cannot be played","6o9Z:The current environment does not support Web Worker, and the amr real-time encoder runs in the main thread","yYWs:amr worker left {1} unstopped","jOi8:amr encoder not started"]),o.put(n,["O8Gn:Ogg Vorbis, bitRate 16-100kbps, sampleRate unlimited","5si6:The current browser version is too low to process in real time","R8yz:takeoffEncodeChunk takes over the binary data output by the OggVorbis encoder. Ogg is composed of data pages. One page contains multiple frames of audio data (including a few seconds of audio, and one page of data cannot be decoded and played alone). This encoder outputs a complete page of data each time, so the real-time performance will be relatively low; when merging into a complete ogg file, all the output data must be merged together, otherwise it may not be able to play, and it does not support intercepting the middle part to decode and play separately","hB9D:The current environment does not support Web Worker, and the OggVorbis real-time encoder runs in the main thread","oTiy:There are {1} unstopped ogg workers","dIpw:ogg encoder not started"]),o.put(n,["L49q:This browser does not support webm encoding, MediaRecorder is not implemented","tsTW:Only newer browsers support it, and the compression rate is similar to mp3. Since there is no way to quickly encode the existing pcm data, the data can only be imported into MediaRecorder in a similar manner while playing and listening, and it takes a few seconds to wait for a few seconds. Although the output audio can control the file size through the bitRate, the bitRate in the audio file is not the set bitRate. Since the sampleRate is sampled by ourselves, we can do whatever we want with this encoder.","aG4z:This browser does not support converting recordings to webm format","PIX0:Error encoding webm: {1}"]),o.put(n,["d8YX:{1}; {2} audio files cannot be played directly, and can be transcoded into wav by Recorder.{2}2wav(); the sampleRate bitRate setting is invalid, fixed at 8000hz sampleRate, 16 bits, each sample is compressed into 8 bits for storage, and the audio file size is 8000 bytes/second; if you need any sampleRate support, please use Recorder.{2}_encode() Method","29UK:Data sampleRate lower than {1}","quVJ:{1} encoder not started"]),o.put(n,["Zm7L:sampleRate range: {1}; bitRate range: {2} (the sampleRate range supported by different bitRate is different, when the bitRate is less than 32kbps, the sampleRate must be less than 32000)","eGB9:{1} is not in the value range supported by mp3: {2}","zLTa:sampleRate has been updated to {1}, because {2} is not in the value range supported by mp3: {3}","yhUs:The current browser version is too low to process in real time","k9PT:The current environment does not support Web Worker, and the mp3 real-time encoder runs in the main thread","fT6M:There are {1} unstopped mp3 workers left","mPxH:mp3 encoder not started","uY9i:Does not match the set {1}, has been updated to {2}","iMSm:Fix remove {1} frame","b9zm:Remove too many frames"]),o.put(n,["fWsN:pcm is unencapsulated original audio data, pcm audio files cannot be played directly, and can be transcoded into wav by Recorder.pcm2wav(); it supports 8-bit and 16-bit bits (fill in the bitRate), and the sampleRate is unlimited","uMUJ:PCM Info: {1} bit is not supported, has been updated to {2} bit","KmRz:pcm2wav must provide sampleRate and bitRate","sDkA:pcm encoder not started"]),o.put(n,["gPSE:Supports 8-bit and 16-bit bits (fill in the bitRate), and the sampleRate is unlimited; this encoder only adds a 44-byte wav header before the pcm data, and the encoded 16-bit wav file removes the beginning 44 bytes to get pcm (note: other wav encoders may not be 44 bytes)","wyw9:WAV Info: {1} bit is not supported, has been updated to {2} bit"]),o.put(n,["0XYC:The getAudioSrc method is obsolete: please use getMediaStream directly and then assign it to audio.srcObject, it is only allowed to call this method in browsers that do not support srcObject and assign it to audio.src for compatibility","6DDt:start is terminated by stop","I4h4:{1} repeat start","P6Gs:The browser does not support opening {1}","JwDm: (Note: ctx is not in the running state, start needs to be called when the user operates (touch, click, etc.), otherwise it will try to perform ctx.resume, which may cause compatibility issues (only iOS), please refer to the runningContext configuration in the document) ","qx6X:The AudioBuffer implementation of this browser does not support dynamic features, use compatibility mode","cdOx:Environment detection timeout","S2Bu:Could not play: {1}","ZfGG:input call failed: non-pcm[Int16,...] input must be decoded or converted using transform","N4ke:input call failed: sampleRate not provided","IHZd:input call failed: sampleRate={1} of data is different from previous={2}","L8sC:The delay is too large, {1}ms has been discarded, {2}","TZPq:{1} did not call the start method","iCFC:Browser does not support audio decoding","wE2k:Audio decoding data must be ArrayBuffer","mOaT:Audio decoding failed: {1}"]),o.put(n,["3RBa:Invalid symbol [{1}]: {2}","U212:Invalid note [{1}]: {2}","7qAD:Multiple tones must be aligned, with a difference of {1}ms","QGsW:Happy Birthday to You","emJR:For Elise","GsYy:Canon - Right Hand Notation","bSFZ:Canon"]),o.put(n,["Ikdz:The current environment does not support Web Worker and does not support calling Sonic.Async","IC5Y:There are {1} unflushed sonic workers left"]),o.put(n,["WWoj:The {2} method in {1} is not implemented, please implement this method in the {3} file or configuration file","rCAM:Recording does not start, but Native PCM data is received","t2OF:A cross-domain iframe is detected. NativeRecordReceivePCM cannot be injected into the top layer. It has listened to postMessage to be compatible with data transmission. Please implement it by yourself to forward the data received by the top layer to this iframe (no limit on layer), otherwise the recording data cannot be received.","Z2y2:Recording not started"]),o.put(n,["uXtA:Duplicate import {1}","kIBu:Note: Because other recording-related methods are called concurrently, the current call result of {1} has been discarded and there will be no callback","ha2K:Duplicate registration {1}","wpTL:Clean resources only","bpvP:Recording not started","fLJD:The current environment does not support real-time callback and cannot be performed {1}","YnzX:Recording permission request failed: ","nwKR:Need to call {1} first","citA:This is not a browser environment. You need to import support files for this platform ({1}), or call {2} to implement the access yourself.","ecp9:Failed to start recording: ","EKmS:Cannot record: ","k7Qo:Recording started","Douz:Failed to stop recording: ","wqSH:Time difference from Start: {1}ms","g3VX:Stop recording, takes {1}ms, audio duration {2}ms, file size {3}b, {4}"])}((t?window:Object).Recorder)}(); \ No newline at end of file diff --git a/public/js/recorder/i18n/es.js b/public/js/recorder/i18n/es.js new file mode 100644 index 000000000..a69ae2f69 --- /dev/null +++ b/public/js/recorder/i18n/es.js @@ -0,0 +1,6 @@ +/* +录音 +https://github.com/xiangyuecn/Recorder +src: i18n/es.js +*/ +!function(e){var a="object"==typeof window&&!!window.document;!function(e,a){"use strict";var o=e.i18n;e.CLog('Import Recorder i18n lang="es"');var i={lang:"es"};o.data.rtl$es=!1,o.data.desc$es="Spanish, Español, 西班牙语。Esta traducción proviene principalmente de: traducción de google + traducción de Baidu, traducida del chino al español. 此翻译主要来自:google翻译+百度翻译,由中文翻译成西班牙语。",o.put(i,["K8zP:Importación duplicada {1}","mSxV:Los {1} GetContext restantes no han sido close","nMIy: (Nota: ctx no está en estado running. Se debe llamar al menos a uno de rec.open y start durante la operación del usuario (tocar, hacer clic, etc.); de lo contrario, se intentará ctx.resume durante rec.start, lo que puede causar compatibilidad problemas (solo iOS), consulte la configuración de runningContext en la documentación) ","eS8i:El sampleRate {1} de la transmisión no es igual a {2} y se realizará la conversión de sampleRate (nota: la calidad del sonido no mejorará o incluso puede empeorar). Este fenómeno ocurre principalmente cuando echoCancellation no está desactivado en el terminal móvil. Cuando el navegador tiene echoCancellation, es posible que solo se devuelvan datos de audio con una frecuencia de muestreo de 16k. ","ZGlf:. Debido a las 375 devoluciones de llamadas por segundo dentro de {1}, puede haber problemas de rendimiento en el lado móvil que pueden provocar que se pierdan las devoluciones de llamadas y que la grabación sea más corta. No hay ningún impacto en el lado de la PC. No se recomienda habilitar {1} por el momento.","7TU0:Connect utiliza el antiguo {1}, ","JwCL:Pero {1} está configurado para intentar habilitar {2}","VGjB:Puedes configurar {1} para intentar habilitar {2}","MxX1:{1} no devolvió ningún audio, continúe usando {2}","XUap:{1} devolución de llamada redundante","yOta:Connect usa {1}, configurar {2} puede restaurar el antiguo {3}","VwPd: (Este navegador no soporta {1}) ","vHnb:{1} no devuelve audio, se ha degradado para usar {2}","O9P7:{1} devolución de llamada redundante","LMEm:Connect usa {1}, configure {2} para volver a {3} o al antiguo {4}","d48C:La frecuencia de muestreo del filtro de {1} ha cambiado y el filtro se ha restablecido","tlbC:{1} parece haber introducido chunk {2} sin restablecer","VtS4:{1} y {2} deben ser valores numéricos","5tWi:Error al grabar open: ","dFm8:open fue cancelado","VtJO:open fue interrumpido","EMJq:, puedes probar la solución RecordApp","A5bm:No se puede grabar: ","1iU7:Este navegador no admite la recuperación de grabaciones de transmisiones","BTW2:No se pudo abrir la grabación desde la transmisión: ","Nclz:Sin permiso para grabar (entre dominios, intente agregar una política de acceso al micrófono al iframe, como {1})","jBa9:, no hay micrófono disponible","gyO5:Usuario denegado permiso de grabación","oWNo:El navegador prohíbe el registro de páginas no seguras, lo que se puede solucionar activando https","COxc:Este navegador no admite la grabación","upb8:Descubrí que se llamó a open varias veces al mismo tiempo","Q1GA:La función de grabación no funciona: no hay transmisión de audio","KxE2:, intentaré deshabilitar echoCancellation y volveré a intentarlo","xEQR:Error al solicitar permiso de grabación","bDOG:No se puede grabar: ","IjL3:Nota: Se ha configurado el parámetro {1}, lo que puede provocar que el navegador no seleccione correctamente el micrófono, o que el terminal móvil no habilite echoCancellation, etc. ","RiWe:, cuando no se configura {1}, el navegador puede habilitar automáticamente la cancelación de eco. Cuando la cancelación de eco no está deshabilitada en el terminal móvil, el volumen de reproducción del sistema puede reducirse (se puede restaurar después de cerrar la grabación) y solo se proporciona una transmisión de audio con una frecuencia de muestreo de 16 k (cuando no se requiere la cancelación de eco, se puede configurar explícitamente para que se deshabilite y se obtenga una transmisión de alta calidad de 48 k). Consulte la configuración {2} en el documento","hWVz:close se ignora (debido a que se abren varios recs al mismo tiempo, solo el último será realmente close)","UHvm:descuido","Essp:No es compatible con la arquitectura {1}","2XBl:El tipo {1} no admite la configuración de takeoffEncodeChunk","LG7e:(sin codificador cargado)","7uMV:El entorno {1} no admite el procesamiento en tiempo real","4Kfd:Compensación {1}ms","bM5i:{1} ms sin compensar","gFUF:No se permiten errores en las devoluciones de llamada y se debe garantizar que no se produzcan excepciones","2ghS:Bajo rendimiento, tarda {1} ms","ufqH:Los buffers no se pueden borrar antes de entrar asíncrono","6WmN:start falló: no open","kLDN:start, comenzar a grabar, ","Bp2y:start fue interrumpido","upkE:, es posible que no sea posible grabar: ","Xq4s:stop, diferencia horaria con start: ","3CQP:compensar: ","u8JG:No se pudo finalizar la grabación: ","1skY:, por favor establece {1}","Wv7l:Finalizar la grabación. La codificación tarda {1} ms. La duración del audio es de {2} ms. El tamaño del archivo es {3}b","Vkbd:El codificador {1} no devuelve {2}","QWnr:Después de habilitar takeoffEncodeChunk, la longitud del blob devuelta por stop es 0 y no se proporcionan datos de audio","Sz2H:El {1} generado no es válido","wf9t:Grabación no iniciada","Dl2c:, no hay interacción del usuario antes de comenzar a grabar, lo que hace que AudioContext no se ejecute","Ltz3:No se recopiló ninguna grabación","xGuI:El codificador de {1} no está cargado. Intente encontrar el codificador de {1} en src/engine de {2} y cárguelo","AxOH:Error de grabación: ","xkKd:Se liberan los buffers de audio","CxeT:Muestra: {1} Flor: {2}ms","NonBrowser-1:Entorno sin navegador, no es compatible con {1}","IllegalArgs-1:Error de parámetro: {1}","NeedImport-2:Para llamar a {1}, primero debes importar {2}","NotSupport-1:No compatible: {1}","8HO5:Anular importación {1}"]),o.put(i,["b2mN:AMR-NB (NarrowBand), la configuración sampleRate no es válida (solo se proporcionan 8000 hz), rango bitRate: {1} (predeterminado 12.2 kbps), un cuadro de 20 ms, {2} bytes; los navegadores generalmente no admiten la reproducción en formato amr, disponible Recorder.amr2wav() Transcodifica a wav para reproducción","tQBv:AMR Info: no coincide con el conjunto {1}, se ha actualizado a {2}","q12D:Los datos sampleRate están por debajo de {1}","TxjV:La versión actual del navegador es demasiado baja y no se puede procesar en tiempo real","Q7p7:takeoffEncodeChunk se hace cargo de la salida de datos binarios del codificador AMR. Solo los primeros datos de devolución de llamada (primer cuadro) contienen el encabezado AMR; al fusionarlos en un archivo AMR, si los datos del primer cuadro no están incluidos, el encabezado AMR debe agregarse en el comienzo del archivo: Recorder.AMR.AMR_HEADER (convertido a binario), de lo contrario no se puede reproducir","6o9Z:El entorno actual no es compatible con Web Worker y el codificador en tiempo real amr se ejecuta en el hilo principal","yYWs:a amr worker le quedan {1} no stop","jOi8:codificador amr no start"]),o.put(i,["O8Gn:Ogg Vorbis, el valor de bitRate es de 16-100 kbps, el valor de sampleRate es ilimitado","5si6:La versión actual del navegador es demasiado baja y no se puede procesar en tiempo real","R8yz:takeoffEncodeChunk se hace cargo de la salida de datos binarios del codificador OggVorbis. Ogg se compone de páginas de datos. Una página contiene múltiples fotogramas de datos de audio (incluidos varios segundos de audio. Una página de datos no se puede decodificar ni reproducir por separado). Cada salida de este codificador está completo. Una página de datos, por lo que el rendimiento en tiempo real será relativamente bajo; al fusionar en un archivo ogg completo, todos los datos de salida deben fusionarse; de ​​lo contrario, es posible que no se reproduzca y no se admita intercepte la parte media y decodifíquela y reprodúzcala por separado","hB9D:El entorno actual no admite Web Workers y el codificador en tiempo real OggVorbis se ejecuta en el hilo principal","oTiy:a ogg worker le quedan {1} no stop","dIpw:codificador ogg no start"]),o.put(i,["L49q:Este navegador no admite la codificación webm y MediaRecorder no está implementado","tsTW:Sólo los navegadores más nuevos lo admiten y la tasa de compresión es similar a la de mp3. Dado que no hay forma de codificar rápidamente los datos pcm existentes, los datos sólo se pueden importar a MediaRecorder de forma similar a la reproducción y escucha, y hay que esperar unos segundos. Aunque el tamaño del archivo de audio de salida se puede controlar mediante la velocidad de bits, la velocidad de bits en el archivo de audio no es la velocidad de bits establecida. Dado que la frecuencia de muestreo la probamos nosotros mismos, podemos hacer lo que queramos con este codificador","aG4z:Este navegador no admite la conversión de grabaciones al formato webm","PIX0:Error al transcodificar webm: {1}"]),o.put(i,["d8YX:{1}; {2} El archivo de audio no se puede reproducir directamente. Puede utilizar Recorder.{2}2wav() para transcodificarlo a wav para su reproducción; la configuración de velocidad de bits de frecuencia de muestreo no es válida y está fijada en 8000 hz de muestreo velocidad, 16 bits, y cada muestra está comprimida. en un almacenamiento de 8 bits, el tamaño del archivo de audio es 8000 bytes/segundo; si necesita compatibilidad con cualquier frecuencia de muestreo, utilice el método Recorder.{2}_encode()","29UK:Los datos sampleRate están por debajo de {1}","quVJ:codificador {1} no start"]),o.put(i,["Zm7L:rango sampleRate: {1}; rango bitRate: {2} (diferentes bitRate admiten diferentes rangos sampleRate. Cuando es inferior a 32 kbps, sampleRate debe ser inferior a 32000)","eGB9:{1} no está en el rango de valores soportado por mp3: {2}","zLTa:sampleRate se ha actualizado a {1} porque {2} no está en el rango de valores admitido por mp3: {3}","yhUs:La versión actual del navegador es demasiado baja y no se puede procesar en tiempo real","k9PT:El entorno actual no es compatible con Web Worker y el codificador en tiempo real mp3 se ejecuta en el hilo principal","fT6M:a mp3 worker le quedan {1} no stop","mPxH:codificador mp3 no start","uY9i:No coincide con la configuración {1}, se ha actualizado a {2}","iMSm:Fix elimina {1} fotogramas","b9zm:Eliminar demasiados fotogramas"]),o.put(i,["fWsN:pcm son datos de audio originales no encapsulados. Los archivos de audio Pcm no se pueden reproducir directamente. Recorder.pcm2wav() se puede utilizar para transcodificar a wav para su reproducción. Admite dígitos de 8 y 16 bits (rellene bitRate) y el valor de sampleRate es ilimitado","uMUJ:PCM Info: El bit {1} no es compatible y se ha actualizado al bit {2}","KmRz:pcm2wav debe proporcionar sampleRate y bitRate","sDkA:codificador pcm no start"]),o.put(i,["gPSE:Admite dígitos de 8 y 16 bits (completados en bitRate) y el valor de sampleRate es ilimitado; este codificador solo agrega un encabezado wav de 44 bytes antes de los datos pcm, y el archivo wav codificado de 16 bits elimina los 44 bits iniciales. Bytes para obtener pcm (nota: es posible que otros codificadores WAV no tengan 44 bytes)","wyw9:WAV Info: El bit {1} no es compatible y se ha actualizado al bit {2}"]),o.put(i,["0XYC:El método getAudioSrc está obsoleto: utilice getMediaStream directamente y asígnelo a audio.srcObject. Solo se permite llamar a este método en navegadores que no admiten srcObject y asignarlo a audio.src por compatibilidad","6DDt:start es cancelado por stop","I4h4:{1} se repite start","P6Gs:El navegador no admite la apertura de {1}","JwDm: (Nota: ctx no está en estado running. Es necesario llamar a start cuando el usuario opera (tocar, hacer clic, etc.); de lo contrario, se intentará ctx.resume, lo que puede causar problemas de compatibilidad (solo iOS). Consulte la configuración runningContext en el documento) ","qx6X:La implementación AudioBuffer de este navegador no admite funciones dinámicas y utiliza el modo de compatibilidad","cdOx:Tiempo de espera de detección del entorno","S2Bu:No puede jugar: {1}","ZfGG:Falló la llamada input: no PCM [int16,...] al ingresar, se debe decodificar o usar la conversión transform","N4ke:Falló la llamada input: no se proporcionó sampleRate","IHZd:Falló la llamada a input: sampleRate={1} de los datos es diferente de la anterior ={2}","L8sC:El retraso es demasiado grande, se han descartado {1}ms, {2}","TZPq:{1} no se llama al método start","iCFC:El navegador no admite decodificación de audio","wE2k:Los datos de decodificación de audio deben ser ArrayBuffer","mOaT:Falló la decodificación de audio: {1}"]),o.put(i,["3RBa:Símbolo [{1}] no válido: {2}","U212:Nota [{1}] no válido: {2}","7qAD:Hay que alinearse a la hora de múltiples sonidos, con diferencias {1}ms","QGsW:Happy Birthday to You","emJR:For Elise","GsYy:Canon - símbolo de la mano derecha","bSFZ:Canon"]),o.put(i,["Ikdz:El entorno actual no admite Web Worker, no admite llamadas a Sonic.Async","IC5Y:sonic worker deja {1} sin flush"]),o.put(i,["WWoj:El método {2} en {1} no se implementa, por favor implemente este método en el archivo {3} o en el archivo de configuración","rCAM:No se inició la grabación, pero se recibieron los datos de Native PCM","t2OF:Detectado iframe entre dominios, NativeRecordReceivePCM no se puede inyectar en el nivel superior, se han monitoreado los datos de transmisión compatibles con el reenvío de postMessage, por favor, realice por sí mismo el reenvío de los datos recibidos en la capa superior a este iframe (capa ilimitada), de lo contrario no se pueden recibir los datos de grabación","Z2y2:Grabación no iniciada"]),o.put(i,["uXtA:Importación duplicada {1}","kIBu:Nota: Debido a que se llaman simultáneamente otros métodos relacionados con la grabación, el resultado de la llamada actual de {1} se ha descartado y no habrá devolución de llamada","ha2K:Doble registro {1}","wpTL:Solo limpiar recursos","bpvP:Grabación no iniciada","fLJD:El entorno actual no admite devoluciones de llamada en tiempo real y no se puede realizar {1}","YnzX:La solicitud de permiso de grabación falló: ","nwKR:Primero hay que llamar a {1}","citA:Actualmente no es un entorno de navegador, es necesario introducir un archivo de soporte para esta plataforma ({1}), o llamar al {2} para lograr su propio acceso.","ecp9:Falló al iniciar la grabación: ","EKmS:No se puede grabar: ","k7Qo:Se ha iniciado la grabación","Douz:Falló al finalizar la grabación: ","wqSH:Diferencia horaria con start: {1}ms","g3VX:Terminar la grabación lleva tiempo {1}ms , duración del audio {2}ms , tamaño del archivo {3}b , {4}"])}((a?window:Object).Recorder)}(); \ No newline at end of file diff --git a/public/js/recorder/i18n/fr.js b/public/js/recorder/i18n/fr.js new file mode 100644 index 000000000..af159aaf4 --- /dev/null +++ b/public/js/recorder/i18n/fr.js @@ -0,0 +1,6 @@ +/* +录音 +https://github.com/xiangyuecn/Recorder +src: i18n/fr.js +*/ +!function(e){var t="object"==typeof window&&!!window.document;!function(e,t){"use strict";var n=e.i18n;e.CLog('Import Recorder i18n lang="fr"');var r={lang:"fr"};n.data.rtl$fr=!1,n.data.desc$fr="French, Français, 法语。Cette traduction provient principalement de : traduction google + traduction Baidu, traduit du chinois vers le français. 此翻译主要来自:google翻译+百度翻译,由中文翻译成法语。",n.put(r,["K8zP:Répéter l'importation {1}","mSxV:Les {1} GetContext restants n'ont pas été close","nMIy: (Remarque : ctx n'est pas dans l'état running. Au moins l'un des rec.open et start doit être appelé pendant l'opération de l'utilisateur (toucher, cliquer, etc.), sinon ctx.resume sera tenté pendant rec.start, ce qui peut entraîner une compatibilité. problèmes (iOS uniquement), voir la configuration de runningContext dans la documentation) ","eS8i:Si le sampleRate {1} du Stream n'est pas égal à {2}, la conversion sampleRate sera effectuée (attention : la qualité du son ne s'améliorera pas ou pourra même se dégrader. Ce phénomène se produit principalement lorsque echoCancellation n'est pas désactivé sur le mobile). terminal Lorsque le navigateur a echoCancellation, seules les données audio avec un taux d'échantillonnage de 16k seront renvoyées. ","ZGlf:. En raison des 375 rappels par seconde dans un délai de {1}, il peut y avoir des problèmes de performances du côté mobile qui peuvent entraîner la perte des rappels et un raccourcissement de l'enregistrement. Il n'y a aucun impact du côté PC. Il n'est pas recommandé d'activer {1} pour le moment.","7TU0:Connect utilise l'ancien {1}, ","JwCL:Mais {1} est configuré pour essayer d'activer {2}","VGjB:Vous pouvez configurer {1} pour essayer d'activer {2}","MxX1:{1} n'a renvoyé aucun son et a repris l'utilisation de {2}","XUap:{1} rappel redondant","yOta:Connect utilise {1} et la configuration de {2} peut restaurer l'ancien {3}","VwPd: (Ce navigateur ne prend pas en charge {1}) ","vHnb:{1} ne renvoie aucun audio, rétrogradez pour utiliser {2}","O9P7:{1} rappel redondant","LMEm:Connect utilise {1}, la configuration de {2} peut restaurer l'utilisation de {3} ou de l'ancien {4}","d48C:Le taux d'échantillonnage du filtre de {1} a changé, réinitialisez le filtre","tlbC:{1} semble passer dans chunk {2} qui n'est pas réinitialisé","VtS4:{1} et {2} doivent être des valeurs numériques","5tWi:L'enregistrement de open a échoué : ","dFm8:open a été annulé","VtJO:open a été interrompu","EMJq:, vous pouvez essayer la solution RecordApp","A5bm:Impossible d'enregistrer : ","1iU7:Ce navigateur ne prend pas en charge la récupération d'enregistrements à partir de flux","BTW2:Échec de l'ouverture de l'enregistrement à partir du flux : ","Nclz:Aucune autorisation d'enregistrement (inter-domaine, veuillez essayer d'ajouter une stratégie d'accès au microphone à l'iframe, telle que {1})","jBa9:, pas de micro disponible","gyO5:L'utilisateur a refusé l'autorisation d'enregistrement","oWNo:Le navigateur interdit l'enregistrement des pages dangereuses, ce qui peut être résolu en activant https","COxc:Ce navigateur ne prend pas en charge l'enregistrement","upb8:J'ai constaté que open était appelé plusieurs fois en même temps","Q1GA:La fonction d'enregistrement ne fonctionne pas : pas de flux audio","KxE2:, je vais essayer de désactiver echoCancellation et réessayer","xEQR:Erreur lors de la demande d'autorisation d'enregistrement","bDOG:Impossible d'enregistrer : ","IjL3:Remarque : Le paramètre {1} a été configuré, ce qui peut empêcher le navigateur de sélectionner correctement le microphone ou le terminal mobile de ne pas activer echoCancellation, etc. ","RiWe:, lorsque {1} n'est pas configuré, le navigateur peut activer automatiquement echoCancellation. Lorsque echoCancellation n'est pas désactivé sur le terminal mobile, le volume de lecture du système peut être réduit (peut être restauré après la fermeture de l'enregistrement) et seul le flux audio à 16 k de fréquence d'échantillonnage est fourni (lorsque echoCancellation n'est pas requis, il peut être explicitement configuré pour être désactivé afin d'obtenir un flux de haute qualité à 48 k). Veuillez vous référer à la configuration {2} dans le document","hWVz:close est ignoré (car plusieurs recs sont ouverts en même temps, seul le dernier sera en fait close)","UHvm:négligence","Essp:Ne prend pas en charge l'architecture {1}","2XBl:Le type {1} ne prend pas en charge le paramètre takeoffEncodeChunk","LG7e:(aucun encodeur chargé)","7uMV:L'environnement {1} ne prend pas en charge le traitement en temps réel","4Kfd:Compensation {1} ms","bM5i:Non compensé {1} ms","gFUF:Les erreurs dans les rappels ne sont pas autorisées et doivent être assurées qu'aucune exception n'est levée","2ghS:Faible performance, prend {1} ms","ufqH:Les buffers ne peuvent pas être effacés avant d'entrer en mode asynchrone","6WmN:Échec de start: pas open","kLDN:start, démarre l'enregistrement, ","Bp2y:start a été interrompu","upkE:, l'enregistrement peut ne pas être possible : ","Xq4s:stop, décalage horaire avec start : ","3CQP:compenser: ","u8JG:Échec de la fin de l'enregistrement : ","1skY:, veuillez définir {1}","Wv7l:Terminer l'enregistrement. L'encodage prend {1} ms. La durée audio est de {2} ms. La taille du fichier est de {3}b","Vkbd:L'encodeur {1} ne renvoie pas {2}","QWnr:Après avoir activé takeoffEncodeChunk, la longueur du blob renvoyée par stop est 0 et aucune donnée audio n'est fournie","Sz2H:Le {1} généré n'est pas valide","wf9t:L'enregistrement n'a pas démarré","Dl2c:, il n'y a aucune interaction de l'utilisateur avant de démarrer l'enregistrement, ce qui empêche AudioContext de s'exécuter","Ltz3:Aucun enregistrement n'a été collecté","xGuI:L'encodeur {1} n'est pas chargé. Veuillez essayer de trouver l'encodeur {1} dans src/engine de {2} et de le charger","AxOH:Erreur d'enregistrement : ","xkKd:Les tampons audio sont libérés","CxeT:Échantillon : {1} Fleur : {2}ms","NonBrowser-1:Environnement sans navigateur, ne prend pas en charge {1}","IllegalArgs-1:Erreur de paramètre : {1}","NeedImport-2:Pour appeler {1}, vous devez d'abord importer {2}","NotSupport-1:Non pris en charge : {1}","8HO5:Remplacer l'importation {1}"]),n.put(r,["b2mN:AMR-NB (NarrowBand), le paramètre sampleRate n'est pas valide (seul 8000 Hz est fourni), plage bitRate : {1} (par défaut 12.2 kbps), une image 20 ms, {2} octets ; les navigateurs ne prennent généralement pas en charge la lecture du format amr, disponible Recorder.amr2wav() Transcoder en wav pour la lecture","tQBv:AMR Info : ne correspond pas à l'ensemble {1}, a été mis à jour vers {2}","q12D:Les données sampleRate sont inférieures à {1}","TxjV:La version actuelle du navigateur est trop basse et ne peut pas être traitée en temps réel","Q7p7:takeoffEncodeChunk prend en charge les données binaires sorties par l'encodeur AMR. Seules les premières données de rappel (première image) contiennent l'en-tête AMR ; lors de la fusion dans un fichier AMR, si les données de la première image ne sont pas incluses, l'en-tête AMR doit être ajouté à la début du fichier : Recorder.AMR.AMR_HEADER (converti en binaire), sinon il ne peut pas être lu","6o9Z:L'environnement actuel ne prend pas en charge Web Worker et l'encodeur en temps réel amr s'exécute dans le thread principal","yYWs:amr worker reste {1} non stop","jOi8:encodeur amr pas start"]),n.put(r,["O8Gn:Ogg Vorbis, la valeur bitRate est de 16 à 100 kbps, la valeur sampleRate est illimitée","5si6:La version actuelle du navigateur est trop basse et ne peut pas être traitée en temps réel","R8yz:takeoffEncodeChunk prend en charge les données binaires sorties par l'encodeur OggVorbis. Ogg est composé de pages de données. Une page contient plusieurs images de données audio (y compris plusieurs secondes d'audio. Une page de données ne peut pas être décodée et lue séparément). Chaque sortie de ce L'encodeur est complet. Une page de données, donc les performances en temps réel seront relativement faibles ; lors de la fusion dans un fichier ogg complet, toutes les données de sortie doivent être fusionnées ensemble, sinon elles risquent de ne pas être lues et ne sont pas prises en charge. interceptez la partie médiane, décodez-la et jouez-la séparément","hB9D:L'environnement actuel ne prend pas en charge les Web Workers et l'encodeur en temps réel OggVorbis s'exécute dans le thread principal.","oTiy:ogg worker reste {1} non stop","dIpw:encodeur ogg pas start"]),n.put(r,["L49q:Ce navigateur ne prend pas en charge l'encodage Webm et MediaRecorder n'est pas implémenté","tsTW:Seuls les navigateurs les plus récents le prennent en charge et le taux de compression est similaire à celui du mp3. Puisqu'il n'existe aucun moyen d'encoder rapidement les données pcm existantes, les données ne peuvent être importées dans MediaRecorder que d'une manière similaire de lecture et d'écoute, et vous devez attendre quelques secondes. Bien que la taille du fichier audio de sortie puisse être contrôlée par le débit binaire, le débit binaire du fichier audio n'est pas le débit binaire défini. Puisque le taux d'échantillonnage est échantillonné par nous-mêmes, nous pouvons faire ce que nous voulons avec cet encodeur","aG4z:Ce navigateur ne prend pas en charge la conversion des enregistrements au format Webm","PIX0:Erreur de transcodage Webm : {1}"]),n.put(r,["d8YX:{1} ; {2} Le fichier audio ne peut pas être lu directement. Vous pouvez utiliser Recorder.{2}2wav() pour le transcoder en wav pour la lecture ; le paramètre de débit binaire du taux d'échantillonnage n'est pas valide et est fixé à 8 000 hz. taux, 16 bits, et chaque échantillon est compressé. dans un stockage de 8 bits, la taille du fichier audio est de 8 000 octets/seconde ; si vous avez besoin de prise en charge pour un taux d'échantillonnage, veuillez utiliser la méthode Recorder.{2}_encode()","29UK:Les données sampleRate sont inférieures à {1}","quVJ:encodeur {1} pas start"]),n.put(r,["Zm7L:Plage sampleRate : {1} ; plage bitRate : {2} (différents bitRate prennent en charge différentes plages sampleRate. Lorsqu'il est inférieur à 32 kbit/s, le sampleRate doit être inférieur à 32000)","eGB9:{1} n'est pas dans la plage de valeurs prise en charge par mp3 : {2}","zLTa:sampleRate a été mis à jour à {1} car {2} n'est pas dans la plage de valeurs prise en charge par mp3 : {3}","yhUs:La version actuelle du navigateur est trop basse et ne peut pas être traitée en temps réel","k9PT:L'environnement actuel ne prend pas en charge Web Worker et l'encodeur en temps réel mp3 s'exécute dans le thread principal","fT6M:mp3 worker left {1} unstopped","mPxH:encodeur mp3 pas start","uY9i:Ne correspond pas au paramètre {1}, a été mis à jour vers {2}","iMSm:Fix supprime {1} images","b9zm:Supprimer trop de cadres"]),n.put(r,["fWsN:pcm est une donnée audio originale non encapsulée. Les fichiers audio Pcm ne peuvent pas être lus directement. Recorder.pcm2wav() peut être utilisé pour transcoder en wav pour la lecture. Il prend en charge 8 et 16 chiffres (remplis dans bitRate) et la valeur de sampleRate est illimitée.","uMUJ:PCM Info: Le bit {1} n'est pas pris en charge et a été mis à jour vers le bit {2}","KmRz:pcm2wav doit fournir sampleRate et bitRate","sDkA:encodeur pcm pas start"]),n.put(r,["gPSE:Prend en charge les chiffres de 8 bits et 16 bits (remplis dans bitRate) et la valeur de sampleRate est illimitée ; cet encodeur ajoute uniquement un en-tête wav de 44 octets avant les données pcm, et le fichier wav codé de 16 bits supprime les 44 premiers bits. Octets pour obtenir pcm (remarque : les autres encodeurs wav peuvent ne pas faire 44 octets)","wyw9:WAV Info: Le bit {1} n'est pas pris en charge et a été mis à jour vers le bit {2}"]),n.put(r,["0XYC:La méthode getAudioSrc est obsolète : veuillez utiliser getMediaStream directement et l'attribuer à audio.srcObject. Cette méthode ne peut être appelée que dans les navigateurs qui ne prennent pas en charge srcObject et attribuée à audio.src pour des raisons de compatibilité.","6DDt:start est terminé par stop","I4h4:Répétition {1} start","P6Gs:Le navigateur ne prend pas en charge l'ouverture de {1}","JwDm:(Remarque : ctx n'est pas dans l'état running. start doit être appelé lorsque l'utilisateur opère (toucher, cliquer, etc.), sinon ctx.resume sera tenté, ce qui peut entraîner des problèmes de compatibilité (iOS uniquement). Veuillez vous référer au configuration runningContext dans le document)","qx6X:L'implémentation AudioBuffer de ce navigateur ne prend pas en charge les fonctionnalités dynamiques et utilise le mode de compatibilité","cdOx:Expiration du délai de détection de l'environnement","S2Bu:Peut ne pas jouer: {1}","ZfGG:L'appel input a échoué: non - PCM [int16,...] en entrée, il doit être décodé ou converti avec transform","N4ke:L'appel input a échoué: sampleRate n'a pas été fourni","IHZd:L'appel input a échoué: sampleRate={1} de Data est différent de ={2} précédent","L8sC:Le délai est trop important, {1}ms ont été ignorées, {2}","TZPq:{1} la méthode start n'est pas appelée","iCFC:Le navigateur ne supporte pas le décodage audio","wE2k:Les données de décodage audio doivent être ArrayBuffer","mOaT:Le décodage audio a échoué: {1}"]),n.put(r,["3RBa:Le symbole [{1}] est invalide: {2}","U212:Note [{1}] invalide: {2}","7qAD:Doit être aligné lorsque plusieurs tonalités, différence {1}ms","QGsW:Happy Birthday to You","emJR:For Elise","GsYy:Canon - symbole de la main droite","bSFZ:Canon"]),n.put(r,["Ikdz:Web Worker n'est pas supporté dans l'environnement actuel, appel Sonic.Async n'est pas supporté","IC5Y:sonic worker reste {1} non flush"]),n.put(r,["WWoj:La méthode {2} dans {1} n'est pas implémentée, implémentez - la dans un fichier {3} ou dans un fichier de configuration","rCAM:L'enregistrement n'a pas commencé, mais les données Native PCM ont été reçues","t2OF:Iframe Cross - Domain détecté, NativeRecordReceivePCM ne peut pas être injecté à la couche supérieure, a écouté postMessage pour transmettre des données de transfert compatibles, s'il vous plaît implémenter vous - même pour transmettre les données reçues à la couche supérieure à cette iframe (couche illimitée), sinon les données d'enregistrement ne peuvent pas être reçues","Z2y2:L'enregistrement n'a pas commencé"]),n.put(r,["uXtA:Importation répétée {1}","kIBu:Remarque : Étant donné que d'autres méthodes liées à l'enregistrement sont appelées simultanément, le résultat de l'appel actuel de {1} a été ignoré et il n'y aura pas de rappel","ha2K:Enregistrement répété {1}","wpTL:Nettoyage des ressources uniquement","bpvP:L'enregistrement n'a pas commencé","fLJD:L'environnement actuel ne prend pas en charge le Callback en temps réel, impossible de faire {1}","YnzX:La demande d'autorisation d'enregistrement a échoué: ","nwKR:Appelez d'abord {1}","citA:Actuellement, ce n'est pas un environnement de navigateur, il est nécessaire d'introduire un fichier de support ({1}) pour cette plate - forme ou d'appeler {2} pour implémenter l'accès par vous - même","ecp9:Le début de l'enregistrement échoue: ","EKmS:Ne peut pas enregistrer: ","k7Qo:Enregistrement commencé","Douz:Fin de l'enregistrement échoué: ","wqSH:Et le décalage horaire de départ: {1}ms","g3VX:Fin de l'enregistrement, prend du temps {1}ms Durée audio {2}ms , taille du fichier {3}b , {4}"])}((t?window:Object).Recorder)}(); \ No newline at end of file diff --git a/public/js/recorder/i18n/zh-CN.js b/public/js/recorder/i18n/zh-CN.js new file mode 100644 index 000000000..24b5c3440 --- /dev/null +++ b/public/js/recorder/i18n/zh-CN.js @@ -0,0 +1,6 @@ +/* +录音 +https://github.com/xiangyuecn/Recorder +src: i18n/zh-CN.js +*/ +!function(e){var i="object"==typeof window&&!!window.document;!function(e,i){"use strict";var n=e.i18n;e.CLog('Import Recorder i18n lang="zh-CN"');n.alias["zh-CN"]="zh";n.data.rtl$zh=!1,n.data.desc$zh="Simplified Chinese, 简体中文。代码内置完整的中文支持,无需额外翻译,本文件存在的意义是方便查看支持的语言。"}((i?window:Object).Recorder)}(); \ No newline at end of file diff --git a/resources/assets/js/pages/manage/components/ChatInput/index.vue b/resources/assets/js/pages/manage/components/ChatInput/index.vue index d89d604d8..d5ea20d2b 100755 --- a/resources/assets/js/pages/manage/components/ChatInput/index.vue +++ b/resources/assets/js/pages/manage/components/ChatInput/index.vue @@ -305,7 +305,7 @@ import TransferDom from "../../../../directives/transfer-dom"; import clickoutside from "../../../../directives/clickoutside"; import longpress from "../../../../directives/longpress"; import {inputLoadAdd, inputLoadIsLast, inputLoadRemove} from "./one"; -import {languageList} from "../../../../language"; +import {languageList, languageName} from "../../../../language"; import {isMarkdownFormat} from "../../../../utils/markdown"; import emitter from "../../../../store/events"; @@ -1095,14 +1095,17 @@ export default { // Load recorder if (!this.disabledRecord) { + const i18nLang = languageName === "zh" || languageName === "zh-CHT" ? "zh-CN" : "en-US"; $A.loadScriptS([ 'js/recorder/recorder.mp3.min.js', 'js/recorder/lib.fft.js', 'js/recorder/frequency.histogram.view.js', + `js/recorder/i18n/${i18nLang}.js`, ]).then(_ => { if (typeof window.Recorder !== 'function') { return; } + window.Recorder.i18n.lang = i18nLang this.recordRec = window.Recorder({ type: "mp3", bitRate: 64, diff --git a/resources/assets/statics/public/js/recorder/i18n/Template.js b/resources/assets/statics/public/js/recorder/i18n/Template.js new file mode 100644 index 000000000..39140ef4d --- /dev/null +++ b/resources/assets/statics/public/js/recorder/i18n/Template.js @@ -0,0 +1,6 @@ +/* +录音 +https://github.com/xiangyuecn/Recorder +src: i18n/Template.js +*/ +!function(t){var a="object"==typeof window&&!!window.document;!function(t,a){"use strict";var u=t.i18n;t.CLog('Import Recorder i18n lang="Your-Language-Name"');var e={lang:u.alias["Your-Language-Name"]="your-language"};u.data["rtl$your-language"]=!1,u.data["desc$your-language"]="This file is a language translation template file. After copying and renaming, translate the text into the corresponding language. 此文件为语言翻译模板文件,复制并改名后,将文本翻译成对应语言即可。",u.put(e,["K8zP:","mSxV:","nMIy:","eS8i:","ZGlf:","7TU0:","JwCL:","VGjB:","MxX1:","XUap:","yOta:","VwPd:","vHnb:","O9P7:","LMEm:","d48C:","tlbC:","VtS4:","5tWi:","dFm8:","VtJO:","EMJq:","A5bm:","1iU7:","BTW2:","Nclz:","jBa9:","gyO5:","oWNo:","COxc:","upb8:","Q1GA:","KxE2:","xEQR:","bDOG:","IjL3:","RiWe:","hWVz:","UHvm:","Essp:","2XBl:","LG7e:","7uMV:","4Kfd:","bM5i:","gFUF:","2ghS:","ufqH:","6WmN:","kLDN:","Bp2y:","upkE:","Xq4s:","3CQP:","u8JG:","1skY:","Wv7l:","Vkbd:","QWnr:","Sz2H:","wf9t:","Dl2c:","Ltz3:","xGuI:","AxOH:","xkKd:","CxeT:","NonBrowser-1:","IllegalArgs-1:","NeedImport-2:","NotSupport-1:","8HO5:"]),u.put(e,["b2mN:","tQBv:","q12D:","TxjV:","Q7p7:","6o9Z:","yYWs:","jOi8:"]),u.put(e,["O8Gn:","5si6:","R8yz:","hB9D:","oTiy:","dIpw:"]),u.put(e,["L49q:","tsTW:","aG4z:","PIX0:"]),u.put(e,["d8YX:","29UK:","quVJ:"]),u.put(e,["Zm7L:","eGB9:","zLTa:","yhUs:","k9PT:","fT6M:","mPxH:","uY9i:","iMSm:","b9zm:"]),u.put(e,["fWsN:","uMUJ:","KmRz:","sDkA:"]),u.put(e,["gPSE:","wyw9:"]),u.put(e,["0XYC:","6DDt:","I4h4:","P6Gs:","JwDm:","qx6X:","cdOx:","S2Bu:","ZfGG:","N4ke:","IHZd:","L8sC:","TZPq:","iCFC:","wE2k:","mOaT:"]),u.put(e,["3RBa:","U212:","7qAD:","QGsW:","emJR:","GsYy:","bSFZ:"]),u.put(e,["Ikdz:","IC5Y:"]),u.put(e,["WWoj:","rCAM:","t2OF:","Z2y2:"]),u.put(e,["uXtA:","kIBu:","ha2K:","wpTL:","bpvP:","fLJD:","YnzX:","nwKR:","citA:","ecp9:","EKmS:","k7Qo:","Douz:","wqSH:","g3VX:"])}((a?window:Object).Recorder)}(); \ No newline at end of file diff --git a/resources/assets/statics/public/js/recorder/i18n/en-US.js b/resources/assets/statics/public/js/recorder/i18n/en-US.js new file mode 100644 index 000000000..db9b1e4d0 --- /dev/null +++ b/resources/assets/statics/public/js/recorder/i18n/en-US.js @@ -0,0 +1,6 @@ +/* +录音 +https://github.com/xiangyuecn/Recorder +src: i18n/en-US.js +*/ +!function(e){var t="object"==typeof window&&!!window.document;!function(e,t){"use strict";var o=e.i18n;e.CLog('Import Recorder i18n lang="en-US"');var n={lang:o.alias["en-US"]="en"};o.data.rtl$en=!1,o.data.desc$en="English, 英语。This translation mainly comes from: google translation + Baidu translation, translated from Chinese to English. 此翻译主要来自:google翻译+百度翻译,由中文翻译成英文。",o.put(n,["K8zP:Duplicate import {1}","mSxV:There are {1} GetContext unclosed","nMIy: (Note: ctx is not in the running state. At least one of rec.open and start must be called during user operations (touch, click, etc.), otherwise ctx.resume will be attempted during rec.start, which may cause compatibility issues (iOS only), please refer to the runningContext configuration in the documentation) ","eS8i:The sampleRate of the Stream {1} is not equal to {2}, so the sampleRate conversion will be performed (note: the sound quality will not improve and may even deteriorate). This phenomenon mainly occurs when echoCancellation is not disabled on the mobile terminal. When the browser has echoCancellation, it may only return audio data with a sampleRate of 16k. ","ZGlf:. Due to 375 callbacks in 1 second in {1}, there may be performance problems on the mobile side, which may cause the callback to be lost and the recording to be shortened, but it will not affect the PC side. It is not recommended to enable {1} for now.","7TU0:Connect uses the old {1}, ","JwCL:But {1} is set trying to enable {2}","VGjB:Can set {1} try to enable {2}","MxX1:{1} did not return any audio, reverting to {2}","XUap:{1} redundant callback","yOta:Connect uses {1}, set {2} to restore old-fashioned {3}","VwPd: (This browser does not support {1}) ","vHnb:{1} did not return any audio, downgrade to {2}","O9P7:{1} redundant callback","LMEm:Connect uses {1}, set {2} to restore to using {3} or old-fashioned {4}","d48C:The filter sampleRate of {1} has changed, reset the filter","tlbC:{1} seems to have passed in an unreset chunk {2}","VtS4:{1} and {2} must be number","5tWi:Recording open failed: ","dFm8:open cancelled","VtJO:open interrupted","EMJq:, you can try to use the RecordApp solution ","A5bm:Cannot record: ","1iU7:This browser does not support obtaining recordings from stream","BTW2:Failed to open recording from stream: ","Nclz:No permission to record (cross domain, please try adding microphone access policy to iframe, such as: {1})","jBa9:, no microphone available","gyO5:User denied recording permission","oWNo:Browser prohibits recording of unsafe pages, which can be resolved by enabling HTTPS","COxc:This browser does not support recording","upb8:It was found that open was called multiple times at the same time","Q1GA:Invalid recording: no audio stream","KxE2:, will try to disable echoCancellation and try again","xEQR:Error requesting recording permission","bDOG:Unable to record: ","IjL3:Note: The {1} parameter has been configured, which may cause the browser to not correctly select the microphone, or the mobile terminal to not enable echoCancellation, etc. ","RiWe:, when {1} is not configured, the browser may automatically enable echoCancellation. When echoCancellation is not disabled on the mobile terminal, the system playback volume may be reduced (can be restored after closing the recording) and only 16k sampleRate audio stream is provided (when echoCancellation is not required, it can be explicitly configured to disable to obtain 48k high-quality stream). Please refer to the {2} configuration in the document","hWVz:close is ignored (because multiple recs are open at the same time, only the last one will actually close)","UHvm:ignore","Essp:{1} architecture not supported","2XBl:{1} type does not support setting takeoffEncodeChunk","LG7e:(Encoder not loaded)","7uMV:{1} environment does not support real-time processing","4Kfd:Compensation {1}ms","bM5i:Uncompensated {1}ms","gFUF:Callback error is not allowed, you need to ensure that no exception will be thrown","2ghS:Low performance, took {1}ms","ufqH:Buffers cannot be cleared before entering async","6WmN:start failed: not open","kLDN:start recording, ","Bp2y:start was interrupted","upkE:, may fail to record: ","Xq4s:Stop and start time difference: ","3CQP:compensate: ","u8JG:Failed to stop recording: ","1skY:, please set {1}","Wv7l:Stop recording, encoding takes {1}ms, audio duration {2}ms, file size {3}b","Vkbd:{1} encoder returned not {2}","QWnr:After enabling takeoffEncodeChunk, the length of the blob returned by stop is 0 and no audio data is provided","Sz2H:Invalid generated {1}","wf9t:Recording not started","Dl2c:, No user interaction before starting recording, resulting in AudioContext not running","Ltz3:Recording not captured","xGuI:The {1} encoder is not loaded. Please try to find the {1} encoder in the src/engine directory of the {2} and load it","AxOH:Recording error: ","xkKd:Audio buffers are released","CxeT:Sampled: {1}, took: {2}ms","NonBrowser-1:Non-browser environment, does not support {1}","IllegalArgs-1:Illegal argument: {1}","NeedImport-2:Calling {1} needs to import {2} first","NotSupport-1:Not support: {1}","8HO5:Override import {1}"]),o.put(n,["b2mN:AMR-NB (NarrowBand), sampleRate setting is invalid (only 8000hz is provided), bitRate range: {1} (default 12.2kbps), one frame 20ms, {2} bytes; browsers generally do not support playing amr format, available Recorder.amr2wav() transcoding into wav playback","tQBv:AMR Info: does not match the set {1}, has been updated to {2}","q12D:Data sampleRate lower than {1}","TxjV:The current browser version is too low to process in real time","Q7p7:takeoffEncodeChunk takes over the binary data output by the AMR encoder, and only the first callback data (the first frame) contains the AMR header; when merging into an AMR file, if the first frame data is not included, the AMR header must be added at the beginning of the file: Recorder.AMR.AMR_HEADER (converted to binary), otherwise it cannot be played","6o9Z:The current environment does not support Web Worker, and the amr real-time encoder runs in the main thread","yYWs:amr worker left {1} unstopped","jOi8:amr encoder not started"]),o.put(n,["O8Gn:Ogg Vorbis, bitRate 16-100kbps, sampleRate unlimited","5si6:The current browser version is too low to process in real time","R8yz:takeoffEncodeChunk takes over the binary data output by the OggVorbis encoder. Ogg is composed of data pages. One page contains multiple frames of audio data (including a few seconds of audio, and one page of data cannot be decoded and played alone). This encoder outputs a complete page of data each time, so the real-time performance will be relatively low; when merging into a complete ogg file, all the output data must be merged together, otherwise it may not be able to play, and it does not support intercepting the middle part to decode and play separately","hB9D:The current environment does not support Web Worker, and the OggVorbis real-time encoder runs in the main thread","oTiy:There are {1} unstopped ogg workers","dIpw:ogg encoder not started"]),o.put(n,["L49q:This browser does not support webm encoding, MediaRecorder is not implemented","tsTW:Only newer browsers support it, and the compression rate is similar to mp3. Since there is no way to quickly encode the existing pcm data, the data can only be imported into MediaRecorder in a similar manner while playing and listening, and it takes a few seconds to wait for a few seconds. Although the output audio can control the file size through the bitRate, the bitRate in the audio file is not the set bitRate. Since the sampleRate is sampled by ourselves, we can do whatever we want with this encoder.","aG4z:This browser does not support converting recordings to webm format","PIX0:Error encoding webm: {1}"]),o.put(n,["d8YX:{1}; {2} audio files cannot be played directly, and can be transcoded into wav by Recorder.{2}2wav(); the sampleRate bitRate setting is invalid, fixed at 8000hz sampleRate, 16 bits, each sample is compressed into 8 bits for storage, and the audio file size is 8000 bytes/second; if you need any sampleRate support, please use Recorder.{2}_encode() Method","29UK:Data sampleRate lower than {1}","quVJ:{1} encoder not started"]),o.put(n,["Zm7L:sampleRate range: {1}; bitRate range: {2} (the sampleRate range supported by different bitRate is different, when the bitRate is less than 32kbps, the sampleRate must be less than 32000)","eGB9:{1} is not in the value range supported by mp3: {2}","zLTa:sampleRate has been updated to {1}, because {2} is not in the value range supported by mp3: {3}","yhUs:The current browser version is too low to process in real time","k9PT:The current environment does not support Web Worker, and the mp3 real-time encoder runs in the main thread","fT6M:There are {1} unstopped mp3 workers left","mPxH:mp3 encoder not started","uY9i:Does not match the set {1}, has been updated to {2}","iMSm:Fix remove {1} frame","b9zm:Remove too many frames"]),o.put(n,["fWsN:pcm is unencapsulated original audio data, pcm audio files cannot be played directly, and can be transcoded into wav by Recorder.pcm2wav(); it supports 8-bit and 16-bit bits (fill in the bitRate), and the sampleRate is unlimited","uMUJ:PCM Info: {1} bit is not supported, has been updated to {2} bit","KmRz:pcm2wav must provide sampleRate and bitRate","sDkA:pcm encoder not started"]),o.put(n,["gPSE:Supports 8-bit and 16-bit bits (fill in the bitRate), and the sampleRate is unlimited; this encoder only adds a 44-byte wav header before the pcm data, and the encoded 16-bit wav file removes the beginning 44 bytes to get pcm (note: other wav encoders may not be 44 bytes)","wyw9:WAV Info: {1} bit is not supported, has been updated to {2} bit"]),o.put(n,["0XYC:The getAudioSrc method is obsolete: please use getMediaStream directly and then assign it to audio.srcObject, it is only allowed to call this method in browsers that do not support srcObject and assign it to audio.src for compatibility","6DDt:start is terminated by stop","I4h4:{1} repeat start","P6Gs:The browser does not support opening {1}","JwDm: (Note: ctx is not in the running state, start needs to be called when the user operates (touch, click, etc.), otherwise it will try to perform ctx.resume, which may cause compatibility issues (only iOS), please refer to the runningContext configuration in the document) ","qx6X:The AudioBuffer implementation of this browser does not support dynamic features, use compatibility mode","cdOx:Environment detection timeout","S2Bu:Could not play: {1}","ZfGG:input call failed: non-pcm[Int16,...] input must be decoded or converted using transform","N4ke:input call failed: sampleRate not provided","IHZd:input call failed: sampleRate={1} of data is different from previous={2}","L8sC:The delay is too large, {1}ms has been discarded, {2}","TZPq:{1} did not call the start method","iCFC:Browser does not support audio decoding","wE2k:Audio decoding data must be ArrayBuffer","mOaT:Audio decoding failed: {1}"]),o.put(n,["3RBa:Invalid symbol [{1}]: {2}","U212:Invalid note [{1}]: {2}","7qAD:Multiple tones must be aligned, with a difference of {1}ms","QGsW:Happy Birthday to You","emJR:For Elise","GsYy:Canon - Right Hand Notation","bSFZ:Canon"]),o.put(n,["Ikdz:The current environment does not support Web Worker and does not support calling Sonic.Async","IC5Y:There are {1} unflushed sonic workers left"]),o.put(n,["WWoj:The {2} method in {1} is not implemented, please implement this method in the {3} file or configuration file","rCAM:Recording does not start, but Native PCM data is received","t2OF:A cross-domain iframe is detected. NativeRecordReceivePCM cannot be injected into the top layer. It has listened to postMessage to be compatible with data transmission. Please implement it by yourself to forward the data received by the top layer to this iframe (no limit on layer), otherwise the recording data cannot be received.","Z2y2:Recording not started"]),o.put(n,["uXtA:Duplicate import {1}","kIBu:Note: Because other recording-related methods are called concurrently, the current call result of {1} has been discarded and there will be no callback","ha2K:Duplicate registration {1}","wpTL:Clean resources only","bpvP:Recording not started","fLJD:The current environment does not support real-time callback and cannot be performed {1}","YnzX:Recording permission request failed: ","nwKR:Need to call {1} first","citA:This is not a browser environment. You need to import support files for this platform ({1}), or call {2} to implement the access yourself.","ecp9:Failed to start recording: ","EKmS:Cannot record: ","k7Qo:Recording started","Douz:Failed to stop recording: ","wqSH:Time difference from Start: {1}ms","g3VX:Stop recording, takes {1}ms, audio duration {2}ms, file size {3}b, {4}"])}((t?window:Object).Recorder)}(); \ No newline at end of file diff --git a/resources/assets/statics/public/js/recorder/i18n/es.js b/resources/assets/statics/public/js/recorder/i18n/es.js new file mode 100644 index 000000000..a69ae2f69 --- /dev/null +++ b/resources/assets/statics/public/js/recorder/i18n/es.js @@ -0,0 +1,6 @@ +/* +录音 +https://github.com/xiangyuecn/Recorder +src: i18n/es.js +*/ +!function(e){var a="object"==typeof window&&!!window.document;!function(e,a){"use strict";var o=e.i18n;e.CLog('Import Recorder i18n lang="es"');var i={lang:"es"};o.data.rtl$es=!1,o.data.desc$es="Spanish, Español, 西班牙语。Esta traducción proviene principalmente de: traducción de google + traducción de Baidu, traducida del chino al español. 此翻译主要来自:google翻译+百度翻译,由中文翻译成西班牙语。",o.put(i,["K8zP:Importación duplicada {1}","mSxV:Los {1} GetContext restantes no han sido close","nMIy: (Nota: ctx no está en estado running. Se debe llamar al menos a uno de rec.open y start durante la operación del usuario (tocar, hacer clic, etc.); de lo contrario, se intentará ctx.resume durante rec.start, lo que puede causar compatibilidad problemas (solo iOS), consulte la configuración de runningContext en la documentación) ","eS8i:El sampleRate {1} de la transmisión no es igual a {2} y se realizará la conversión de sampleRate (nota: la calidad del sonido no mejorará o incluso puede empeorar). Este fenómeno ocurre principalmente cuando echoCancellation no está desactivado en el terminal móvil. Cuando el navegador tiene echoCancellation, es posible que solo se devuelvan datos de audio con una frecuencia de muestreo de 16k. ","ZGlf:. Debido a las 375 devoluciones de llamadas por segundo dentro de {1}, puede haber problemas de rendimiento en el lado móvil que pueden provocar que se pierdan las devoluciones de llamadas y que la grabación sea más corta. No hay ningún impacto en el lado de la PC. No se recomienda habilitar {1} por el momento.","7TU0:Connect utiliza el antiguo {1}, ","JwCL:Pero {1} está configurado para intentar habilitar {2}","VGjB:Puedes configurar {1} para intentar habilitar {2}","MxX1:{1} no devolvió ningún audio, continúe usando {2}","XUap:{1} devolución de llamada redundante","yOta:Connect usa {1}, configurar {2} puede restaurar el antiguo {3}","VwPd: (Este navegador no soporta {1}) ","vHnb:{1} no devuelve audio, se ha degradado para usar {2}","O9P7:{1} devolución de llamada redundante","LMEm:Connect usa {1}, configure {2} para volver a {3} o al antiguo {4}","d48C:La frecuencia de muestreo del filtro de {1} ha cambiado y el filtro se ha restablecido","tlbC:{1} parece haber introducido chunk {2} sin restablecer","VtS4:{1} y {2} deben ser valores numéricos","5tWi:Error al grabar open: ","dFm8:open fue cancelado","VtJO:open fue interrumpido","EMJq:, puedes probar la solución RecordApp","A5bm:No se puede grabar: ","1iU7:Este navegador no admite la recuperación de grabaciones de transmisiones","BTW2:No se pudo abrir la grabación desde la transmisión: ","Nclz:Sin permiso para grabar (entre dominios, intente agregar una política de acceso al micrófono al iframe, como {1})","jBa9:, no hay micrófono disponible","gyO5:Usuario denegado permiso de grabación","oWNo:El navegador prohíbe el registro de páginas no seguras, lo que se puede solucionar activando https","COxc:Este navegador no admite la grabación","upb8:Descubrí que se llamó a open varias veces al mismo tiempo","Q1GA:La función de grabación no funciona: no hay transmisión de audio","KxE2:, intentaré deshabilitar echoCancellation y volveré a intentarlo","xEQR:Error al solicitar permiso de grabación","bDOG:No se puede grabar: ","IjL3:Nota: Se ha configurado el parámetro {1}, lo que puede provocar que el navegador no seleccione correctamente el micrófono, o que el terminal móvil no habilite echoCancellation, etc. ","RiWe:, cuando no se configura {1}, el navegador puede habilitar automáticamente la cancelación de eco. Cuando la cancelación de eco no está deshabilitada en el terminal móvil, el volumen de reproducción del sistema puede reducirse (se puede restaurar después de cerrar la grabación) y solo se proporciona una transmisión de audio con una frecuencia de muestreo de 16 k (cuando no se requiere la cancelación de eco, se puede configurar explícitamente para que se deshabilite y se obtenga una transmisión de alta calidad de 48 k). Consulte la configuración {2} en el documento","hWVz:close se ignora (debido a que se abren varios recs al mismo tiempo, solo el último será realmente close)","UHvm:descuido","Essp:No es compatible con la arquitectura {1}","2XBl:El tipo {1} no admite la configuración de takeoffEncodeChunk","LG7e:(sin codificador cargado)","7uMV:El entorno {1} no admite el procesamiento en tiempo real","4Kfd:Compensación {1}ms","bM5i:{1} ms sin compensar","gFUF:No se permiten errores en las devoluciones de llamada y se debe garantizar que no se produzcan excepciones","2ghS:Bajo rendimiento, tarda {1} ms","ufqH:Los buffers no se pueden borrar antes de entrar asíncrono","6WmN:start falló: no open","kLDN:start, comenzar a grabar, ","Bp2y:start fue interrumpido","upkE:, es posible que no sea posible grabar: ","Xq4s:stop, diferencia horaria con start: ","3CQP:compensar: ","u8JG:No se pudo finalizar la grabación: ","1skY:, por favor establece {1}","Wv7l:Finalizar la grabación. La codificación tarda {1} ms. La duración del audio es de {2} ms. El tamaño del archivo es {3}b","Vkbd:El codificador {1} no devuelve {2}","QWnr:Después de habilitar takeoffEncodeChunk, la longitud del blob devuelta por stop es 0 y no se proporcionan datos de audio","Sz2H:El {1} generado no es válido","wf9t:Grabación no iniciada","Dl2c:, no hay interacción del usuario antes de comenzar a grabar, lo que hace que AudioContext no se ejecute","Ltz3:No se recopiló ninguna grabación","xGuI:El codificador de {1} no está cargado. Intente encontrar el codificador de {1} en src/engine de {2} y cárguelo","AxOH:Error de grabación: ","xkKd:Se liberan los buffers de audio","CxeT:Muestra: {1} Flor: {2}ms","NonBrowser-1:Entorno sin navegador, no es compatible con {1}","IllegalArgs-1:Error de parámetro: {1}","NeedImport-2:Para llamar a {1}, primero debes importar {2}","NotSupport-1:No compatible: {1}","8HO5:Anular importación {1}"]),o.put(i,["b2mN:AMR-NB (NarrowBand), la configuración sampleRate no es válida (solo se proporcionan 8000 hz), rango bitRate: {1} (predeterminado 12.2 kbps), un cuadro de 20 ms, {2} bytes; los navegadores generalmente no admiten la reproducción en formato amr, disponible Recorder.amr2wav() Transcodifica a wav para reproducción","tQBv:AMR Info: no coincide con el conjunto {1}, se ha actualizado a {2}","q12D:Los datos sampleRate están por debajo de {1}","TxjV:La versión actual del navegador es demasiado baja y no se puede procesar en tiempo real","Q7p7:takeoffEncodeChunk se hace cargo de la salida de datos binarios del codificador AMR. Solo los primeros datos de devolución de llamada (primer cuadro) contienen el encabezado AMR; al fusionarlos en un archivo AMR, si los datos del primer cuadro no están incluidos, el encabezado AMR debe agregarse en el comienzo del archivo: Recorder.AMR.AMR_HEADER (convertido a binario), de lo contrario no se puede reproducir","6o9Z:El entorno actual no es compatible con Web Worker y el codificador en tiempo real amr se ejecuta en el hilo principal","yYWs:a amr worker le quedan {1} no stop","jOi8:codificador amr no start"]),o.put(i,["O8Gn:Ogg Vorbis, el valor de bitRate es de 16-100 kbps, el valor de sampleRate es ilimitado","5si6:La versión actual del navegador es demasiado baja y no se puede procesar en tiempo real","R8yz:takeoffEncodeChunk se hace cargo de la salida de datos binarios del codificador OggVorbis. Ogg se compone de páginas de datos. Una página contiene múltiples fotogramas de datos de audio (incluidos varios segundos de audio. Una página de datos no se puede decodificar ni reproducir por separado). Cada salida de este codificador está completo. Una página de datos, por lo que el rendimiento en tiempo real será relativamente bajo; al fusionar en un archivo ogg completo, todos los datos de salida deben fusionarse; de ​​lo contrario, es posible que no se reproduzca y no se admita intercepte la parte media y decodifíquela y reprodúzcala por separado","hB9D:El entorno actual no admite Web Workers y el codificador en tiempo real OggVorbis se ejecuta en el hilo principal","oTiy:a ogg worker le quedan {1} no stop","dIpw:codificador ogg no start"]),o.put(i,["L49q:Este navegador no admite la codificación webm y MediaRecorder no está implementado","tsTW:Sólo los navegadores más nuevos lo admiten y la tasa de compresión es similar a la de mp3. Dado que no hay forma de codificar rápidamente los datos pcm existentes, los datos sólo se pueden importar a MediaRecorder de forma similar a la reproducción y escucha, y hay que esperar unos segundos. Aunque el tamaño del archivo de audio de salida se puede controlar mediante la velocidad de bits, la velocidad de bits en el archivo de audio no es la velocidad de bits establecida. Dado que la frecuencia de muestreo la probamos nosotros mismos, podemos hacer lo que queramos con este codificador","aG4z:Este navegador no admite la conversión de grabaciones al formato webm","PIX0:Error al transcodificar webm: {1}"]),o.put(i,["d8YX:{1}; {2} El archivo de audio no se puede reproducir directamente. Puede utilizar Recorder.{2}2wav() para transcodificarlo a wav para su reproducción; la configuración de velocidad de bits de frecuencia de muestreo no es válida y está fijada en 8000 hz de muestreo velocidad, 16 bits, y cada muestra está comprimida. en un almacenamiento de 8 bits, el tamaño del archivo de audio es 8000 bytes/segundo; si necesita compatibilidad con cualquier frecuencia de muestreo, utilice el método Recorder.{2}_encode()","29UK:Los datos sampleRate están por debajo de {1}","quVJ:codificador {1} no start"]),o.put(i,["Zm7L:rango sampleRate: {1}; rango bitRate: {2} (diferentes bitRate admiten diferentes rangos sampleRate. Cuando es inferior a 32 kbps, sampleRate debe ser inferior a 32000)","eGB9:{1} no está en el rango de valores soportado por mp3: {2}","zLTa:sampleRate se ha actualizado a {1} porque {2} no está en el rango de valores admitido por mp3: {3}","yhUs:La versión actual del navegador es demasiado baja y no se puede procesar en tiempo real","k9PT:El entorno actual no es compatible con Web Worker y el codificador en tiempo real mp3 se ejecuta en el hilo principal","fT6M:a mp3 worker le quedan {1} no stop","mPxH:codificador mp3 no start","uY9i:No coincide con la configuración {1}, se ha actualizado a {2}","iMSm:Fix elimina {1} fotogramas","b9zm:Eliminar demasiados fotogramas"]),o.put(i,["fWsN:pcm son datos de audio originales no encapsulados. Los archivos de audio Pcm no se pueden reproducir directamente. Recorder.pcm2wav() se puede utilizar para transcodificar a wav para su reproducción. Admite dígitos de 8 y 16 bits (rellene bitRate) y el valor de sampleRate es ilimitado","uMUJ:PCM Info: El bit {1} no es compatible y se ha actualizado al bit {2}","KmRz:pcm2wav debe proporcionar sampleRate y bitRate","sDkA:codificador pcm no start"]),o.put(i,["gPSE:Admite dígitos de 8 y 16 bits (completados en bitRate) y el valor de sampleRate es ilimitado; este codificador solo agrega un encabezado wav de 44 bytes antes de los datos pcm, y el archivo wav codificado de 16 bits elimina los 44 bits iniciales. Bytes para obtener pcm (nota: es posible que otros codificadores WAV no tengan 44 bytes)","wyw9:WAV Info: El bit {1} no es compatible y se ha actualizado al bit {2}"]),o.put(i,["0XYC:El método getAudioSrc está obsoleto: utilice getMediaStream directamente y asígnelo a audio.srcObject. Solo se permite llamar a este método en navegadores que no admiten srcObject y asignarlo a audio.src por compatibilidad","6DDt:start es cancelado por stop","I4h4:{1} se repite start","P6Gs:El navegador no admite la apertura de {1}","JwDm: (Nota: ctx no está en estado running. Es necesario llamar a start cuando el usuario opera (tocar, hacer clic, etc.); de lo contrario, se intentará ctx.resume, lo que puede causar problemas de compatibilidad (solo iOS). Consulte la configuración runningContext en el documento) ","qx6X:La implementación AudioBuffer de este navegador no admite funciones dinámicas y utiliza el modo de compatibilidad","cdOx:Tiempo de espera de detección del entorno","S2Bu:No puede jugar: {1}","ZfGG:Falló la llamada input: no PCM [int16,...] al ingresar, se debe decodificar o usar la conversión transform","N4ke:Falló la llamada input: no se proporcionó sampleRate","IHZd:Falló la llamada a input: sampleRate={1} de los datos es diferente de la anterior ={2}","L8sC:El retraso es demasiado grande, se han descartado {1}ms, {2}","TZPq:{1} no se llama al método start","iCFC:El navegador no admite decodificación de audio","wE2k:Los datos de decodificación de audio deben ser ArrayBuffer","mOaT:Falló la decodificación de audio: {1}"]),o.put(i,["3RBa:Símbolo [{1}] no válido: {2}","U212:Nota [{1}] no válido: {2}","7qAD:Hay que alinearse a la hora de múltiples sonidos, con diferencias {1}ms","QGsW:Happy Birthday to You","emJR:For Elise","GsYy:Canon - símbolo de la mano derecha","bSFZ:Canon"]),o.put(i,["Ikdz:El entorno actual no admite Web Worker, no admite llamadas a Sonic.Async","IC5Y:sonic worker deja {1} sin flush"]),o.put(i,["WWoj:El método {2} en {1} no se implementa, por favor implemente este método en el archivo {3} o en el archivo de configuración","rCAM:No se inició la grabación, pero se recibieron los datos de Native PCM","t2OF:Detectado iframe entre dominios, NativeRecordReceivePCM no se puede inyectar en el nivel superior, se han monitoreado los datos de transmisión compatibles con el reenvío de postMessage, por favor, realice por sí mismo el reenvío de los datos recibidos en la capa superior a este iframe (capa ilimitada), de lo contrario no se pueden recibir los datos de grabación","Z2y2:Grabación no iniciada"]),o.put(i,["uXtA:Importación duplicada {1}","kIBu:Nota: Debido a que se llaman simultáneamente otros métodos relacionados con la grabación, el resultado de la llamada actual de {1} se ha descartado y no habrá devolución de llamada","ha2K:Doble registro {1}","wpTL:Solo limpiar recursos","bpvP:Grabación no iniciada","fLJD:El entorno actual no admite devoluciones de llamada en tiempo real y no se puede realizar {1}","YnzX:La solicitud de permiso de grabación falló: ","nwKR:Primero hay que llamar a {1}","citA:Actualmente no es un entorno de navegador, es necesario introducir un archivo de soporte para esta plataforma ({1}), o llamar al {2} para lograr su propio acceso.","ecp9:Falló al iniciar la grabación: ","EKmS:No se puede grabar: ","k7Qo:Se ha iniciado la grabación","Douz:Falló al finalizar la grabación: ","wqSH:Diferencia horaria con start: {1}ms","g3VX:Terminar la grabación lleva tiempo {1}ms , duración del audio {2}ms , tamaño del archivo {3}b , {4}"])}((a?window:Object).Recorder)}(); \ No newline at end of file diff --git a/resources/assets/statics/public/js/recorder/i18n/fr.js b/resources/assets/statics/public/js/recorder/i18n/fr.js new file mode 100644 index 000000000..af159aaf4 --- /dev/null +++ b/resources/assets/statics/public/js/recorder/i18n/fr.js @@ -0,0 +1,6 @@ +/* +录音 +https://github.com/xiangyuecn/Recorder +src: i18n/fr.js +*/ +!function(e){var t="object"==typeof window&&!!window.document;!function(e,t){"use strict";var n=e.i18n;e.CLog('Import Recorder i18n lang="fr"');var r={lang:"fr"};n.data.rtl$fr=!1,n.data.desc$fr="French, Français, 法语。Cette traduction provient principalement de : traduction google + traduction Baidu, traduit du chinois vers le français. 此翻译主要来自:google翻译+百度翻译,由中文翻译成法语。",n.put(r,["K8zP:Répéter l'importation {1}","mSxV:Les {1} GetContext restants n'ont pas été close","nMIy: (Remarque : ctx n'est pas dans l'état running. Au moins l'un des rec.open et start doit être appelé pendant l'opération de l'utilisateur (toucher, cliquer, etc.), sinon ctx.resume sera tenté pendant rec.start, ce qui peut entraîner une compatibilité. problèmes (iOS uniquement), voir la configuration de runningContext dans la documentation) ","eS8i:Si le sampleRate {1} du Stream n'est pas égal à {2}, la conversion sampleRate sera effectuée (attention : la qualité du son ne s'améliorera pas ou pourra même se dégrader. Ce phénomène se produit principalement lorsque echoCancellation n'est pas désactivé sur le mobile). terminal Lorsque le navigateur a echoCancellation, seules les données audio avec un taux d'échantillonnage de 16k seront renvoyées. ","ZGlf:. En raison des 375 rappels par seconde dans un délai de {1}, il peut y avoir des problèmes de performances du côté mobile qui peuvent entraîner la perte des rappels et un raccourcissement de l'enregistrement. Il n'y a aucun impact du côté PC. Il n'est pas recommandé d'activer {1} pour le moment.","7TU0:Connect utilise l'ancien {1}, ","JwCL:Mais {1} est configuré pour essayer d'activer {2}","VGjB:Vous pouvez configurer {1} pour essayer d'activer {2}","MxX1:{1} n'a renvoyé aucun son et a repris l'utilisation de {2}","XUap:{1} rappel redondant","yOta:Connect utilise {1} et la configuration de {2} peut restaurer l'ancien {3}","VwPd: (Ce navigateur ne prend pas en charge {1}) ","vHnb:{1} ne renvoie aucun audio, rétrogradez pour utiliser {2}","O9P7:{1} rappel redondant","LMEm:Connect utilise {1}, la configuration de {2} peut restaurer l'utilisation de {3} ou de l'ancien {4}","d48C:Le taux d'échantillonnage du filtre de {1} a changé, réinitialisez le filtre","tlbC:{1} semble passer dans chunk {2} qui n'est pas réinitialisé","VtS4:{1} et {2} doivent être des valeurs numériques","5tWi:L'enregistrement de open a échoué : ","dFm8:open a été annulé","VtJO:open a été interrompu","EMJq:, vous pouvez essayer la solution RecordApp","A5bm:Impossible d'enregistrer : ","1iU7:Ce navigateur ne prend pas en charge la récupération d'enregistrements à partir de flux","BTW2:Échec de l'ouverture de l'enregistrement à partir du flux : ","Nclz:Aucune autorisation d'enregistrement (inter-domaine, veuillez essayer d'ajouter une stratégie d'accès au microphone à l'iframe, telle que {1})","jBa9:, pas de micro disponible","gyO5:L'utilisateur a refusé l'autorisation d'enregistrement","oWNo:Le navigateur interdit l'enregistrement des pages dangereuses, ce qui peut être résolu en activant https","COxc:Ce navigateur ne prend pas en charge l'enregistrement","upb8:J'ai constaté que open était appelé plusieurs fois en même temps","Q1GA:La fonction d'enregistrement ne fonctionne pas : pas de flux audio","KxE2:, je vais essayer de désactiver echoCancellation et réessayer","xEQR:Erreur lors de la demande d'autorisation d'enregistrement","bDOG:Impossible d'enregistrer : ","IjL3:Remarque : Le paramètre {1} a été configuré, ce qui peut empêcher le navigateur de sélectionner correctement le microphone ou le terminal mobile de ne pas activer echoCancellation, etc. ","RiWe:, lorsque {1} n'est pas configuré, le navigateur peut activer automatiquement echoCancellation. Lorsque echoCancellation n'est pas désactivé sur le terminal mobile, le volume de lecture du système peut être réduit (peut être restauré après la fermeture de l'enregistrement) et seul le flux audio à 16 k de fréquence d'échantillonnage est fourni (lorsque echoCancellation n'est pas requis, il peut être explicitement configuré pour être désactivé afin d'obtenir un flux de haute qualité à 48 k). Veuillez vous référer à la configuration {2} dans le document","hWVz:close est ignoré (car plusieurs recs sont ouverts en même temps, seul le dernier sera en fait close)","UHvm:négligence","Essp:Ne prend pas en charge l'architecture {1}","2XBl:Le type {1} ne prend pas en charge le paramètre takeoffEncodeChunk","LG7e:(aucun encodeur chargé)","7uMV:L'environnement {1} ne prend pas en charge le traitement en temps réel","4Kfd:Compensation {1} ms","bM5i:Non compensé {1} ms","gFUF:Les erreurs dans les rappels ne sont pas autorisées et doivent être assurées qu'aucune exception n'est levée","2ghS:Faible performance, prend {1} ms","ufqH:Les buffers ne peuvent pas être effacés avant d'entrer en mode asynchrone","6WmN:Échec de start: pas open","kLDN:start, démarre l'enregistrement, ","Bp2y:start a été interrompu","upkE:, l'enregistrement peut ne pas être possible : ","Xq4s:stop, décalage horaire avec start : ","3CQP:compenser: ","u8JG:Échec de la fin de l'enregistrement : ","1skY:, veuillez définir {1}","Wv7l:Terminer l'enregistrement. L'encodage prend {1} ms. La durée audio est de {2} ms. La taille du fichier est de {3}b","Vkbd:L'encodeur {1} ne renvoie pas {2}","QWnr:Après avoir activé takeoffEncodeChunk, la longueur du blob renvoyée par stop est 0 et aucune donnée audio n'est fournie","Sz2H:Le {1} généré n'est pas valide","wf9t:L'enregistrement n'a pas démarré","Dl2c:, il n'y a aucune interaction de l'utilisateur avant de démarrer l'enregistrement, ce qui empêche AudioContext de s'exécuter","Ltz3:Aucun enregistrement n'a été collecté","xGuI:L'encodeur {1} n'est pas chargé. Veuillez essayer de trouver l'encodeur {1} dans src/engine de {2} et de le charger","AxOH:Erreur d'enregistrement : ","xkKd:Les tampons audio sont libérés","CxeT:Échantillon : {1} Fleur : {2}ms","NonBrowser-1:Environnement sans navigateur, ne prend pas en charge {1}","IllegalArgs-1:Erreur de paramètre : {1}","NeedImport-2:Pour appeler {1}, vous devez d'abord importer {2}","NotSupport-1:Non pris en charge : {1}","8HO5:Remplacer l'importation {1}"]),n.put(r,["b2mN:AMR-NB (NarrowBand), le paramètre sampleRate n'est pas valide (seul 8000 Hz est fourni), plage bitRate : {1} (par défaut 12.2 kbps), une image 20 ms, {2} octets ; les navigateurs ne prennent généralement pas en charge la lecture du format amr, disponible Recorder.amr2wav() Transcoder en wav pour la lecture","tQBv:AMR Info : ne correspond pas à l'ensemble {1}, a été mis à jour vers {2}","q12D:Les données sampleRate sont inférieures à {1}","TxjV:La version actuelle du navigateur est trop basse et ne peut pas être traitée en temps réel","Q7p7:takeoffEncodeChunk prend en charge les données binaires sorties par l'encodeur AMR. Seules les premières données de rappel (première image) contiennent l'en-tête AMR ; lors de la fusion dans un fichier AMR, si les données de la première image ne sont pas incluses, l'en-tête AMR doit être ajouté à la début du fichier : Recorder.AMR.AMR_HEADER (converti en binaire), sinon il ne peut pas être lu","6o9Z:L'environnement actuel ne prend pas en charge Web Worker et l'encodeur en temps réel amr s'exécute dans le thread principal","yYWs:amr worker reste {1} non stop","jOi8:encodeur amr pas start"]),n.put(r,["O8Gn:Ogg Vorbis, la valeur bitRate est de 16 à 100 kbps, la valeur sampleRate est illimitée","5si6:La version actuelle du navigateur est trop basse et ne peut pas être traitée en temps réel","R8yz:takeoffEncodeChunk prend en charge les données binaires sorties par l'encodeur OggVorbis. Ogg est composé de pages de données. Une page contient plusieurs images de données audio (y compris plusieurs secondes d'audio. Une page de données ne peut pas être décodée et lue séparément). Chaque sortie de ce L'encodeur est complet. Une page de données, donc les performances en temps réel seront relativement faibles ; lors de la fusion dans un fichier ogg complet, toutes les données de sortie doivent être fusionnées ensemble, sinon elles risquent de ne pas être lues et ne sont pas prises en charge. interceptez la partie médiane, décodez-la et jouez-la séparément","hB9D:L'environnement actuel ne prend pas en charge les Web Workers et l'encodeur en temps réel OggVorbis s'exécute dans le thread principal.","oTiy:ogg worker reste {1} non stop","dIpw:encodeur ogg pas start"]),n.put(r,["L49q:Ce navigateur ne prend pas en charge l'encodage Webm et MediaRecorder n'est pas implémenté","tsTW:Seuls les navigateurs les plus récents le prennent en charge et le taux de compression est similaire à celui du mp3. Puisqu'il n'existe aucun moyen d'encoder rapidement les données pcm existantes, les données ne peuvent être importées dans MediaRecorder que d'une manière similaire de lecture et d'écoute, et vous devez attendre quelques secondes. Bien que la taille du fichier audio de sortie puisse être contrôlée par le débit binaire, le débit binaire du fichier audio n'est pas le débit binaire défini. Puisque le taux d'échantillonnage est échantillonné par nous-mêmes, nous pouvons faire ce que nous voulons avec cet encodeur","aG4z:Ce navigateur ne prend pas en charge la conversion des enregistrements au format Webm","PIX0:Erreur de transcodage Webm : {1}"]),n.put(r,["d8YX:{1} ; {2} Le fichier audio ne peut pas être lu directement. Vous pouvez utiliser Recorder.{2}2wav() pour le transcoder en wav pour la lecture ; le paramètre de débit binaire du taux d'échantillonnage n'est pas valide et est fixé à 8 000 hz. taux, 16 bits, et chaque échantillon est compressé. dans un stockage de 8 bits, la taille du fichier audio est de 8 000 octets/seconde ; si vous avez besoin de prise en charge pour un taux d'échantillonnage, veuillez utiliser la méthode Recorder.{2}_encode()","29UK:Les données sampleRate sont inférieures à {1}","quVJ:encodeur {1} pas start"]),n.put(r,["Zm7L:Plage sampleRate : {1} ; plage bitRate : {2} (différents bitRate prennent en charge différentes plages sampleRate. Lorsqu'il est inférieur à 32 kbit/s, le sampleRate doit être inférieur à 32000)","eGB9:{1} n'est pas dans la plage de valeurs prise en charge par mp3 : {2}","zLTa:sampleRate a été mis à jour à {1} car {2} n'est pas dans la plage de valeurs prise en charge par mp3 : {3}","yhUs:La version actuelle du navigateur est trop basse et ne peut pas être traitée en temps réel","k9PT:L'environnement actuel ne prend pas en charge Web Worker et l'encodeur en temps réel mp3 s'exécute dans le thread principal","fT6M:mp3 worker left {1} unstopped","mPxH:encodeur mp3 pas start","uY9i:Ne correspond pas au paramètre {1}, a été mis à jour vers {2}","iMSm:Fix supprime {1} images","b9zm:Supprimer trop de cadres"]),n.put(r,["fWsN:pcm est une donnée audio originale non encapsulée. Les fichiers audio Pcm ne peuvent pas être lus directement. Recorder.pcm2wav() peut être utilisé pour transcoder en wav pour la lecture. Il prend en charge 8 et 16 chiffres (remplis dans bitRate) et la valeur de sampleRate est illimitée.","uMUJ:PCM Info: Le bit {1} n'est pas pris en charge et a été mis à jour vers le bit {2}","KmRz:pcm2wav doit fournir sampleRate et bitRate","sDkA:encodeur pcm pas start"]),n.put(r,["gPSE:Prend en charge les chiffres de 8 bits et 16 bits (remplis dans bitRate) et la valeur de sampleRate est illimitée ; cet encodeur ajoute uniquement un en-tête wav de 44 octets avant les données pcm, et le fichier wav codé de 16 bits supprime les 44 premiers bits. Octets pour obtenir pcm (remarque : les autres encodeurs wav peuvent ne pas faire 44 octets)","wyw9:WAV Info: Le bit {1} n'est pas pris en charge et a été mis à jour vers le bit {2}"]),n.put(r,["0XYC:La méthode getAudioSrc est obsolète : veuillez utiliser getMediaStream directement et l'attribuer à audio.srcObject. Cette méthode ne peut être appelée que dans les navigateurs qui ne prennent pas en charge srcObject et attribuée à audio.src pour des raisons de compatibilité.","6DDt:start est terminé par stop","I4h4:Répétition {1} start","P6Gs:Le navigateur ne prend pas en charge l'ouverture de {1}","JwDm:(Remarque : ctx n'est pas dans l'état running. start doit être appelé lorsque l'utilisateur opère (toucher, cliquer, etc.), sinon ctx.resume sera tenté, ce qui peut entraîner des problèmes de compatibilité (iOS uniquement). Veuillez vous référer au configuration runningContext dans le document)","qx6X:L'implémentation AudioBuffer de ce navigateur ne prend pas en charge les fonctionnalités dynamiques et utilise le mode de compatibilité","cdOx:Expiration du délai de détection de l'environnement","S2Bu:Peut ne pas jouer: {1}","ZfGG:L'appel input a échoué: non - PCM [int16,...] en entrée, il doit être décodé ou converti avec transform","N4ke:L'appel input a échoué: sampleRate n'a pas été fourni","IHZd:L'appel input a échoué: sampleRate={1} de Data est différent de ={2} précédent","L8sC:Le délai est trop important, {1}ms ont été ignorées, {2}","TZPq:{1} la méthode start n'est pas appelée","iCFC:Le navigateur ne supporte pas le décodage audio","wE2k:Les données de décodage audio doivent être ArrayBuffer","mOaT:Le décodage audio a échoué: {1}"]),n.put(r,["3RBa:Le symbole [{1}] est invalide: {2}","U212:Note [{1}] invalide: {2}","7qAD:Doit être aligné lorsque plusieurs tonalités, différence {1}ms","QGsW:Happy Birthday to You","emJR:For Elise","GsYy:Canon - symbole de la main droite","bSFZ:Canon"]),n.put(r,["Ikdz:Web Worker n'est pas supporté dans l'environnement actuel, appel Sonic.Async n'est pas supporté","IC5Y:sonic worker reste {1} non flush"]),n.put(r,["WWoj:La méthode {2} dans {1} n'est pas implémentée, implémentez - la dans un fichier {3} ou dans un fichier de configuration","rCAM:L'enregistrement n'a pas commencé, mais les données Native PCM ont été reçues","t2OF:Iframe Cross - Domain détecté, NativeRecordReceivePCM ne peut pas être injecté à la couche supérieure, a écouté postMessage pour transmettre des données de transfert compatibles, s'il vous plaît implémenter vous - même pour transmettre les données reçues à la couche supérieure à cette iframe (couche illimitée), sinon les données d'enregistrement ne peuvent pas être reçues","Z2y2:L'enregistrement n'a pas commencé"]),n.put(r,["uXtA:Importation répétée {1}","kIBu:Remarque : Étant donné que d'autres méthodes liées à l'enregistrement sont appelées simultanément, le résultat de l'appel actuel de {1} a été ignoré et il n'y aura pas de rappel","ha2K:Enregistrement répété {1}","wpTL:Nettoyage des ressources uniquement","bpvP:L'enregistrement n'a pas commencé","fLJD:L'environnement actuel ne prend pas en charge le Callback en temps réel, impossible de faire {1}","YnzX:La demande d'autorisation d'enregistrement a échoué: ","nwKR:Appelez d'abord {1}","citA:Actuellement, ce n'est pas un environnement de navigateur, il est nécessaire d'introduire un fichier de support ({1}) pour cette plate - forme ou d'appeler {2} pour implémenter l'accès par vous - même","ecp9:Le début de l'enregistrement échoue: ","EKmS:Ne peut pas enregistrer: ","k7Qo:Enregistrement commencé","Douz:Fin de l'enregistrement échoué: ","wqSH:Et le décalage horaire de départ: {1}ms","g3VX:Fin de l'enregistrement, prend du temps {1}ms Durée audio {2}ms , taille du fichier {3}b , {4}"])}((t?window:Object).Recorder)}(); \ No newline at end of file diff --git a/resources/assets/statics/public/js/recorder/i18n/zh-CN.js b/resources/assets/statics/public/js/recorder/i18n/zh-CN.js new file mode 100644 index 000000000..24b5c3440 --- /dev/null +++ b/resources/assets/statics/public/js/recorder/i18n/zh-CN.js @@ -0,0 +1,6 @@ +/* +录音 +https://github.com/xiangyuecn/Recorder +src: i18n/zh-CN.js +*/ +!function(e){var i="object"==typeof window&&!!window.document;!function(e,i){"use strict";var n=e.i18n;e.CLog('Import Recorder i18n lang="zh-CN"');n.alias["zh-CN"]="zh";n.data.rtl$zh=!1,n.data.desc$zh="Simplified Chinese, 简体中文。代码内置完整的中文支持,无需额外翻译,本文件存在的意义是方便查看支持的语言。"}((i?window:Object).Recorder)}(); \ No newline at end of file