¿Alguien tiene consejos sobre la sustitución de pronombres? Me gustaría facilitar esto a los usuarios, utilizando el formulario% keywords% que se sustituirá con una matriz php str_replace. Pero es duro en inglés.

Ejemplo:

$input='%his% house is %his%, and you can visit %him% there.';
$from[]='%his%';$from[]='%him%';
if($gender=='male'){
  $to[]='his';$to[]='him';
}
else{
  to[]='hers';$to[]='her';
}
echo str_replace($from, $to, $input);

Salidas:

Su casa es suya y puedes visitarlo allí << = OK!

La casa de ella es suya y puedes visitarla allí << == ¡¡CHUPA !!

Ejemplo2:

$input='%her% house is %hers%, and you can visit %her% there.';
$from[]='%hers%';$from[]='%her%';
if($gender=='male'){
  $to[]='his';$to[]='him';
}
else{
  to[]='hers';$to[]='her';
}
echo str_replace($from, $to, $input);

Salidas:

Su casa es suya y puedes visitarlo allí << = ¡¡CHUPA !!

Su casa es suya y puedes visitarla allí << == ¡¡¡¡OK !!

A veces odio el inglés. ¿Alguna idea sobre cómo manejar esto?

Para su información, esta respuesta produce el mismo resultado incorrecto.

1
Nemo Noman 26 dic. 2016 a las 21:20

3 respuestas

La mejor respuesta

En una revisión adicional, creo que he encontrado un enfoque más simple que satisfará todos los casos y será bastante simple de entender para los usuarios. Usaré la tercera persona del plural para palabras clave

  • Ellas> él / ella
  • Ellas> el / ella
  • su> él / ella
  • el suyo> el suyo

Gracias por ayudarme a pensar esto a través de Jerry y Markus AO.

0
Nemo Noman 28 dic. 2016 a las 19:28

Tendrá que mapear todas las posibles inflexiones y utilizar marcadores de posición coincidentes: Pronombres personales en inglés En este caso, incluso con pronombres en tercera persona solos, hay cierta superposición con la que lidiar (es decir, entre objeto y posesivo dependiente, etc.). Para una matriz de muestra que cubre todos los casos / formularios:

$pronouns['3rd']['male'] = [
    'subj' => 'he',
    'obj' => 'him',
    'poss' => 'his',
    'poss_ind' => 'his',
    'refl' => 'himself',
];

$pronouns['3rd']['female'] = [
    'subj' => 'she',
    'obj' => 'her',
    'poss' => 'her',
    'poss_ind' => 'hers',
    'refl' => 'herself',
];

Luego marque los marcadores de posición como %obj%, %poss%, o con el formulario completo como %object%, etc., si prefiere tener eso. O %3rd:obj% etc. si necesita tratar con todas las personas en sus plantillas. Pero dada la superposición, si desea obtener esto correcto, no hay forma de evitar la gramática general aquí.

La mejor de las suertes en educar a sus usuarios sobre la diferencia entre los pronombres posesivos dependientes / independientes, etc., pero aparte de hacerlo, tendría que encontrar un algoritmo de análisis semántico que deduzca la inflexión apropiada del contexto. Puede crear una interfaz de hacer clic para agregar etiquetas con iconos apropiados que ilustren posesivo dependiente / independiente, etc. :)

1
Markus AO 26 dic. 2016 a las 19:42

Tus marcadores de posición también deberán registrar la inflexión del pronombre: nominativo, genitivo, posesivo, etc. Uno de los pocos lugares donde el inglés todavía tiene inflexiones es en los pronombres, y 'quién' contra 'quién' está saliendo.

Desafortunadamente, los angloparlantes realmente no son buenos para acertar con las reglas, incluso en el habla cotidiana ('yo' y 'yo' cambian todo el tiempo) y (al menos en los EE. UU.) No se les enseñan realmente los nombres formales de Diferentes casos. ("¿Genitivo?"). Por lo tanto, encontrar una forma fácil para los usuarios será bastante difícil.

Recomendaría %possessive% como marcador de posición, y posibles sustituciones como $third['male']['possessive'] = 'his', $third['female']['possessive'] = 'her', para permitir $first['possessive'] = 'my'.

2
Jerry 26 dic. 2016 a las 18:42