MOOsaico: Multilingual Virtual Community

MOOsaico Help (#161)
====================

accents 	    @idioma		ml-mail 	    @quicksend
acentos 	    @idiomas		ml-prog 	    @show-guest-ids
@all-languages	    @idiomes		ml-strings	    tema
behavior	    irc 		ml-tell 	    @tempo
behaviour	    @join		ml-text 	    theme
@client-options     @language		modales 	    @time
comportamento	    @languages		MOOsaico-index	    @todos-idiomas
comportamiento	    @lenguas		multilingual	    @twitter
@descreve	    @lookfor		multilingue	    uvl
@describe	    manners		@name		    uvls
@descriptions	    @mcp		@name-swap	    @ways
events		    @measure		@names		    @weather
@go		    ml-commands 	@nome
guest-features	    ml-data		programmer-policy


ACCENTS/ACENTOS
===============

Acentos
=======
Para uma melhor consiste^ncia nos textos visualizados pede-se que acentuem
todas as palavras que a isso sejam obrigadas ortograficamente.	Para isso,
todos os acentos devem ser colocados depois da letra a acentuar excepto se o
acento for grave; neste caso aparecera' antes da letra.  Por exemplo:

  Rojo~es `a moda do Minho / Corac,a~o	    (Portugue^s)
  Ojala' que este pequen~o ejemplo basta.   (Espan~ol)
  ku_ko_ basu wa doko desu ka?		    (Nihongo)

@ALL-LANGUAGES/@TODOS-IDIOMAS
=============================

Sintaxe: @todos-idiomas

Mostra uma lista de todos os idiomas definidos aqui no MOO.

@CLIENT-OPTIONS
===============


* charset

 Existem tre^s tipos de visualizac,a~o de texto:

   latin1    UTF-8    french-notation

 que podem ser definidos por:

   @client-options charset=latin1
   @client-options charset=UTF-8
   @client-options -charset

* noresizeinfo

 Se na~o pretendes que o MOO te confirme que viu que mudastes as dimenso~es da
janela podes activar esta opc,a~o: +noresizeinfo
 O cliente tem de suportar MCP/2.1 e ter o pacote dns-nl-vgmoo-client

* loginonstatus

 Se pretendes ver as ligac,o~es da faceta Login Watcher (#896) na barra de
estado do teu cliente MCP, e se suportar dns-com-awns-status.

 Ve^ tambe'm 'ajuda @mcp'.


@DESCRIBE/@DESCREVE
===================

Sintaxe: @descreve <objecto> in <idioma> as <texto>

Altera o descrica~o do <objecto> no <idioma> especificado para o <texto> dado.
(Descric,o~es do <objecto> em outros idiomas na~o estam afectadas.)

Para uma lista dos idiomas definidos, faz "@todos-idiomas".

@DESCRIPTIONS
=============

Sintaxe: @descricoes <objecto>

Mostra as descric,o~es dum objecto em todos os idiomas em que esta'
disponi'vel, na~o so' no seu idioma seleccionado.

EVENTS
======

EVENT-REPORTING ROOMS

The default room has been replaced with the event-reporting room.
Whenever something "interesting" happens in such a room, messages
get sent to objects (in the room or not) which are interested in such
events.  This sort of system makes it very simple to program, for
example, a dog that barks every time someone enters a room, or a
security system that beeps every time someone leaves the jail.

DEFAULT EVENTS

There are four events which have been built into the generic
event-reporting room: enter, exit, connect and disconnect.  Whenever
someone or something performs any of these actions, the room will
notify any interested objects.	For information about how to signify
interest in these events and how to program objects to respond, see
the section below entitled, "EVENT-AWARE OBJECTS".

It is worth noting that dropping an object in a room and entering a
room are both equivalent, since in both cases something is "entering"
the room.  Correspondingly, the "enter" event will be triggered in
both cases, and it is up to the programmer to distinguish between
them.

CUSTOM EVENTS

If you wish to add or remove additional events on an event room, use the
commands:

addevent <event name> to <room>
rmevent <event name> from <room>

The effect of these commands is to modify the .event_list property on
the room and the list of listeners.  Essentially, adding an event to
a room signifies that you anticipate the event happening in that room.
However, event-reporting rooms can handle events of any name -- they
just happen to be much more efficient when handling expected events.

EVENT-AWARE OBJECTS

Creating event-aware objects is simple.  To have an object respond to
"enter" events, create a verb on the object named on_enter (this none
this).	The :on_enter verb will be called every time something enters.
Similarly, verbs named :on_exit, :on_con, :on_dis, or even :on_bark
may be added to ordinary object to make them event-aware.  In fact,
any verb beginning with "on_" will act as an event-handling verb.

The event-reporting room will usually call the :on_* verbs with one
argument: args[1] is a list of objects which are affected by the
event.	By default, args[1][1] is the "direct object," or what
object triggered the event and args[1][2] is the "indirect object,"
or what object was affected by the event.  For "enter" and "exit"
events, args[1][1] will be the player that did the moving, and
args[1][2] will be the room moved to/from.  For "con" and "dis"
events, args[1][1] will be the player doing the (dis)connecting, and
args[1][2] will be the room in which it happened.

Using the value of args[1] is more accurate than trying to use
"dobj" or "iobj," since they will probably be undefined for some
events.  The args list is (by default) guaranteed to contain relevant
information.

EVENT REGISTRATION

The event-reporting room keeps a list of objects interested in each
event (in the .event_listeners property).  When objects enter the room
(or, equivalently, are dropped in the room), they are registered for
any events they are interested in.  This is done by checking for :on_*
verbs and registering the object for the corresponding events.	For
example, if a "security box" had an :on_enter verb, it would be
registered for "enter" events.	If a "front gate" had :on_enter and
:on_exit verbs, it would be registered for both "enter" and "exit"
events.  If an object has :on_* verbs which aren't in the list of
events recognized by the room, they are ignored (if any of those
custom events are triggered, though, the :on_* verb WILL be called).
When an object leaves the room or is picked up, it is automatically
unregistered for events in that room.

EXPLICIT EVENT REGISTRATION

If you wish to have an object explicitly registered for events in a
certain room, use these commands:

register <object> in <room>
unregister <object> in <room>

Explicitly registering an object for events in a room prevents it from
being automatically registered and unregistered if it moves into/out
of the room.  This allows for remote objects to be aware of events in
the room.  An example of this would be a centralized security system
that keeps track of all the rooms in a house, or a counter that
tallies the number of people entering a given room.

EVENT AWARENESS

There are situations where it becomes desirable to turn off
event-awareness for certain objects.  This may occur if there are too
many people walking through the room, or more importantly, if the
event-handling verb is causing errors and distracting innocent
bystanders.  If the object is a descendent of the generic event-aware
thing, the command to toggle event-awareness is:

toggle <thing>

If the object is NOT a descendent of the generic event-aware thing,
then it suffices to create and set the .events_off property to 1 and
to do:

update <room>

which updates the event_listeners list.  Note that if there is no
events_off property, the object is assumed to be event-aware.

To toggle event-reporting in a room, the command is:

toggle <room>

When events are turned off for an entire room, no events will be
reported at all.

EVENT ERRORS

The event code does its best to trap errors.  However, it cannot catch
errors made by other programers, in their :on_* verbs.	If the
:on_enter on a dog in the E&L Garden is broken, for example, it is
going to spew error messages at everyone that enters.  Needless to
say, this can become distracting and annoying; it is always a good
idea to test out your event verbs privately before dropping your
object in a public area.  If the event code happens to successfully
catch an error, the owner of the object will be paged (if online) or
MOOmailed about the error.  The object will also be deregistered for
events in the given room.

MORE DETAILS

Generic Event-Reporting Room (#1737)
verbs:
update <room>			update listenesr
reg*ister <what> in <room>	explicitly register something
unreg*ister <what> in <room>	explicitly unregister something
toggle*events <thing>		toggle event-awareness
addevent <what> to <room>	add custom event to room
rmevent <what> from <room>	remove event from room
stat <room>			info on room
properties:
event_list			supported events
event_listeners 		listening objects
event_listeners_explicit	explicitly registered objects
event_active			reporting events?

Generic Event-Aware Thing (#1740)
verbs:
toggle*events <thing>		toggle event-awareness
properties:
events_off			ignoring events?

@GO/@JOIN
=========


Sintaxe:  @go <local>	 - teleporta-se para um certo local.
	 @join <pessoa> - teleporta-se para o si'tio onde se encontra a pessoa

`@go #82' teleporta-o/a para o Sala~o Central.
`@join Ziggy' teleporta-o/a para o local onde estiver o Ziggy.

GUEST-FEATURES
==============

As personagens de visita (Guests) na~o podem adicionar qualquer faceta.  So'
as que forem aprovadas para a utilizac,a~o por "guests" e' que podera~o ser
adicionadas por estes.	O(A) programador(a) da faceta e' normalmente o(a)
responsavel por controlar isto, mas os feiticeiros intervira~o se acharem que
e' caso disso.	Os tipos de facetas seguintes na~o sera~o aceites para serem
utilizadas por "guests"; quem usar este tipo de facetas tera' de se ligar com
a sua personagem sendo assim responsavel pelo seu uso:

 (a) Spam.  Facetas que desenhem grandes imagens ou produzam muitas linhas de
saida.	Os "guests" na~o precisam disto.  A poli'tica corrente de admisso~es
e' bastante liberal.  Que criem uma personagem.

 (b) Sexualmente explicita.  A utilizac,a~o de comunicac,a~o sexualmente
explicita contra pessoas na~o conhecidas na~o deve usada.  Uma personagem de
visita, na~o pode ser responsabilizada por exageros cometidos, e por isso na~o
deve ter acesso a utensi'lios destes.

 (c) Spoofing.	"Spoofing" na~o e' uma actividade aceitavel em muitos casos --
especialmente se e' feita por pessoas ano'nimas.

 (d) Descorte^s no geral. Ja' basta que os "guests" possam ser uma fonte de
problemas so' com `:' ou `page' sem se acrescentar a possibilidade de o serem
ainda mais de uma maneira evoluida por programac,a~o.

Ve^ tambem "ajuda comportamento".

IRC
===

Para quem so' conhecia IRC segue-se uma tabela de semelhanc,as de comandos.

   IRC		      MOOsaico
   ---		      --------
   <falar>	      say
   /msg 	      page
   /nick	      @rename
   /join	      @go
   /kick	      @eject
   /part	      @quit
   /who 	      @who
   /names	      look/@who
   /memoserv send     @send/@quicksend
   /memoserv read     @read/@next/@mail

Usa o comando 'ajuda' seguido do comando a usar no MOOsaico para saberes
pormenores.

@LANGUAGE/@IDIOMA
=================

 @idioma [portugues|ingles|...]  - Muda ou informa a linguagem de interacc,a~o
				   que esta' a ser usada.

`@idioma ingles' comeca a mostrar-lhe todas as descric,o~es na lingua de
Shakespeare.  Nota: Se faltar a descric,a~o de um objecto num idioma, ele
sera' apresentado noutro. Ve^ tambe'm o comando '@todos-idiomas'.

@LANGUAGES/@IDIOMAS/@IDIOMES/@LENGUAS
=====================================

Sintaxe:  @idiomas
	 @idiomas <quem>

Da' uma lista dos quais idiomas fala <quem>.  Por defeito, o <quem> e' voce^
mesmo.

Sintaxe:  @languages = <idioma1> <idioma2> ...
	 @languages <quem> = <idioma1> <idioma2> ...

Declara que <quem> e' capaz de falar os idiomas especificados.	Por defeito, o
<quem> e' voce^ mesmo.	(So' um feiticeiro pode mudar esta informac,a~o para
outra personagem, mas qualquer personagem pode mudar os idiomas dos seus
fantoches.)

@LOOKFOR
========

Sintaxe:     @lookfor <pessoa>
	     @lookfor! <pessoa>

No momento em que se liga, sera' informado/a das pessoas que se encontram no
MOO e que fazem parte da sua lista pessoal.  Use @lookfor para adicionar uma
personagem `a lista e @lookfor! para a remover da lista.

MANNERS/BEHAVIOR/BEHAVIOUR/COMPORTAMENTO/COMPORTAMIENTO/MODALES
===============================================================

Comportamento
=============
Primeiro que tudo, qualquer acc,a~o que ameace a integridade funcional do MOO,
ou cause algum problema `as pessoas que apoiam o MOO, fara' com que o
utilizador responsa'vel seja imediatamente expulso pelos feiticeiros.  Se
encontrar um buraco ou erro no nu'cleo, relate o facto a um feiticeiro sem
tentar tirar vantagem disso.  Furar o sistema sai fora do a^mbito de
comportamento.	Um bom comportamento resume-se a deixar o MOO funcionar e na~o
hostilizar as outras personagens.

o   Seja educado/a.  Evite rudeza.  Vale a pena utilizar o MOO se for um
   lugar aprazi'vel para todas as pessoas.  Quando se mostram rudes e
   so'rdidas umas com as outras, deixa de ser ta~o agrada'vel.	O MOO e'
   um local para as pessoas terem uma actividade social, programarem,
   divertirem-se e comunicarem enquanto mantiverem um certo grau de
   educac,a~o entre elas.

o   Se algue'm for desagrada'vel consigo ignore-o/a.  Por favor na~o tente
   vingar-se; isso so' aumentara' o ni'vel de rudeza e fara' com que as
   pessoas envolvidas percam o seu aprec,o pelo MOO.  Se algue'm estiver a
   aborrece^-lo/a tem va'rias opc,o~es.  O primeiro passo apropriado e'
   normalmente pedir-lhe/s que parem.  Se isto na~o resultar, e evitar a
   pessoa/s em causa na~o for suficiente, alguns verbos que podem ser
   u'teis sa~o @gag e @eject.  Existe ajuda em todos eles.

o   Respeite a sensibilidade das outras pessoas.  Os participantes no MOO
   te^m a sua origem num alargado leque de culturas e ambientes.  A sua
   ideia acerca do que constitui um discurso ou descric,o~es ofensivas e'
   provavelmente diferente da de outros utilizadores.  Tente manter os
   textos que casualmente as pessoas possam ve^r livres de expresso~es
   potencialmente ofensivas.  Se pretende construir objectos ou zonas que
   porventura suscitem controve'rsia por parte de algum segmento da nossa
   comunidade, fornec,a avisos suficientes aos exploradores casuais, de
   modo que lhes seja permitido escolher na~o interactuar com esses
   objectos ou zonas.

o   Na~o grite.  E' trivial criar um comando MOO que imprima uma mensagem a
   todos os utilizadores em linha.  Por favor na~o o fac,a.

o   Apenas teletransporte as suas coisas.  Por defeito, a maior parte dos
   objectos ( incluindo os utilizadores ) sa~o passiveis de ser movidos
   livremente de um si'tio para o outro.  Este facto permite a fa'cil
   criac,a~o de certos objectos u'teis.  Infelizmente, isso tambe'm permite
   aborrecer outras pessoas, movendo-as e aos seus objectos sem o
   concentimento destas.  Na~o fac,a isso.

o   Na~o engane as pessoas (`spoofing'). Na~o produza mensagens que na~o
   sa~o atribuidas `a sua personagem.  Os `spoofs' podem ser engrac,ados
   e expressivos quando usados com prude^ncia.	Se produzir um `spoof',
   use uma versa~o simpa'tica que se autoanuncie como `spoof', e use-a
   com muita moderac,a~o.

o   Respeite a privacidade dos outros e o direito de controlarem os seus
   objectos, incluindo o direito de decidirem quem pode entrar ou
   permanecer nos seus quartos.  Na~o crie ou use dispositivos
   de espionagem.

o   Na~o se teletransporte silenciosamente nem pela calada.  E' fa'cil
   escrever comandos do MOO para se mover instanta^neamente de um si'tio
   para outro.	Lembre-se de po^r nesses programas uma mensagem clara e
   compreensivel que seja vista quer por todas as pessoas que esta~o no
   si'tio de onde vai sair, quer pelas que esta~o no local de destino.

o   Na~o aninhe o servidor.  O servidor e' cuidadosamente partilhado por
   todos os utilizadores em linha de tal maneira que qualquer um tenha
   a hipo'tese de executar os seus comandos.  Esta partilha e', por
   necessidade, mais ou menos aproximada.  Por favor na~o o force com
   tarefas que corram muito tempo sem fazerem uma pausa.  Se esta' a fazer
   um programa que vai correr por um peri'odo longo, tente faze^-lo esperar
   pelo menos cinco segundos entre cada iterac,a~o ( use `fork (n)' ou
   `suspend(n)' onde `n' e' pelo menos 5 ).  Permitira' assim que os outros
   tenham uma hipo'tese de executarem os seus comandos no meio dos seus.
   Quantos mais comandos os utilizadores digitarem, mais carregado fica o
   servidor e, por isso, mais tempo ficara~o `a espera.

o   Na~o desperdice nu'meros de objectos.  Algumas pessoas, numa a^nsia de
   possuirem objectos com nu'meros `interessantes' ( por exemplo, #1111,
   #2000, etc ) escreveram programas do MOO com ciclos infinitos criando
   e reciclando objectos ate' que os `bons' nu'meros aparecessem.  Por
   favor na~o fac,a isso.

o   Para ajudar a que o crescimento da base de dados se mantenha a um ni'vel
   baixo crie ponderadamente (@create), recicle objectos sem uso (@recycle),
   apague correio antigo (@rmmail), use facetas ($feature) em vez de
   copiar um ror de verbos.  Na~o se esquec,a que neste momento, a ma'quina
   onde o MOOsaico sobrevive e' de baixos recursos.

o   Se esta' genuinamente inseguro(a), guie-se como se o seu emprego
   depende-se disso.  O seu talvez na~o, mas o de outros talvez.
   Ha' pessoas que se ligam ao MOO desde o emprego, e na~o se quer
   que tenham problemas por causa disso.  Com o esforc,o linguistico
   que esta' a ser feito aqui, tenta-se mostrar que existe um
   potencial para valorizar de modo importante a utilizac,a~o do
   MOO pelas pessoas da comunidade acade'mica e empresarial.

o   Em todos os casos em que o comportamento seja aceitavel ou na~o, a
   ultima palavra e' reservada aos feiticeiros.  Se na~o confia nos
   feiticeiros ou na~o se acha capaz de respeitar as suas deciso~es
   nesta mate'ria, e' considerado boa educac,a~o contactar os
   feiticeiros expondo-lhes isso e que na~o quer continuar aqui.

-----------------------------------------------------------------------------

Se na~o conseguiu ler o texto acima devido a este ter rolado para fora do seu
monitor, e o seu cliente na~o tem um mecanismo de captura de texto, digite
`ajuda @pagelength' e `ajuda @linelength' para aprender como o MOO o/a pode
ajudar a ler este ou outro texto destas dimenso~es.

@MCP
====

Sintaxe: @mcp

Mostra uma lista de todos os pacotes MCP/2.1 suportados pelo MOOsaico e pelo
cliente que esta' a usar nesse momento. A lista tem os pacotes possiveis de
usar que foram "negociados" entre o cliente e o MOOsaico na altura da entrada
da personagem.

@MEASURE
========

Syntax:
 @measure object <object name>
 @measure summary [user]
 @measure new
 @measure breakdown <object name>

Normally, objects in the MOO are measured approximately once a day, and the
usage tally as reported by @quota is updated.  You may wish to measure an
object specially, however, without waiting for the automatic measurement to
take place.  @measure has some subcommands to handle this.

@measure object will measure an individual object right now, update the usage
of that object in your usage as reported by @quota, and update the date of
that object's measurement.

@measure summary will go through your or another user's objects and produce
the summary information that is printed by @quota.  Normally this will be just
the same as @quota prints out, but occasionally the addition/subtraction done
to keep @quota in sync will get out of date, and @measure summary will be
needed.

@measure new will go through all your objects, measuring exactly those which
have never been measured before (that is, are too newly @created to have any
measurement data).  This is necessary as you are only permitted to own 10
unmeasured objects, or object creation will not be permitted.

@measure breakdown will give you full information on where an object's size is
coming from.  It will offer to moomail you the result.	Caution: don't forget
to delete this message, as it is large and takes up a lot of space!


ML-COMMANDS
===========

Estes comandos sa~o uteis em relac,a~o aos idiomas no MOOsaico:

 @idioma <idioma>
  Mudar o seu idioma corrente.

 @idiomas <personagem>
  Diz-lhe quais os idiomas falados pela personagem.

 @idiomas = <idioma1> <idioma2> ...
  Informa o sistema sobre quais os idiomas e' que voce^ fala.

 @describe <objecto> in <idioma> as <texto>
  Altera o <texto> da descric,a~o de <objecto> no idioma especificado.

 @name <objecto> in <idioma> as <texto>
  Define o nome do <objecto> no <idioma>

 @todos-idiomas
  Mostra uma lista de todos os idiomas definidos aqui no MOO.

ML-DATA
=======

Ha' duas classes de representac,o~es de texto para usos multilingues.  Por
favor, veja o to^pico de ajuda apropriado:

 ajuda ml-strings      Informac,a~o sobre strings simples (1 linha).

 ajuda ml-text	       Informac,a~o sobre listas de linhas.


ML-MAIL
=======

Pode enviar correio em mais de um idioma incluindo marcas multilingues no
texto da sua carta.  Para informac,a~o relacionada com isso, faz `ajuda
ml-text'.

No `mail editor' pode usar o comando
 print in <idioma>
para ver o texto da sua carta no idioma especificado.

Quanto a ler o correio, o seu idioma corrente (controlado por @idioma)
controla o idioma em que vai ver as mensagens.

Uma carta mandada em mais de um idioma vai ter uma linha "Languages: ..." no
cabec,alho.  Para ver uma carta num outro idioma, pode fazer
 @idioma <idioma>
 @peek <n> on <lista>
onde <n> e' nu'mero da mensagem e <lista> e' nome da lista que estava a ler
quando observou que havia outro idioma.  (Na~o se esquec,a de voltar a alterar
o seu idioma depois.)

Um dia vamos criar um comando que lhe permita ler uma carta directamente num
outro idioma, mas para ja' na~o existe tal comando.  Na~o e' possi'vel
traduzir uma carta depois desta ter sido enviada.  Sabemos que isto e' um
problema e tambe'm esperamos corrigi-lo algum dia.


ML-PROG
=======

Va'rias infraestruturas de interesse:

 :portugues()  E' uma forma melhor de descobrir se algue'm fala
	       portugue^s, mas mesmo assim esta' obsoleta em
	       virtude de caminhar-mos para um mundo multilingue.
	       Em vez de:
		  x:portugues()
	       deve utilizar:
		  $language_utils:speaks(x,$standard.language.por)
	       para verificar o que e' que falam ou
		  x.language == $standard.language.por
	       para testar qual o idioma que te^m seleccionado.

 .language     O idioma standard de um utilizador.

 :languages()  Todos os idioma que um utilizador fala.	(uma valor
	       falso na~o significa que na~o fala nenhuma lingua --
	       somente que na~o definiram qualquer valor para isso.)

 .languages    Esta propriedade existe e suporta :languages() mas
	       na~o NUNCA deve ser referida no seu co'digo.  E'
	       armazenada de forma codificada para ser mais compacta,
	       e esta codificac,a~o pode ir sendo alterada sem aviso.
	       Em vez disso, utilize sempre :languages().

 $standard.generic.language

	       Isto e' um idioma gene'rico.

 $standard.language.eng
 $standard.language.por
 ..etc.
	       Estes sa~o os idioma que o MOOsaico tem pre'-definidos.

 Veja tambe'm estes outros to'picos de ajuda:

    $language_utils
    $translator
    ml-data

ML-STRINGS
==========

STRINGS MULTILINGUES.

Estas s~E3o as codifica~E7~F5es de strings simples de uma s~F3 linha.
Correspondem exactamente ao tipo de dados STR do MOO mas s~E3o representadas
como listas.  (Veja tamb~E9m `ajuda ml-text').

{{lang1, lang2, ...}, str1, str2, ...}

Isto pode ser utilizado para codificar uma string simples, onde str1 est~E1 em
lang1, str2 em lang2, etc.  Tem de haver o mesmo n~FAmero de linguas como de
strings.   Os idiomas t~EAm de ser descendentes de $standard.generic.language.

Como a primeira lista n~E3o ~E9 eficiente em termos de armazenamento e a sua
ocorrencia ~E9 frequente, est~E3o definidos conjuntos de idiomas comuns e
podem ser acedidos por um indice num~E9rico, da forma:

{integer, str1, str2, ...}

Para descobrir o significado destes inteiros, pode utilizar o comando @lsets
da faceta #2662 (Language Maintenance Feature).

ML-TELL
=======

Os seguintes verbos podem ser especialmente u'teis:

 $language_utils:announce(...)
 $language_utils:announce_all(...)
 $language_utils:announce_all_but(...)

  Sa~o como player.location:announce(...) e companhia, excepto
  que os os seus argumentos podem ser strings multilingues.
  Veja `ajuda ml-strings'.

     e.g.,  $language_utils:announce(player,{2,"enters.","entra."});

 $language_utils:tell(...)

  E' como player:tell, excepto que os seus argumentos podem
  ser strings multilingues.  Veja `ajuda ml-strings'.

     e.g.,  $language_utils:tell($translator.permission_denied);

 $language_utils:tell_lines(...)

  E' como player:tell_lines, excepto que os seus argumentos
  podem ser ser textos multilingues.  Veja `ajuda ml-text'.

     e.g.,  $language_utils:tell_lines(this:description())

Tambe'm ha' um nu'mero de verbos u'teis com objectivos especiais
em $translator.  Fac,a `ajuda $translator' para mais informac,a~o.

ML-TEXT
=======

TEXTO MULTILINGUE.

Num texto multilingue, as linhas podem estar identificados como pertencendo a
um idioma particular.  Essa identificac,a~o ocorre quando uma marca como
"*ENG*" ocorre sozinha numa linha.  Na~o pode ter outro texto na linha (nem
so' espac,os).	Quando isto acontece, as linhas seguintes sa~o interpretadas
como texto no idioma especificado (ou nos idiomas especificados).  Por
exemplo:

 *ENG*
 This is a test
 that has two lines.
 *POR*
 Isto e' um teste
 que tem duas linhas.

especifica que "This is a test" (linha 1) e "that has two lines" (linha 2)
esta~o escritas em ingle^s, e "Isto e' um teste" (linha 1) e "que tem duas
linhas" (linha 2) esta~o escritas em portugue^s.

Pessoas a ler este texto noutros idiomas va~o ver o texto no primeiro idioma
especificado (que usualmente deve ser ingle^s, pois e' a lingua mais falada
internacionalmente).

Cada idioma tem associado um nome de tre^s letras que pode ser usado para
identificar o idioma nesse modo.  Algum dia vai poder expandir isto, mas por
agora estes nomes va~o funcionar:

 ENG  ingle^s	    ESP  espanhol    DEU  alema~o
 POR  portugue^s    FRA  france^s    NIH  japone^s

As notac,o~es possiveis neste momento sa~o:

 *ENG*	      <- ingle^s
 *POR,ESP*    <- portugue^s e espanhol
 *ANY*	      <- QUALQUER idioma (Esta marca e' interpretada de
		 modo especial.  ANY na~o e' o nome de nenhum idioma.)


MULTILINGUAL/MULTILINGUE
========================

A tecnologia de MOO estava originalmente toda em ingle^s, mas no MOOsaico
temos mudado muitas facilidades para ser multilingues.	Ha' ajuda em va'rios
dissos:

 Faz... 	   Para informac,a~o sobre...
 ------ 	   --------------------------
 ajuda ml-text	   texto multilingue (como usar as marcas, como *ENG* e *POR*)
 ajuda ml-mail	   correio multilingue
 ajuda ml-commands comandos relacionados com os idiomas

Por uma lista completa, faz "ajuda ml".

Estas caixas de correio tambe'm podem ser uteis...

 *multilingue	   Discussa~o sobre o nosso projecto multilingue.
 *que		   Envia mensagens para aqui para ajuda com traduc,o~es.


@NAME
=====

Sintaxe: @name <objecto> in <idioma> as <nome>

Define o <nome> do <objecto> no <idioma> especificado. Naturalmente actualiza
os aliases desse objecto. Verifica 'ajuda @names'.
Para uma lista dos idiomas definidos, faz "@todos-idiomas".
(o antigo @name chama-se @name-swap)

@NAME-SWAP
==========

Sintaxe: @name-swap <nome>

Define o teu nome de um dos que tens nos teus aliases.

@NAMES
======

Sintaxe: @nomes <objecto>

Mostra o nome dum objecto em todos os idiomas em que esta' disponi'vel, na~o
so' no seu idioma seleccionado.

@NOME
=====

Descontinuado. Faz 'ajuda @name'.

PROGRAMMER-POLICY
=================

			Poli'tica de Programadores

Esperamos que os nossos programadores contribuam significativamente para o
nosso mundo multilingue.  Antes de perguntares se podes ser programador, cria
pelo menos descric,o~es multilingues para ti mesmo, e preferi'velmente tambe'm
para alguns dos objectos que tiveres criado.  Assim podemos saber que entendes
o nivel de participac,a~o que precisamos aqui.

Faz `ajuda tema' para leres mais informac,a~o sobre o tema do MOOsaico.

Ser programador e' um privile'gio, na~o um direito.  Na~o toleramos o uso de
programac,a~o para causar aflic,a~o ou dano.  Se abusares do privile'gio, vais
perde^-lo.

Faz `ajuda comportamento' para leres mais informac,a~o sobre comportamento
apropriado.

@QUICKSEND
==========

Sintaxe: @quicksend <recipiente(s)> [subj=<texto>] [<mensagem>]
	@qsend

Uma forma mais ra'pida de enviar em vez do comando @send.

@SHOW-GUEST-IDS
===============

Uso: @show_guest_ids [sim/na~o]

Activa e desativa a visualizac,a~o dos nu'meros de identificac,a~o
dos "guests" nos "pages" e nos "emotes" remotos.

THEME/TEMA
==========

			   Tema do MOOsaico

O tema do MOOsaico e' a interligac,a~o cultural. O MOOsaico, tal como o mundo,
e' tecido a partir dos fios individuais de varias culturas locais. Ainda que
as culturas do mundo real variem umas das outras, estas sa~o forc,adas a
coexistir nos pequenos limites do globo. O que quer que elas colectivamente
formam, acaba por definir o mundo que conhecemos. O mesmo se passa com o
MOOsaico.

O que e' importante no MOOsaico na~o e' o que possa construir, mas o orgulho
que se deve ter nisso, e o esforc,o para integrar esses objectos no ambiente
que os rodeia, por forma a criar um mundo MOO que todos possam explorar, e com
ele aprender.

Para o ajudar no seu esforc,o de contribuir para a nossa comunidade,
oferecemos os exemplos seguintes de qualidades deseja'veis que gostariamos de
ver presentes nas obras feitas aqui no MOOsaico:

MULTILINGUES.  Um aspecto importante do trabalho feito aqui no MOOsaico e'
experimentar com os aspectos multilingues. Quando apropriado, encoraja-se o
uso das facilidades multilingues para acomodar interacc,o~es de uma maneira
conforta'vel.

CRIATIVOS.  As coisas que fac,a devem ser interessantes. Objectos funcionais
sa~o preferidos em detrimento dos esta'ticos, para assim incentivar a
participac,a~o de todos os utilizadores. Objectos que visem objectivos
sociais, tais como educac,a~o, sa~o tambe'm encorajados.

LIGADOS.  Quantos mais espac,os no MOOsaico ficarem ligados, e quanto mais
agrada'vel e coerente essa ligac,a~o for, maior sera' o sentimento de
comunidade. Na~o e' necessa'rio que todos os quartos estejam ligados entre si,
mas pensar em como ligar o seu espac,o	a um ou mais lugares pode ser uma
fonte u'til de ideas.

ABERTOS.  Encorajamos a criac,a~o de espac,os que sejam acessiveis e
convidativos para os outros utilizadores. Nem todos os espac,os necessitam de
ser abertos. A maioria das pessoas precisam tanto de espac,os pu'blicos como
privados. Mas ha' a necessidade de algumas areas pu'blicas, e algue'm tera' de
as construir.

Acima de tudo, por favor lembre-se que isto e' uma comunidade, e em qualquer
iniciativa que tome, tente assegurar que devolve `a comunidade o tipo de
coisas boas que daqui espera obter.

@TIME/@TEMPO
============

Syntaxe:  tempo

Mostra-lhe a data corrente e o tempo local do MOOsaico, ie, que horas sa~o
neste momento em Portugal.

@TWITTER
========

Sintaxe: @twitter <mensagem>
	@twitter-set <utilizador> <senha>

Envia uma mensagem para o seu perfil no Twitter (http://twitter.com).
Naturalmente ja' deve ter um utilizador no sistema. A segunda forma define as
credenciais de autenticac,a~o a usar no twitter.

UVLS/UVL
========

UVLs (Universal Vocabulary Locators)
====================================

Vocabulary fragments (words, phrases, and whole sentences) can be created that
can be referred to by an integer key, called a UVL (or "Universal Vocabulary
Locator").  The maintainers of each language can then separately, and at their
discretion, associate a translation with any such UVL key.

A key is computed by $language_utils:make_uvl(object,index) where object is
any object that has a .vocabulary property and index is the position of the
vocabulary item in the .vocabulary property.  The inverse operation is
$language_utils:parse_uvl(uvl) which takes an integer as an argument and
yields a list of {object, index, failure_reason}.  If the failure_reason is
false, then the object and index are valid; otherwise, it is string explaining
what was the matter with the given UVL.

NOTE WELL: Once you put an item into the .vocabulary property, you must NEVER
move it.  If you remove an element, the other elements will have different
positions and things will be horribly messed up!  If you even change the
contents of an element, you must update ALL references in the MOO and since
there is no mechanism for finding all such references, this is virtually
impossible.

The specific encoding of a UVL key as an integer is bit-encoded:
  [ 12 bits (0-4095) index ] [ 19 bits (0-524287) objnum ]
This means that no number smaller than (or equal to) 524287 is valid as a UVL
since the index part must always be 1 or greater.  It also means that no
vocabulary index may have more than 4095 words.

A language object can be `trained' to know about the UVLs for any object that
has a .vocabulary property by using `train <language> for <object>'.  To
assure quality and avoid mischief, however, only the authorized maintainer of
a language may do such training.


@WAYS
=====

Sintaxe:  @ways     - Mostra as sai'das obvias do corrente quarto.

Se o Ziggy estivesse no Sala~o Central, `@ways' mostrar-lhe-ia:

Saidas o'bvias: desce, portao, sul, e  norte

@WEATHER
========

Sintaxe: @weather [co'digo-ICAO]

Servic,o AirportWeather. Utilizando um co'digo ICAO (Organizac,a~o
Internacional da Aviac,a~o Civil) temos as condic,o~es meteorolo'gicas da
estac,a~o de servic,o nesse local. Para encontrar o co'digo da estac,a~o mais
perto de si procure em http://www.airrouting.com/content/airportloc.html
Co'digos mais populares:

LPPR   Porto	    LSZB   Bern Belp	     KJFK   New York JFK
LPPT   Lisboa	    EGLL   London Heathrow   KLAX   Los Angeles Intl.
LPFR   Faro	    EGKK   London Gatwick
LPBG   Braganc,a    EHAM   Amsterdam	     VHHH   Hong Kong Intl.
LPMA   Funchal	    EIDW   Dublin, Ireland   RJTT   Tokyo Intl.
LPHR   Horta	    LFPG   Paris CDG	     YSSY   Sydney Intl.
		   LEBL   Barcelona	    HECA   Cairo
		   LEMD   Madrid Barajas

	
Reply	Reply to all	Forward Invite Gandalf to Gmail
	
	
		
		
	 Reply		
Reply to all Reply to allForward Forward Print Add Gandalf to Contacts list
Delete this message Report phishing Show original Message text garbled?
	 Gandalf <85@moosaico.moo.mud.org>	
to gandalf
	
show details
	 1:44 am (0 minutes ago) 
MOOsaico Help (#161)
====================

accents 	    @idioma		ml-mail 	    @quicksend
acentos 	    @idiomas		ml-prog 	    @show-guest-ids
@all-languages	    @idiomes		ml-strings	    tema
behavior	    irc 		ml-tell 	    @tempo
behaviour	    @join		ml-text 	    theme
@client-options     @language		modales 	    @time
comportamento	    @languages		MOOsaico-index	    @todos-idiomas
comportamiento	    @lenguas		multilingual	    @twitter
@descreve	    @lookfor		multilingue	    uvl
@describe	    manners		@name		    uvls
@descriptions	    @mcp		@name-swap	    @ways
events		    @measure		@names		    @weather
@go		    ml-commands 	@nome
guest-features	    ml-data		programmer-policy


ACCENTS/ACENTOS
===============

Accents
=======
For better visual consistency in our texts, we request that you use proper
accents in all words where it is orthographically required.  To do this, place
the accents after the letter that you want to accent except for accent grave,
which should appear before the letter.	For example:

  Rojo~es `a moda do Minho / Corac,a~o	    (Portugue^s)
  Ojala' que este pequen~o ejemplo basta.   (Espan~ol)
  ku_ko_ basu wa doko desu ka?		    (Nihongo)

@ALL-LANGUAGES/@TODOS-IDIOMAS
=============================

Syntax: @all-languages

Shows a list of all languages defined here in the MOO.

@CLIENT-OPTIONS
===============


* charset

 There are three types of text visualization:

   latin1    UTF-8    french-notation

 which can be set by:

   @client-options charset=latin1
   @client-options charset=UTF-8
   @client-options -charset

* noresizeinfo

 If you don't want a MOO confirmation of the window resize you should activate
this option: +noresizeinfo
 The client must support MCP/2.1 and the package dns-nl-vgmoo-client

* loginonstatus

 Send the connection messages of features Login Watcher (#896) to the status
bar of your MCP client. It must support dsn-com-awns-status.

 Also see 'help @mcp'.


@DESCRIBE/@DESCREVE
===================

Syntax: @describe <object> in <language> as <text>

Sets the description of <object> in the specified <language> to be the given
<text>.  (Descriptions of <object> in other languages are unaffected.)

For a list of defined languages, do "@all_languages".

@DESCRIPTIONS
=============

Syntax: @descriptions <object>

Shows the descriptions of an object in each language that it is available in,
not just in your selected language.
- Show quoted text -

EVENTS
======

EVENT-REPORTING ROOMS

The default room has been replaced with the event-reporting room.
Whenever something "interesting" happens in such a room, messages
get sent to objects (in the room or not) which are interested in such
events.  This sort of system makes it very simple to program, for
example, a dog that barks every time someone enters a room, or a
security system that beeps every time someone leaves the jail.

DEFAULT EVENTS

There are four events which have been built into the generic
event-reporting room: enter, exit, connect and disconnect.  Whenever
someone or something performs any of these actions, the room will
notify any interested objects.	For information about how to signify
interest in these events and how to program objects to respond, see
the section below entitled, "EVENT-AWARE OBJECTS".

It is worth noting that dropping an object in a room and entering a
room are both equivalent, since in both cases something is "entering"
the room.  Correspondingly, the "enter" event will be triggered in
both cases, and it is up to the programmer to distinguish between
them.

CUSTOM EVENTS

If you wish to add or remove additional events on an event room, use the
commands:

addevent <event name> to <room>
rmevent <event name> from <room>

The effect of these commands is to modify the .event_list property on
the room and the list of listeners.  Essentially, adding an event to
a room signifies that you anticipate the event happening in that room.
However, event-reporting rooms can handle events of any name -- they
just happen to be much more efficient when handling expected events.

EVENT-AWARE OBJECTS

Creating event-aware objects is simple.  To have an object respond to
"enter" events, create a verb on the object named on_enter (this none
this).	The :on_enter verb will be called every time something enters.
Similarly, verbs named :on_exit, :on_con, :on_dis, or even :on_bark
may be added to ordinary object to make them event-aware.  In fact,
any verb beginning with "on_" will act as an event-handling verb.

The event-reporting room will usually call the :on_* verbs with one
argument: args[1] is a list of objects which are affected by the
event.	By default, args[1][1] is the "direct object," or what
object triggered the event and args[1][2] is the "indirect object,"
or what object was affected by the event.  For "enter" and "exit"
events, args[1][1] will be the player that did the moving, and
args[1][2] will be the room moved to/from.  For "con" and "dis"
events, args[1][1] will be the player doing the (dis)connecting, and
args[1][2] will be the room in which it happened.

Using the value of args[1] is more accurate than trying to use
"dobj" or "iobj," since they will probably be undefined for some
events.  The args list is (by default) guaranteed to contain relevant
information.

EVENT REGISTRATION

The event-reporting room keeps a list of objects interested in each
event (in the .event_listeners property).  When objects enter the room
(or, equivalently, are dropped in the room), they are registered for
any events they are interested in.  This is done by checking for :on_*
verbs and registering the object for the corresponding events.	For
example, if a "security box" had an :on_enter verb, it would be
registered for "enter" events.	If a "front gate" had :on_enter and
:on_exit verbs, it would be registered for both "enter" and "exit"
events.  If an object has :on_* verbs which aren't in the list of
events recognized by the room, they are ignored (if any of those
custom events are triggered, though, the :on_* verb WILL be called).
When an object leaves the room or is picked up, it is automatically
unregistered for events in that room.

EXPLICIT EVENT REGISTRATION

If you wish to have an object explicitly registered for events in a
certain room, use these commands:

register <object> in <room>
unregister <object> in <room>

Explicitly registering an object for events in a room prevents it from
being automatically registered and unregistered if it moves into/out
of the room.  This allows for remote objects to be aware of events in
the room.  An example of this would be a centralized security system
that keeps track of all the rooms in a house, or a counter that
tallies the number of people entering a given room.

EVENT AWARENESS

There are situations where it becomes desirable to turn off
event-awareness for certain objects.  This may occur if there are too
many people walking through the room, or more importantly, if the
event-handling verb is causing errors and distracting innocent
bystanders.  If the object is a descendent of the generic event-aware
thing, the command to toggle event-awareness is:

toggle <thing>

If the object is NOT a descendent of the generic event-aware thing,
then it suffices to create and set the .events_off property to 1 and
to do:

update <room>

which updates the event_listeners list.  Note that if there is no
events_off property, the object is assumed to be event-aware.

To toggle event-reporting in a room, the command is:

toggle <room>

When events are turned off for an entire room, no events will be
reported at all.

EVENT ERRORS

The event code does its best to trap errors.  However, it cannot catch
errors made by other programers, in their :on_* verbs.	If the
:on_enter on a dog in the E&L Garden is broken, for example, it is
going to spew error messages at everyone that enters.  Needless to
say, this can become distracting and annoying; it is always a good
idea to test out your event verbs privately before dropping your
object in a public area.  If the event code happens to successfully
catch an error, the owner of the object will be paged (if online) or
MOOmailed about the error.  The object will also be deregistered for
events in the given room.

MORE DETAILS

Generic Event-Reporting Room (#1737)
verbs:
update <room>			update listenesr
reg*ister <what> in <room>	explicitly register something
unreg*ister <what> in <room>	explicitly unregister something
toggle*events <thing>		toggle event-awareness
addevent <what> to <room>	add custom event to room
rmevent <what> from <room>	remove event from room
stat <room>			info on room
properties:
event_list			supported events
event_listeners 		listening objects
event_listeners_explicit	explicitly registered objects
event_active			reporting events?

Generic Event-Aware Thing (#1740)
verbs:
toggle*events <thing>		toggle event-awareness
properties:
events_off			ignoring events?

@GO/@JOIN
=========


Syntax:  @go <location>     - teleport yourself to a given location
	@join <player>	   - teleport yourself to a player's location

`@go #82' will teleport you to Central Hall.
`@join Ziggy' will teleport you to Ziggy's location.

GUEST-FEATURES
==============

Guests cannot add arbitrary features.  Only features approved for guests can
be added.  The programmer of the feature is normally responsible for
controlling this, but the wizards will intervene if policy is violated.  The
following kinds of features are not acceptable for guests to use; people using
these kinds of features must log in so that they can be    accountable for
their own actions:

 (a) Spam.  Features that draw big pictures or otherwise do a lot of output.
Guests do not need these.  Our admissions policy is quite liberal.  Let them
get a named account.

 (b) Sexually explicit.  People should not be using sexually explicit
communication with anyone they do not know well.  A guest is not appropriately
accountable for any unwanted actions, so should not use these tools.

 (c) Spoofing.	Spoofing is not a nice activity anyway--it especially not nice
when done by anonymous people.

 (d) Generally impolite.  It's enough of a problem that guests can be impolite
with the mere use of `:' or `page' without adding the ability for them to be
rude in a programmatically-enhanced way.

See also "help manners".

IRC
===

The following table will help those users with an IRC background.

   IRC		      MOOsaico
   ---		      --------
   <falar>	      say
   /msg 	      page
   /nick	      @rename
   /join	      @go
   /kick	      @eject
   /part	      @quit
   /who 	      @who
   /names	      look/@who
   /memoserv send     @send/@quicksend
   /memoserv read     @read/@next/@mail

To know how to use them please type the 'help' command followed by the
MOOsaico's command.

@LANGUAGE/@IDIOMA
=================

 @language [portuguese|english|...]  - Changes or tells you the language
				       interface you are using.

`@language portuguese' starts showing you all the description in the language
of Magellan.  Note: If a description in one language is missing the object
will appear described on another language. Please also check '@all-languages'

@LANGUAGES/@IDIOMAS/@IDIOMES/@LENGUAS
=====================================

Syntax:  @languages
	@languages <who>

Tells you a list of what <who> speaks.	By default the <who> is yourself.

Syntax:  @languages = <lang1> <lang2> ...
	@languages <who> = <lang1> <lang2> ...

Declares that <who> is capable of speaking the specified languages.  By
default, the person is yourself.  (Only a wizard can change this information
for another person, but anyone can change the languages spoken by their own
puppets.)

@LOOKFOR
========

Syntax:     @lookfor <user>
	   @lookfor! <user>

At the time of log in, you will be informed about the users in your personal
list that are connected.  Use @lookfor to add a user to the list and @lookfor!
to remove a given one.

MANNERS/BEHAVIOR/BEHAVIOUR/COMPORTAMENTO/COMPORTAMIENTO/MODALES
===============================================================

Manners
=======
First of all, any action that threats the functional integrity of the MOO, or
causes any trouble to the people who support the MOO, will lead to the
expelling of the responsible user by the wizards. If you should find a hole or
a bug in the core, tell a wizard, don't try to make it work for you. Cracking
the system is out of the scope of behaviour. A good behaviour is about letting
the MOO run and not bothering the other characters.

o   Be polite. Avoid being rude. The MOO is worth using if it is a pleasant
   place for all the people. When people are rude and sordid to each other,
   it stops being pleasant. The MOO is a place for people to socialize,
   program, have fun and comunicate; as long as they mantain a certain
   degree of education between them.

o   If someone is rude to you, ignore her/him. Please don't try to get even;
   that will only increase the rudeness and make the people involved loose
   their interest in the MOO. If someone is bothering you, there are several
   options. The first step is usually ask her/him/they to stop. If this
   doesn't work, and avoiding that person/s isn't enough, some verbs that
   might be useful are @gag and @eject. There is help available for both.

o   Respect the sensibilities of other people. The users of the MOO come from
   a wide range of cultures and environments. Each one's idea of what is an
   offensive speech or description is probably unique. Try to keep potentially
   offensive expressions out of texts people can casually see. If you intend
   to create objects or build zones that may cause controversy in a segment
   of our comunity, provide sufficient warnings to the casual explorers, so
   that they can choose not to interact with those objects or zones.

o   Don't shout. It's simple to create a MOO verb that displays a message to
   every user logged in. Please don't do this.

o   Only teleport your things. By default, most objects (including users) can
   be moved freely from one place to another. This allows the easy creation
   of some handy objects. Unfortunately it also allows bothering other people,
   by moving them and their objects without consent. Don't do it.

o   Don't fool people (`spoofing'). Don't produce messages that aren't
   attributed to you. `Spoofs' can be fun and expressive when used carefully.
   If you program a `spoof', use a nice version that announces itself as a
   `spoof', and use it moderately.

o   Respect other people's privacy and the right to control their objects,
   including the right to decide who can enter or stay in their rooms. Don't
   create or use spying devices.

o   Don't teleport yourself silently or in secrecy. It's easy to write MOO
   verbs to move yourself instantaneously from one place to another. Remember
   to include in those programs a clear and understandable message that is
   seen both by all the people in the place you're leaving and in the place
   you're going to.

o   Don't crash the server. The server is carefully shared by all the users
   on-line, in such a way that anyone has the chance to execute his/her
   commands. This sharing is, by necessity, more a less aproximate. Please
   don't overload the server with tasks that run for a long time without
   pausing. If you're working on a program which is going to run for a long
   time, try to make it wait at least 5 seconds between each iteration (use
   `fork (n)' our `suspend (n)', where `n' is at least 5). Thus you'll allow
   others to have a chance of executing their commands in the middle of
   yours. The more commands the users type in, the more loaded becomes the
   server, leading to a greater wait time for the users.

o   Don't waste object numbers. Some people, in a urge to own objects with
   `interesting' numbers (like #1111, #2000, etc.), wrote MOO programs with
   infinite loops, creating and recycling objects until the `good' numbers
   showed up. Please don't do this.

o   To help the growth of the database to be kept at a low level, create
   thoughtfully (@create), recycle objects you don't use anymore (@recycle),
   delete old mail (@rmmail), use features ($feature) instead of copying
   a load of verbs. Don't forget that, for the time being, the machine
   where MOOsaico survives is a low-resource one.

o   If you are genuinely unsure, conduct yourself as you would if your
   job depended upon it.  Yours might not, but someone else's might.
   Some people MOO from work, and we do not want to discourage that.
   Through our linguistic efforts here, we are trying to show that
   there is a potential for important value to the academic and
   business community of using MOO.  Unmannerly conduct on your part
   could mean embarrassment or perhaps even loss of a job to someone
   else!  Be sensitive to how actions you take can affect others!

o   On all matters of what behavior is acceptable or not, the wizards
   reserve the right to have the final say.  If you do not trust or
   respect the wizards judgment in these matters, it is considered
   good manners to contact the wizards saying so and asking to have
   your account turned off.

------------------------------------------------------------------------------

If you couldn't read the above text due to it rolling out of your display, and
your client doesn't have a text-capture mechanism, type in `help @pagelength'
and `help @linelength' to learn how the MOO can help you to read texts of
these dimensions.

@MCP
====

Syntax: @mcp

Shows the MCP/2.1 supported packages by the client you are using and MOOsaico.
This list shows the ones that were negotiated between them, during your
entrance.

@MEASURE
========

Syntax:
 @measure object <object name>
 @measure summary [user]
 @measure new
 @measure breakdown <object name>

Normally, objects in the MOO are measured approximately once a day, and the
usage tally as reported by @quota is updated.  You may wish to measure an
object specially, however, without waiting for the automatic measurement to
take place.  @measure has some subcommands to handle this.

@measure object will measure an individual object right now, update the usage
of that object in your usage as reported by @quota, and update the date of
that object's measurement.

@measure summary will go through your or another user's objects and produce
the summary information that is printed by @quota.  Normally this will be just
the same as @quota prints out, but occasionally the addition/subtraction done
to keep @quota in sync will get out of date, and @measure summary will be
needed.

@measure new will go through all your objects, measuring exactly those which
have never been measured before (that is, are too newly @created to have any
measurement data).  This is necessary as you are only permitted to own 10
unmeasured objects, or object creation will not be permitted.

@measure breakdown will give you full information on where an object's size is
coming from.  It will offer to moomail you the result.	Caution: don't forget
to delete this message, as it is large and takes up a lot of space!


ML-COMMANDS
===========

These commands are useful when dealing with languages at MOOsaico.

 @language <lang>
  Changes your current language.

 @languages <person>
  Tells you what languages someone speaks.

 @languages = <lang1> <lang2> ...
  Tells the system what languages you speak.

 @describe <object> in <language> as <text>
  Tells the system what <text> to use as <object>'s description
  in <language>.

 @name <object> in <language> as <text>
  Sets the <object> name in <language>.

 @all-languages
  Shows a list of all languages defined here in the MOO.

ML-DATA
=======

There are two kinds of encodings of text for multilingual purposes.  Please
see the appropriate help topic:

 help ml-strings       Information about simple one-line strings.

 help ml-text	       Information about lists of lines.


ML-MAIL
=======

You can send mail in multiple languages by adding multilingual markers to the
text of your outgoing mail.  For information on how to do this, do `help
ml-text'.

In the mail editor, you can use the command
 print in <language>
to see the text of your outgoing message in the indicated language.

When reading mail, your selected language (controlled by @language) controls
the language in which you will see mail.

Mail that is sent in multiple languages will have a "Languages" field in its
header.  To see mail in another language, you can do
 @language <language>
 @peek <n> on <list>
where <n> is the message number and <list> is the name of the recipient you
were reading when you noticed its availability in another language.  (Don't
forget to set your language back when you are done.)

Some day we will make a command to let you read the mail directly in another
language without switching your language, but right now we don't have such a
command.  It is not possible to translate a message to another language after
it has been sent.  We know this is a problem and hope to fix this some day,
too.


ML-PROG
=======

Several facilities of interest:

 :portugues()  This is a better way to find out if someone speaks
	       portuguese, but even this is obsolete as we move
	       into a multilingual world.  Instead of
		  x:portugues()
	       you should probably use:
		  $language_utils:speaks(x,$standard.language.por)
	       to test what they speak or
		  x.language == $standard.language.por
	       to test what language they have selected.

 .language     A player's standard language.

 :languages()  All the languages a player speaks.  (A false value
	       does not mean they speak no languages--it means they
	       have not set a value for this.)

 .languages    This property exists and supports :languages() but
	       you should NEVER refer to this property in code.  It
	       is stored encoded for compactness, and the encoding
	       may change from time to time without warning.  Always
	       use :languages() instead.

 $standard.generic.language

	       This is the generic language.

 $standard.language.eng
 $standard.language.por
 ..etc.
	       These are the languages MOOsaico has pre-defined.

 See also these other help topics:

    $language_utils
    $translator
    ml-data

ML-STRINGS
==========

MULTILINGUAL STRINGS.

These are encodings of simple one-line strings. They correspond exactly to the
MOO datatype STR but are represented as lists.	(See also "help ml-text".)

{{lang1, lang2, ...}, str1, str2, ...}

This can be used to encode a single string, where str1 is in lang1, str2 is in
lang2, etc.  There must be the same number of langs as strings.  The languages
must be descendants of $standard.generic.language.

Because the first list is not storage-efficient and occurs a lot, common sets
of languages are defined and can be accessed by numeric indexes, as in:

{integer, str1, str2, ...}

To find the meaning of these integers, you can use the @lsets command on
feature #2662 (Language Maintenance Feature).

ML-TELL
=======

The following verbs may be especially useful:

 $language_utils:announce(...)
 $language_utils:announce_all(...)
 $language_utils:announce_all_but(...)

  These are like player.location:announce(...) and friends,
  except that their arguments can be multilingual strings.
  See `help ml-strings'.

     e.g.,  $language_utils:announce(player,{2,"enters.","entra."});

 $language_utils:tell(...)

  This is like player:tell, except that the arguments can
  be multilingual strings.  See `help ml-strings'.

     e.g.,  $language_utils:tell($translator.permission_denied);

 $language_utils:tell_lines(...)

  This is like player:tell_lines, except that the arguments can
  be multilingual texts.  See `help ml-text'.

     e.g.,  $language_utils:tell_lines(this:description())

There are also a number of useful special-purpose verbs on $translator.
Do "help $translator" for more information.

ML-TEXT
=======

MULTILINGUAL TEXT.

In multilingual text, lines can be identified as belonging to a given
language.  The identification occurs when a marker such as "*ENG*" occurs on a
line by itself.  There must be NO other text on the line (not even spaces).
When this happens, subsequent lines are interpreted as text in the specified
language (or languages).  For example:

 *ENG*
 This is a test
 that has two lines.
 *POR*
 Isto e' um teste
 que tem duas linhas.

specifies "This is a test" (line 1) and "that has two lines" (line 2) in
English, and "Isto e' um teste" (line 1) and "que tem duas linhas" (line 2) in
Portuguese.

People reading in other languages will see the text in the first language
specified (which should usually be English, since it is most widely spoken
internationally).

Each language has associated with it a three letter name which can be used to
identify the language in this mode.  At some point, this will be more
extensible but for now these names will work:

 ENG  English	    ESP  Spanish    DEU  German
 POR  Portuguese    FRA  French     NIH  Japanese

The actual notations possible are:

 *ENG*	      <- English
 *POR,ESP*    <- Portuguese and Spanish
 *ANY*	      <- ANY language (This marker is handled specially.
			       ANY does not name a language.)


MULTILINGUAL/MULTILINGUE
========================

MOO technology was originally all in English, but at MOOsaico we have changed
many facilities to be multilingual.  There is help on several of these:

 Do...		   For information on...
 -----		   ---------------------
 help ml-text	   multilingual text (using markers like *ENG* and *POR*)
 help ml-mail	   multilingual mail
 help ml-commands  commands related to languages

For a complete list, do "help ml".

The following mailing lists may also be useful:

 *multilingual	   Discussion about our multilingual project.
 *what		   Send letters here for help with translations.


@NAME
=====

Syntax: @name <object> in <language> as <name>

Sets the <name> of <object> in the specified <language>. The object aliases
are updated accordingly. Also check 'help @names'.
For a list of defined languages, do "@all-languages".
(the old @name is now @name-swap)

@NAME-SWAP
==========

Syntax: @name-swap <name>

Set your name from one of your aliases.

@NAMES
======

Syntax: @names <object>

Shows the name of an object in each language that it is available in, not just
in your selected language.

@NOME
=====

Deprecated. Use 'help @name'.

PROGRAMMER-POLICY
=================

			Programmer Policy

We hope that our programmers will contribute significantly to our multilingual
world.	Before asking to be a programmer, please at least create multilingual
descriptions for yourself, and preferably also for some of the objects you
have created.  That way, we can know that you understand what kind of
participation we we need here.

Do `help theme' for more information about the theme of MOOsaico.

Being a programmer is a privilege, not a right.  We do not tolerate the use of
programming to cause others distress or harm.  If you abuse the privilege, you
will lose it.

Do `help manners' for more information about proper behavior.

@QUICKSEND
==========

Syntax: @quicksend <recipient(s)> [subj=<text>] [<message>]
       @qsend

A quick form of the @qsend command.

@SHOW-GUEST-IDS
===============

Syntax: @show_guest_ids [yes/no]

Enables/disables showing of guest id numbers in pages and remote emotes.
With no arguments, shows the present state.

THEME/TEMA
==========

			   MOOsaico Theme

The theme of MOOsaico is one cultural connectivity.  MOOsaico, like the world,
is woven together out of the individual fabrics of a variety of local
cultures.  Although real world cultures vary from one to another, they are
forced by circumstance to co-exist in the tiny confines of the globe, and
whatever they collectively form comes to define the world as we know it.  So,
too, with MOOsaico.

What is important in MOOsaico is not what you build, but that you take a sense
of pride in it and that you work to integrate it well with its local
surroundings in order to create a MOO world that all can explore and learn
from.

To help you in your effort to contribute to our community, we offer the
following as examples of desirable qualities that we would like to see
reflected in works made here at MOOsaico:

MULTILINGUAL.  An important part of the work of MOOsaico is to experiment with
multiligual aspects.  Where appropriate, use of the multilingual facilities to
accomodate interactions in a comfortable way for the user are encouraged.

CREATIVE.  The things you build should be interesting.	Functional objects are
encouraged over static ones in order to encourage participation.  Objects that
encourage social goals such as education are also encouraged.

CONNECTED.  The more spaces in MOOsaico that connect, and the more gracefully
they do so, the better the sense that we are all one community.  It isn't
necessary that every room be connected, but thinking about how your space
connects to one or more other places may be a useful source of ideas.

OPEN.  We encourage the production of spaces that are accessible and inviting
to people.  Not every space needs to be open.  Most people need both public
and private spaces.  But there do need to be public spaces here, and somebody
has to build them.

Most of all, please remember that this is a community, and whatever you try to
do, please try to make sure that you put back into the community the kinds of
good things you expect to get out of it.

@TIME/@TEMPO
============

Syntax:  time

Shows the current date and MOOsaico's local time, ie, what's the time in
Portugal right now.

@TWITTER
========

Sintaxe: @twitter <mensagem>
	@twitter-set <utilizador> <senha>

Envia uma mensagem para o seu perfil no Twitter (http://twitter.com).
Naturalmente ja' deve ter um utilizador no sistema. A segunda forma define as
credenciais de autenticac,a~o a usar no twitter.

UVLS/UVL
========

UVLs (Universal Vocabulary Locators)
====================================

Vocabulary fragments (words, phrases, and whole sentences) can be created that
can be referred to by an integer key, called a UVL (or "Universal Vocabulary
Locator").  The maintainers of each language can then separately, and at their
discretion, associate a translation with any such UVL key.

A key is computed by $language_utils:make_uvl(object,index) where object is
any object that has a .vocabulary property and index is the position of the
vocabulary item in the .vocabulary property.  The inverse operation is
$language_utils:parse_uvl(uvl) which takes an integer as an argument and
yields a list of {object, index, failure_reason}.  If the failure_reason is
false, then the object and index are valid; otherwise, it is string explaining
what was the matter with the given UVL.

NOTE WELL: Once you put an item into the .vocabulary property, you must NEVER
move it.  If you remove an element, the other elements will have different
positions and things will be horribly messed up!  If you even change the
contents of an element, you must update ALL references in the MOO and since
there is no mechanism for finding all such references, this is virtually
impossible.

The specific encoding of a UVL key as an integer is bit-encoded:
  [ 12 bits (0-4095) index ] [ 19 bits (0-524287) objnum ]
This means that no number smaller than (or equal to) 524287 is valid as a UVL
since the index part must always be 1 or greater.  It also means that no
vocabulary index may have more than 4095 words.

A language object can be `trained' to know about the UVLs for any object that
has a .vocabulary property by using `train <language> for <object>'.  To
assure quality and avoid mischief, however, only the authorized maintainer of
a language may do such training.


@WAYS
=====

 @ways	   - Show the obvious exits of the current room.

If Ziggy was in Central Hall, '@ways' would show him:

Obvious exits: down, gate, south, and north

@WEATHER
========

Syntax: @weather [ICAO-code]

AirportWeather service. Giving a ICAO (International Civil Aviation
Organisation) code it reports the weather condition from the meteo station. To
find the code of the station near you check
http://www.airrouting.com/content/airportloc.html
Some popular codes:
- Hide quoted text -

LPPR   Porto	    LSZB   Bern Belp	     KJFK   New York JFK
LPPT   Lisboa	    EGLL   London Heathrow   KLAX   Los Angeles Intl.
LPFR   Faro	    EGKK   London Gatwick
LPBG   Braganc,a    EHAM   Amsterdam	     VHHH   Hong Kong Intl.
LPMA   Funchal	    EIDW   Dublin, Ireland   RJTT   Tokyo Intl.
LPHR   Horta	    LFPG   Paris CDG	     YSSY   Sydney Intl.
		    LEBL   Barcelona	     HECA   Cairo
		    LEMD   Madrid Barajas

Copyright © 1994-2017 MOOsaico, Multilingual Virtual Community
All Rights Reserved. Todos os direitos reservados.
23 years of MOO (1994-2017)