Skip to content

Commit 9acb3bb

Browse files
authored
Merge pull request #6124 from brave/transifex-lenient
Make pull_l10n more lenient to localizer problems
2 parents dec1fe5 + e3d5414 commit 9acb3bb

File tree

8 files changed

+81
-37
lines changed

8 files changed

+81
-37
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,4 @@ venv/
4545
*.exe
4646
.storybook-out
4747
test_get_pkgs
48+
*_override_*.xtb

app/resources/generated_resources_am.xtb

+1-1
Original file line numberDiff line numberDiff line change
@@ -6470,7 +6470,7 @@ nil</translation>
64706470
<translation id="5053701565089446556">የግል ማራዘሚያ <ph name="EXTENSION_NAME"/></translation>
64716471
<translation id="611296870688433505">ማንነትን የማያሳውቅ መተግበሪያ፦ <ph name="APP_NAME"/></translation>
64726472
<translation id="9048137919253433011">ማንነት የማያሳውቅ ትር፦ <ph name="TAB_NAME"/></translation>
6473-
<translation id="1799432502220762862">የግል ንዑስ ክፈፍ <ph name = "SUBFRAME_SITE"/></translation>
6473+
<translation id="1799432502220762862">የግል ንዑስ ክፈፍ <ph name="SUBFRAME_SITE"/></translation>
64746474
<translation id="3193187622878830588">ማንነት የማያሳውቁ ሁነታ፦ <ph name="SUBFRAME_SITE"/></translation>
64756475
<translation id="8808478386290700967">የBrave የድር ገበያ</translation>
64766476
<translation id="8261378640211443080">ይህ ቅጥያ በ<ph name="IDS_EXTENSION_WEB_STORE_TITLE"/> ውስጥ ያልተጠቀሰ ሲሆን እርስዎ ሳያውቁት የታከለ ሊሆን ይችላል።</translation>

app/resources/generated_resources_es.xtb

+21-21
Original file line numberDiff line numberDiff line change
@@ -6466,7 +6466,7 @@ Guarda tu archivo de clave en un lugar seguro, ya que lo necesitarás para crear
64666466
<translation id="7376221878517288144">¿Quieres salir del modo privado de todas formas?</translation>
64676467
<translation id="871606814707918245">La mayoría de los usuarios bloquean las notificaciones de este sitio web</translation>
64686468
<translation id="5053701565089446556">Extensión privada: <ph name="EXTENSION_NAME"/></translation>
6469-
<translation id="611296870688433505">Aplicación de incógnito: <ph name="APP_NAME"/></translation>
6469+
<translation id="611296870688433505">Aplicación Privada: <ph name="APP_NAME"/></translation>
64706470
<translation id="9048137919253433011">Pestaña privada: <ph name="TAB_NAME"/></translation>
64716471
<translation id="1799432502220762862">Subframe privado: <ph name="SUBFRAME_SITE"/></translation>
64726472
<translation id="3193187622878830588">Portal privado: <ph name="SUBFRAME_SITE"/></translation>
@@ -6489,17 +6489,17 @@ Guarda tu archivo de clave en un lugar seguro, ya que lo necesitarás para crear
64896489
<translation id="3098826269712097986">Los datos de inicio de sesión se almacenarán en Brave cuando salgas del modo de incógnito. Así podrás usar Touch ID con este sitio web más adelante.</translation>
64906490
<translation id="5186185447130319458">Privado</translation>
64916491
<translation id="2579188629646253712">Salir del modo privado</translation>
6492-
<translation id="6744651634043798597">{COUNT,plural, =0{Abrir todas en una &amp;ventana de incógnito}=1{Abrir en una &amp;ventana de incógnito}other{Abrir (#) en una &amp;ventana de incógnito}}</translation>
6493-
<translation id="2431625704210501303">Abrir en una ventana de &amp;incógnito</translation>
6492+
<translation id="6744651634043798597">{COUNT,plural, =0{Abrir todas en una &amp;ventana privada}=1{Abrir en una &amp;ventana privada}other{Abrir (#) en una &amp;ventana privada}}</translation>
6493+
<translation id="2431625704210501303">Abrir en una ventana privada</translation>
64946494
<translation id="4620367155626060530">&amp;Mostrar barra de marcadores</translation>
6495-
<translation id="2633634757060186848">{COUNT,plural, =0{Abrir todas en una &amp;ventana de incógnito}=1{Abrir en una &amp;ventana de incógnito}other{Abrir (#) en una &amp;ventana de incógnito}}</translation>
6496-
<translation id="1985165269306590797">Abrir en una ventana de &amp;incógnito</translation>
6495+
<translation id="2633634757060186848">{COUNT,plural, =0{Abrir todas en una &amp;ventana privada}=1{Abrir en una &amp;ventana privada}other{Abrir (#) en una &amp;ventana privada}}</translation>
6496+
<translation id="1985165269306590797">Abrir en una ventana privada</translation>
64976497
<translation id="4680518314108745448">&amp;Mostrar barra de marcadores</translation>
6498-
<translation id="642436385689435488">Abre todos los marcadores en una ventana de incógnito</translation>
6499-
<translation id="5463021359602611602">Abrir en una ventana de incógnito</translation>
6500-
<translation id="1850357845349976573">{0,plural, =1{Incógnito}other{# ventanas de incógnito abiertas}}</translation>
6501-
<translation id="37784332082579802">{0,plural, =1{Incógnito}other{Incógnito (#)}}</translation>
6502-
<translation id="5070556616376997776">Estás en modo de incógnito</translation>
6498+
<translation id="642436385689435488">Abre todos los marcadores en una ventana privada</translation>
6499+
<translation id="5463021359602611602">Abrir en una ventana privada</translation>
6500+
<translation id="1850357845349976573">{0,plural, =1{Privada}other{# ventanas privadas abiertas}}</translation>
6501+
<translation id="37784332082579802">{0,plural, =1{Privada}other{Privada (#)}}</translation>
6502+
<translation id="5070556616376997776">Esta es una ventana privada</translation>
65036503
<translation id="5832813618714645810">Usuarios</translation>
65046504
<translation id="7171000599584840888">Añadir perfil...</translation>
65056505
<translation id="2005199804247617997">Otras personas</translation>
@@ -6525,21 +6525,21 @@ Guarda tu archivo de clave en un lugar seguro, ya que lo necesitarás para crear
65256525
<translation id="5840822070878669614">Abrir Brave Web Store</translation>
65266526
<translation id="383007806262310953">Mostrar barra de marcadores</translation>
65276527
<translation id="2890280714162339872">Sesión de incógnito actual: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START"/></translation>
6528-
<translation id="4207277598811881727">Sesión de incógnito actual: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START"/>, <ph name="RECENT_PERMISSIONS_CHANGE_1"/></translation>
6529-
<translation id="4470052247371020791">Sesión de incógnito actual: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START"/>, <ph name="RECENT_PERMISSIONS_CHANGE_1"/>, <ph name="RECENT_PERMISSIONS_CHANGE_2"/></translation>
6530-
<translation id="4332019753717105077">Sesión de incógnito actual: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START"/>, <ph name="RECENT_PERMISSIONS_CHANGE_1"/>, <ph name="RECENT_PERMISSIONS_CHANGE_2"/> y otros permisos</translation>
6531-
<translation id="8648684608605749476">Bloquear cookies de terceros en el modo de incógnito</translation>
6532-
<translation id="2199515977216775204">Mientras estás en modo de incógnito, los sitios web no pueden usar tus cookies para ver tu actividad de navegación en otros sitios web con el objetivo de, por ejemplo, personalizar tus anuncios. Es posible que las funciones de algunos sitios web no funcionen correctamente.</translation>
6533-
<translation id="6105125042109106861">Las cookies de terceros están bloqueadas en el modo de incógnito</translation>
6534-
<translation id="1281501490173223206">Solo a la sesión de incógnito actual</translation>
6528+
<translation id="4207277598811881727">Sesión privada actual: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START"/>, <ph name="RECENT_PERMISSIONS_CHANGE_1"/></translation>
6529+
<translation id="4470052247371020791">Sesión privada actual: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START"/>, <ph name="RECENT_PERMISSIONS_CHANGE_1"/>, <ph name="RECENT_PERMISSIONS_CHANGE_2"/></translation>
6530+
<translation id="4332019753717105077">Sesión privada actual: <ph name="RECENT_PERMISSIONS_CHANGE_SENTENCE_START"/>, <ph name="RECENT_PERMISSIONS_CHANGE_1"/>, <ph name="RECENT_PERMISSIONS_CHANGE_2"/>, y otros permisos</translation>
6531+
<translation id="8648684608605749476">Bloquear cookies de terceros en el modo Privado</translation>
6532+
<translation id="2199515977216775204">Mientras estás en modo privado, los sitios web no pueden usar tus cookies para ver tu actividad de navegación en otros sitios web con el objetivo de, por ejemplo, personalizar tus anuncios. Es posible que las funciones de algunos sitios web no funcionen correctamente.</translation>
6533+
<translation id="6105125042109106861">Las cookies de terceros están bloqueadas en el modo privado</translation>
6534+
<translation id="1281501490173223206">Solo a la sesión privada actual</translation>
65356535
<translation id="5566692924079383101">Esta excepción se quitará automáticamente cuando salgas de la sesión de incógnito actual.</translation>
65366536
<translation id="6906406176003824042">Cambiar persona</translation>
65376537
<translation id="9063160602596686558">Envía automáticamente estadísticas de uso e informes sobre fallos a Brave</translation>
6538-
<translation id="3860292630623580294">(Incógnito)</translation>
6539-
<translation id="4854477725773269949">Permitir en modo de incógnito</translation>
6538+
<translation id="3860292630623580294">(Privado)</translation>
6539+
<translation id="4854477725773269949">Permitir en modo privado</translation>
65406540
<translation id="6436164536244065364">Ver en Brave Web Store</translation>
65416541
<translation id="38046578254905003">Busca extensiones y temas en <ph name="BEGIN_LINK"/>Brave Web Store<ph name="END_LINK"/></translation>
6542-
<translation id="6336451774241870485">Nueva pestaña de incógnito</translation>
6543-
<translation id="6610147964972079463">Cerrar pestañas de incógnito</translation>
6542+
<translation id="6336451774241870485">Nueva pestaña privada</translation>
6543+
<translation id="6610147964972079463">Cerrar pestañas privadas</translation>
65446544
<translation id="4933782374919065856">¿Tienes alguna pregunta? Ponte en contacto con la persona que supervisa tu perfil.</translation>
65456545
</translationbundle>

browser/ui/android/strings/translations/android_brave_strings_hr.xtb

+2-2
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ mjeseca...</translation>
153153
<translation id="5463954686005964104">Daj mjesečnu napojnicu ovom mrežnom mjestu</translation>
154154
<translation id="7530570094705720669">Izrada novčanika</translation>
155155
<translation id="937392350501765664"><ph name="MONTH"/> <ph name="YEAR"/></translation>
156-
<translation id="4751553692764711651">Doprinijeli ste u vrijednosti od <ph name="BAT_VALUE"/> <ph name="BAT_TEXT"/>.</translation>
156+
<translation id="4751553692764711651">Doprinijeli ste u vrijednosti od <ph name="BAT_VALUE"/> <ph name="BAT_TEXT"/>.</translation>
157157
<translation id="7997676409547731821">Nije moguće provesti zakazano mjesečno plaćanje automatskog doprinosa ili mjesečne napojnice zbog nedovoljnih sredstava. Pokušat ćemo ponovno za 30 dana.</translation>
158158
<translation id="5306913077198665897">Ispričavamo se, ali nastao je problem tijekom obrađivanja vaše napojnice. Pokušajte ponovo.</translation>
159159
<translation id="2429828319207652823">Pojavio se problem s obradom vašeg doprinosa.</translation>
@@ -172,7 +172,7 @@ mjeseca...</translation>
172172
<translation id="4292832015778676417">zarađeno od oglasa</translation>
173173
<translation id="683765328936486920">na usluzi YouTube</translation>
174174
<translation id="8969049974285901797">na usluzi Twitch</translation>
175-
<translation id="4376933248999950592">Odredili ste <ph name="BAT_VALUE"/> <ph name="BAT_TEXT"/> za stvaratelje koji se još nisu
175+
<translation id="4376933248999950592">Odredili ste <ph name="BAT_VALUE"/> <ph name="BAT_TEXT"/> za stvaratelje koji se još nisu
176176
registrirali za primanje doprinosa. Vašim se preglednikom pokušavaju ustupiti doprinosi dok se ne provjere ili do isteka 90 dana.</translation>
177177
<translation id="3101693828171454453">nema dovoljno <ph name="TOKEN"/>s</translation>
178178
<translation id="6940273954212603510">molimo</translation>

components/resources/strings/brave_components_resources_es.xtb

+4-4
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,8 @@
141141
<translation id="1847863811689960237">Recompensa a los creadores por el contenido que te gusta.</translation>
142142
<translation id="4129489167302464118">Tu pago mensual se repartirá entre los sitios web que visites.</translation>
143143
<translation id="4898632353264854950">Sitios web que aparecerán mientras navegas</translation>
144-
<translation id="3024485967181749006">Total de propinas este mes</translation>
145-
<translation id="5055577484189948413">Contribuciones totales de este mes</translation>
144+
<translation id="3024485967181749006">Total de propinas en el mes actual</translation>
145+
<translation id="5055577484189948413">Contribuciones totales en el mes actual</translation>
146146
<translation id="4153752809523809915">¿Has dado hoy propina a tu creador de contenido favorito?</translation>
147147
<translation id="1165667598801520610">Añadir fondos</translation>
148148
<translation id="6239274080752256452">Retirar fondos</translation>
@@ -534,9 +534,9 @@
534534
<translation id="6915065518766963119">* Requiere la verificación de Uphold.</translation>
535535
<translation id="4360054110030715117"><ph name="LINK_BEGIN"/>Más información<ph name="LINK_END"/> sobre Brave Rewards</translation>
536536
<translation id="5826706758731195747">Al activar Brave Rewards, aceptas los <ph name="LINK_BEGIN"/>Términos del Servicio<ph name="LINK_END"/>.</translation>
537-
<translation id="8344084848798035850">Ganancias estimadas en lo que va de mes</translation>
537+
<translation id="8344084848798035850">Ganancias estimadas en el mes actual</translation>
538538
<translation id="6778392839723468409">Recibe tokens visualizando anuncios respetuosos con la privacidad.</translation>
539-
<translation id="5235444069025581717">Propinas y contribuciones este mes</translation>
539+
<translation id="5235444069025581717">Propinas y contribuciones en el mes actual</translation>
540540
<translation id="1210965535849006928">Reclamar mis recompensas</translation>
541541
<translation id="8315514906653279104">Activando...</translation>
542542
<translation id="7307847920988946894">Activar Rewards</translation>

components/strings/components_strings_es.xtb

+4-4
Original file line numberDiff line numberDiff line change
@@ -1905,16 +1905,16 @@ Más información:
19051905
<translation id="6771143571626203666">De Brave Pay</translation>
19061906
<translation id="8820817407110198400">Barra de marcadores</translation>
19071907
<translation id="8362995731815961365">La persona que ha configurado este ordenador ha elegido bloquear este sitio web.</translation>
1908-
<translation id="4075123085690634698">Abre una página en una nueva ventana de incógnito (⇧ + ⌘ + N)</translation>
1908+
<translation id="4075123085690634698">Abre una página en una nueva ventana privada (⇧⌘N)</translation>
19091909
<translation id="2388886110302389394">Abre una página en una nueva ventana de incógnito (Ctrl + Mayús + N).</translation>
1910-
<translation id="6957624206566198865">Abre una página en una nueva pestaña de incógnito</translation>
1910+
<translation id="6957624206566198865">Abre una página en una nueva pestaña privada</translation>
19111911
<translation id="2378238891085281592">Has iniciado una sesión de incógnito</translation>
19121912
<translation id="3774752171665127360">Las páginas que aparezcan en las pestañas de incógnito no se guardarán en el historial del navegador, en el almacén de cookies ni en el historial de búsquedas una vez que hayas cerrado todas tus pestañas de incógnito. Se mantendrán los archivos que descargues o los marcadores que crees.</translation>
19131913
<translation id="9177896974490719854">Ten en cuenta que tus acciones no serán totalmente invisibles. El uso del modo de incógnito no te permite ocultar tu actividad de navegación a tu empresa, a tu proveedor de servicios de Internet o a los sitios web que visites.</translation>
19141914
<translation id="2227116904818538760">Estás en modo de navegación de incógnito</translation>
19151915
<translation id="2007417459975034427">Ahora puedes navegar de forma privada. Nadie más que use este dispositivo verá tu actividad, pero sí se guardarán tus descargas y marcadores.</translation>
1916-
<translation id="2586968635953373425">Abrir una ventana de incógnito</translation>
1917-
<translation id="3489858312836205593">Abre una nueva ventana de incógnito en Brave</translation>
1916+
<translation id="2586968635953373425">Abrir una ventana privada</translation>
1917+
<translation id="3489858312836205593">Abre una nueva ventana privada en Brave</translation>
19181918
<translation id="6984479912851154518">Saldrás del modo de incógnito para realizar un pago en una aplicación externa. ¿Quieres continuar?</translation>
19191919
<translation id="1426112902089905810">&lt;h4&gt;Paso 1: Inicia sesión en el portal&lt;/h4&gt;
19201920
&lt;p&gt;Para acceder a las redes Wi‑Fi de sitios como cafeterías o aeropuertos, tienes que iniciar sesión. Para ver la página de inicio de sesión, accede a una página que utilice &lt;code&gt;http://&lt;/code&gt;.&lt;/p&gt;

script/lib/grd_string_replacements.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@
5757

5858
# Replacements for text nodes and neither for inside descriptions nor comments
5959
main_text_only_replacements = [
60-
(r'Copyright', u'Copyright \xa9'),
60+
# By converting it back first, it makes this idempotent
61+
(u'Copyright \xa9', u'Copyright'),
62+
(u'Copyright', u'Copyright \xa9'),
6163
]
6264

6365

script/lib/transifex.py

+45-4
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,41 @@ def get_transifex_translation_file_content(source_file_path, filename,
133133
return content
134134

135135

136+
def process_bad_ph_tags_for_one_string(val):
137+
val = (val.replace('\r\n', '\n')
138+
.replace('\r', '\n'))
139+
if val.find('&lt;ph') == -1:
140+
return val
141+
val = (val.replace('&lt;', '<')
142+
.replace('&gt;', '>')
143+
.replace('> ', '> ')
144+
.replace(' <', ' <'))
145+
return val
146+
147+
148+
def fixup_bad_ph_tags_from_raw_transifex_string(xml_content):
149+
begin_index = 0
150+
while begin_index < len(xml_content) and begin_index != -1:
151+
string_index = xml_content.find('<string', begin_index)
152+
if string_index == -1:
153+
return xml_content
154+
string_index = xml_content.find('>', string_index)
155+
if string_index == -1:
156+
return xml_content
157+
string_index += 1
158+
string_end_index = xml_content.find('</string>', string_index)
159+
if string_end_index == -1:
160+
return xml_content
161+
before_part = xml_content[:string_index]
162+
ending_part = xml_content[string_end_index:]
163+
val = process_bad_ph_tags_for_one_string(xml_content[string_index:string_end_index])
164+
xml_content = before_part + val + ending_part
165+
begin_index = xml_content.find('</string>', begin_index)
166+
if begin_index != -1:
167+
begin_index += 9
168+
return xml_content
169+
170+
136171
def trim_ph_tags_in_xtb_file_content(xml_content):
137172
"""Removes all children of <ph> tags including $X and %X text inside ph tag"""
138173
xml = lxml.etree.fromstring(xml_content)
@@ -224,16 +259,21 @@ def textify(t):
224259
return val
225260

226261

227-
def textify_from_transifex(t):
262+
def replace_string_from_transifex(val):
228263
"""Returns the text of a node from Transifex which also fixes up common problems that localizers do"""
229-
val = textify(t)
264+
if val is None:
265+
return val
230266
val = (val.replace('&amp;lt;', '&lt;')
231267
.replace('&amp;gt;', '&gt;')
232-
.replace('&amp;&amp;', '&amp;'))
233-
# TODO(bbondy) we should also do fixups for ph tags here that localizers often mess up
268+
.replace('&amp;amp;', '&amp;'))
234269
return val
235270

236271

272+
def textify_from_transifex(t):
273+
"""Returns the text of a node from Transifex which also fixes up common problems that localizers do"""
274+
return replace_string_from_transifex(textify(t))
275+
276+
237277
def get_grd_message_string_tags(grd_file_path):
238278
"""Obtains all message tags of the specified GRD file"""
239279
output_elements = []
@@ -620,6 +660,7 @@ def pull_source_files_from_transifex(source_file_path, filename):
620660
print 'Updating: ', xtb_file_path, lang_code
621661
xml_content = get_transifex_translation_file_content(
622662
source_file_path, filename, lang_code)
663+
xml_content = fixup_bad_ph_tags_from_raw_transifex_string(xml_content)
623664
xml_content = trim_ph_tags_in_xtb_file_content(xml_content)
624665
translations = get_strings_dict_from_xml_content(xml_content)
625666
xtb_content = generate_xtb_content(lang_code, grd_strings,

0 commit comments

Comments
 (0)