CAAD
http://foro.caad.es/

[I6] Mensajes por defecto con diferentes flexiones gram.
http://foro.caad.es/viewtopic.php?f=12&t=6208
Página 1 de 1

Autor:  Makinaimo [ 06 Ago 2017 12:49 ]
Asunto:  [I6] Mensajes por defecto con diferentes flexiones gram.

Hola.

Estoy aprovechando las vacaciones para trabajar un poco en obras que tenía empezadas. En todas suelo incluir una rutina LanguageLM personalizada que permite modificar el tiempo verbal y la persona de los mensajes en tiempo de ejecución, y que modifica algunos de los mensajes de INFSP por otros que considero más adecuados para cada obra ---variaciones de algunos pocos mensajes como por ejemplo: No <es/era/será> necesario emprenderla a golpes con <el objeto>." en lugar del original: "La violencia no es la solución."; y diferenciación clara de los mensajes que podrían considerarse del narrador de la obra, como el anterior, de aquellos que son notificaciones de la aplicación, por ejemplo: "[No se pudo determinar a qué objetos te has referido]." en lugar del original: "¡No sé a qué objetos te refieres!"---.

Estos últimos días he intentado generalizar esa rutina LanguageLM y crear una única extensión que pueda compartir entre diferentes obras (luego siempre se puede utilizar el objeto LibraryMessages para incluir aquellos mensajes por defecto personalizados para cada obra en sí).

Esta extensión define una nueva rutina SetGrammaticalInflection(), que acepta un código numérico especificando el tiempo verbal y la persona que se desean utilizar para los mensajes de la librería. He definido además 9 constantes con los 9 posibles códigos:

  • FIRST_PERSON_PRESENT = 1
  • SECOND_PERSON_PRESENT = 2
  • THIRD_PERSON_PRESENT = 3
  • FIRST_PERSON_PAST = 4
  • SECOND_PERSON_PAST = 5
  • THIRD_PERSON_PAST = 6
  • FIRST_PERSON_FUTURE = 7
  • SECOND_PERSON_FUTURE = 8
  • THIRD_PERSON_FUTURE = 9

De forma que para cambiar la flexión gramatical de los mensajes de la librería (originalmente en segunda persona presente) a la tercera persona en pasado, por ejemplo, basta con invocar a esta función en cualquier punto de la obra:

Código:
SetGrammaticalInflection(THIRD_PERSON_PAST);

Y, por supuesto, se puede volver de nuevo a la segunda persona presente con: SetGrammaticalInflection(SECOND_PERSON_PRESENT);.

Estoy terminando de modificar la extensión para que además se utilice la definición del objeto player (para comprobar si está definido como masculino/femenino o singular/plural) para imprimir los mensajes ---"No <lo> <tengo/tenemos/tienes/tenéis/.../tendrán/tendrá> <conmigo/con nosotras/con nosotros/contigo/.../con ella/con él>"---. Y aunque estoy tratando de ser lo más metódico posible, seguramente existan errores que se me hayan escapado.

Si alguien pudiese estar interesado en la extensión, está disponible en mi repositorio de extensiones en GitHub: https://github.com/jomali/I6-Extensiones/blob/master/SpanishLM.h

Autor:  Fernando Gregoire [ 07 Ago 2017 00:58 ]
Asunto:  Re: [I6] Mensajes por defecto con diferentes flexiones gram.

Interesante trabajo.
Pregunto, desde mi ignorancia, qué tan factible y conveniente sería portar a I6 el código que hay al respecto en I7, ya oficializado y que, hasta donde sé, en el pasado diferencia los pretéritos posibles.

Autor:  Comely [ 07 Ago 2017 07:00 ]
Asunto:  Re: [I6] Mensajes por defecto con diferentes flexiones gram.

Eso ya lo trae TADS de serie.

Aprovecho este inciso que no ayuda a nada para congratularme con la idea de verte por aquí de nuevo y en activo, Makinaimo :lol:

Autor:  Makinaimo [ 07 Ago 2017 12:25 ]
Asunto:  Re: [I6] Mensajes por defecto con diferentes flexiones gram.

No se me ha ocurrido mirar TADS. Le echaré un ojo a ver si puedo aprovechar alguna idea de cómo hace eso. ¡Gracias Comely! (por señalarlo, y también por el inciso :) . A ver si soy capaz de finalizar y compartir con vosotros en el medio plazo algo de lo que tengo más avanzado).

Para hacer la extensión sólo he intentado generalizar y ampliar una rutina que he ido modificando y reutilizando desde hace años. No he estudiado mucho otras extensiones o sistemas, así que lo mismo he creado algo que ya estaba hecho mejor. Y más probado.

Pero sí que he consultado un poco una versión de la librería INFSP6 parcheada por Ricardo Pérez que ya tenía implementado algo parecido ---inflexiones que contemplan diferente persona, género y número---. Y otra de la librería Inform 6, en inglés, de David Griffith ---mensajes que contemplan diferente persona, género, número y tiempos verbales presente y pasado---.

Autor:  Comely [ 07 Ago 2017 12:32 ]
Asunto:  Re: [I6] Mensajes por defecto con diferentes flexiones gram.

Nada, nada. Si ya has encontrado eso en Inform no te metas en TADS o acabas en el psiquiátrico :D

Lo dicho, encantado de verte y con ganas de probar lo que tengas entre manos.

Autor:  Makinaimo [ 07 Ago 2017 14:32 ]
Asunto:  Re: [I6] Mensajes por defecto con diferentes flexiones gram.

Quizá se trata de algo tangencial al tema del hilo, pero ojeando un poco acerca de alternativas a los mensajes por defecto de la librería Inform me he encontrado con esta extensión de Aaron A. Reed para Inform 7: Neutral Library Messages. No estoy puesto al día en lo relativo a Inform7 (ni al 6 ahora mismo, la verdad), así que puede que el enfoque de Aaron haya quedado desfasado por alguna otra extensión más nueva. En cualquier caso, presenta un puñado de ideas interesantes sobre posibles pegas de los mensajes por defecto de la librería Inform original (sé que hay algún hilo del foro en el que se ha discutido al respecto también).

Citar:
The main complaints levied against the standard library messages are:

They sometimes imply a certain tone of wry amusement which descends from the Infocom/text adventure era, and which is not always appropriate to modern works of IF.

There is not a clear distinction between messages narrating story world events and those giving parser refusals, leading to a muddying of the difference between the author's voice and the default system messages.

Error messages often do not contain information instructing players how to better restate their command.

They can sometimes contradict the story world, as in the assumption "That's plainly inedible," or mislead the player about a course of action, as in "This dangerous act would achieve little."

Inconsistencies in style, such as whether command examples are given in CAPS or 'quotes', or which messages are wrapped in square brackets and what that signifies.

En mi extensión 'SpanishLM.h', además del tema de las inflexiones, intento atacar al menos esas dos primeras pegas.

Autor:  Makinaimo [ 14 Sep 2017 15:25 ]
Asunto:  Re: [I6] Mensajes por defecto con diferentes flexiones gram.

A falta de hacer más pruebas para corregir erratas que se me hayan escapado en los mensajes, la extensión ya es funcional. He intentado documentarlo todo lo mejor posible para que sea fácil utilizarla. Para incluirla en una obra (los pasos están también en la documentación):

1) Declarar la constante SIN_MENSAJES para omitir los mensajes por defecto
de la librería Inform (antes de incluir librerías y extensiones):

Constant SIN_MENSAJES;

2) Declarar el siguiente conjunto de variables (antes de incluir librerías
y extensiones):

Global FORMER__TX = "tu antiguo ~yo~";
Global YOURSELF__TX = "ti mismo";
Global CANTGO__TX = "No puedes ir por ahí.";
Global IS__TX = " ves";
Global ARE__TX = " ves";
Global IS2__TX = "ves ";
Global ARE2__TX = "ves ";
Global YOU__TX = "Tú";
Global PARTICULA_TE = "te";

3) Declarar el reemplazo de la rutina 'ChangePlayer' definida en
'parserm.h' (antes de incluir librerías y extensiones):

Replace ChangePlayer;

Una vez instalada, se puede modificar la flexión gramatical utilizada en los mensajes por defecto invocando a la rutina 'SetGrammaticalInflection()'. Por ejemplo, para pasar a utilizar un narrador en pasado y tercera persona:

SetGrammaticalInflection(THIRD_PERSON_PAST);

Incluye además una nueva meta-acción de depuración (sólo está definida si la obra se compila con la opción DEBUG activada); 'gramatica [opción]', que permite consultar la flexión gramatical actual de los mensajes de la librería (cuando se invoca sin indicar ninguna opción), o si se especifica una opción [1-9], modifica la flexión gramatical utilizada.

Autor:  Eliuk Blau [ 30 Sep 2017 06:19 ]
Asunto:  Re: [I6] Mensajes por defecto con diferentes flexiones gram.

Makinaimo escribió:
No se me ha ocurrido mirar TADS. Le echaré un ojo a ver si puedo aprovechar alguna idea de cómo hace eso. ¡Gracias Comely! (por señalarlo, y también por el inciso :) . A ver si soy capaz de finalizar y compartir con vosotros en el medio plazo algo de lo que tengo más avanzado).

Para hacer la extensión sólo he intentado generalizar y ampliar una rutina que he ido modificando y reutilizando desde hace años. No he estudiado mucho otras extensiones o sistemas, así que lo mismo he creado algo que ya estaba hecho mejor. Y más probado.

Pero sí que he consultado un poco una versión de la librería INFSP6 parcheada por Ricardo Pérez que ya tenía implementado algo parecido ---inflexiones que contemplan diferente persona, género y número---. Y otra de la librería Inform 6, en inglés, de David Griffith ---mensajes que contemplan diferente persona, género, número y tiempos verbales presente y pasado---.


También hice una yo, pero nunca la liberé. Está ahí acumulando polvo junto con las otras programadas, pero tampoco liberadas... xD Pero sí, hice una, hace unos años, para INFSP6.

Página 1 de 1 Todos los horarios son UTC + 1 hora
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/