Wikibooks zhwikibooks https://zh.wikibooks.org/wiki/Wikibooks:%E9%A6%96%E9%A1%B5 MediaWiki 1.48.0-wmf.1 first-letter Media Special Talk User User talk Wikibooks Wikibooks talk File File talk MediaWiki MediaWiki talk Template Template talk Help Help talk Category Category talk Transwiki Transwiki talk Wikijunior Wikijunior talk Subject Subject talk TimedText TimedText talk Module Module talk Event Event talk Asterisk权威指南/附录B VoIP协议 0 19700 188293 178379 2026-10-27T12:17:24Z Jcb 14615 188293 wikitext text/x-wiki The telecommunications industry spans over 100 years, and Asterisk integrates most— if not all—of the major technologies that it has made use of over the last century. To make the most out of Asterisk, you need not be a professional in all areas, but under- standing the differences between the various codecs and protocols will give you a greater appreciation and understanding of the system as a whole. This appendix explains Voice over IP and what makes VoIP networks different from the traditional circuit-switched voice networks that were the topic of Appendix A. We will explore the need for VoIP protocols, outlining the history and potential future of each. We’ll also look at security considerations and these protocols’ abilities to work within topologies such as Network Address Translation (NAT). The following VoIP protocols will be discussed (some more briefly than others): • IAX • SIP • H.323 • MGCP • Skinny/SCCP • UNISTIM Codecs are the means by which analog voice can be converted to a digital signal and carried across the Internet. Bandwidth at any location is finite, and the number of simultaneous conversations any connection can carry is directly related to the type of codec implemented. We’ll also explore the differences between the following codecs in regard to bandwidth requirements (compression level) and quality: • G.711 • G.726 • G.729A • GSM • iLBC • Speex • MP3 We will then conclude the appendix with a discussion of how voice traffic can be routed reliably, what causes echo and how to deal with it, and how Asterisk controls the au- thentication of inbound and outbound calls. == The Need for VoIP Protocols == The basic premise of VoIP is the packetization* of audio streams for transport over Internet Protocol-based networks. The challenges to accomplishing this relate to the manner in which humans communicate. Not only must the signal arrive in essentially the same form that it was transmitted in, but it needs to do so in less than 150 milli- seconds. If packets are lost or delayed, there will be degradation to the quality of the communications experience, meaning that two people will have difficulty in carrying on a conversation. The transport protocols that collectively are called “the Internet” were not originally designed with real-time streaming of media in mind. Endpoints were expected to re- solve missing packets by waiting longer for them to arrive, requesting retransmission, or, in some cases, considering the information to be gone for good and simply carrying on without it. In a typical voice conversation, these mechanisms will not serve. Our conversations do not adapt well to the loss of letters or words, nor to any appreciable delay between transmittal and receipt. The traditional PSTN was designed specifically for the purpose of voice transmission, and it is perfectly suited to the task from a technical standpoint. From a flexibility standpoint, however, its flaws are obvious to even people with a very limited under- standing of the technology. VoIP holds the promise of incorporating voice communi- cations into all of the other protocols we carry on our networks, but due to the special demands of a voice conversation, special skills are needed to design, build, and maintain these networks. The problem with packet-based voice transmission stems from the fact that the way in which we speak is totally incompatible with the way in which IP transports data. Speaking and listening consist of the relaying of a stream of audio, whereas the Internet protocols are designed to chop everything up, encapsulate the bits of information into thousands of packages, and then deliver each package in whatever way possible to the far end. Clearly, some way of dealing with this is required. == VoIP Protocols == The mechanism for carrying a VoIP connection generally involves a series of signaling transactions between the endpoints (and gateways in between), culminating in two persistent media streams (one for each direction) that carry the actual conversation. There are several protocols in existence to handle this. In this section, we will discuss some that are important to VoIP in general and to Asterisk specifically. IAX (The “Inter-Asterisk eXchange” Protocol) If you claim to be one of the folks in the know when it comes to Asterisk, your test will come when you have to pronounce the name of this protocol. It would seem that you should say “eye-ay-ex,” but this hardly rolls off the tongue very well.† Fortunately, the proper pronunciation is in fact “eeks.”‡ IAX is an open protocol, meaning that anyone can download and develop for it.§ In Asterisk, IAX is supported by the chan_iax2.so module. History The IAX protocol was developed by Digium for the purpose of communicating with other Asterisk servers (hence the Inter-Asterisk eXchange protocol). It is very important to note that IAX is not at all limited to Asterisk. The standard is open for anyone to use, and it is supported by many other open source telecom projects, as well as by several hardware vendors. IAX is a transport protocol (much like SIP) that uses a single UDP port (4569) for both the channel signaling and media streams. As discussed later in this appendix, this makes it easier to manage when behind NATed firewalls. IAX also has the unique ability to trunk multiple sessions into one dataflow, which can result in a tremendous bandwidth advantage when sending a lot of simultaneous chan- nels to a remote box. Trunking allows multiple media streams to be represented with a single datagram header, which lowers the overhead associated with individual channels. This helps to lower latency and reduce the processing power and bandwidth required, allowing the protocol to scale much more easily with a large number of active channels between endpoints. If you have a large quantity of IP calls to pass between two endpoints, you should take a close look at IAX trunking. Future Since IAX was optimized for voice, it has received some criticism for not better sup- porting video—but in fact, IAX holds the potential to carry pretty much any media stream desired. Because it is an open protocol, future media types are certain to be incorporated as the community desires them. Security considerations IAX includes the ability to authenticate in three ways: plain text, MD5 hashing, and RSA key exchange. This, of course, does nothing to encrypt the media path or headers between endpoints. Many solutions involve using a Virtual Private Network (VPN) appliance or software to encrypt the stream in another layer of technology, which re- quires the endpoints to pre-establish a method of configuring and opening these tun- nels. However, IAX is now also able to encrypt the streams between endpoints with dynamic key exchange at call setup (using the configuration option encryp tion=aes128), allowing the use of automatic key rollover. IAX and NAT The IAX2 protocol was deliberately designed to work from behind devices performing NAT. The use of a single UDP port for both signaling and transmission of media also keeps the number of holes required in your firewall to a minimum. These considerations have helped make IAX one of the easiest protocols (if not the easiest) to implement in secure networks. == SIP == The Session Initiation Protocol (SIP) has taken the telecommunications industry by storm. SIP has pretty much dethroned the once-mighty H.323 as the VoIP protocol of choice—certainly at the endpoints of the network. The premise of SIP is that each end of a connection is a peer; the protocol negotiates capabilities between them. What makes SIP compelling is that it is a relatively simple protocol, with a syntax similar to that of other familiar protocols such as HTTP and SMTP. SIP is supported in Asterisk with the chan_sip.so module.‖ History SIP was originally submitted to the Internet Engineering Task Force (IETF) in February 1996 as “draft-ietf-mmusic-sip-00.” The initial draft looked nothing like the SIP we know today and contained only a single request type: a call setup request. In March 1999, after 11 revisions, SIP {{RFC|2543}} was born. At first, SIP was all but ignored, as H.323 was considered the protocol of choice for VoIP transport negotiation. However, as the buzz grew, SIP began to gain in popularity, and while there may be a lot of different factors that accelerated its growth, we’d like to think that a large part of its success is due to its freely available specification. SIP is an application-layer signaling protocol that uses the well-known port 5060 for communications. SIP can be transported with either the UDP or TCP transport-layer protocols. Asterisk does not currently have a TCP implementation for transporting SIP messages, but it is possible that future versions may support it (and patches to the code base are gladly accepted). SIP is used to “establish, modify, and terminate multimedia sessions such as Internet telephony calls.”# SIP does not transport media (i.e., voice) between endpoints. Instead, the Real-time Transport Protocol (RTP) is used for this purpose. RTP uses high-numbered, unprivi- leged ports in Asterisk (10,000 through 20,000, by default). A common topology to illustrate SIP and RTP, commonly referred to as the “SIP tra- pezoid,” is shown in Figure B-1. When Alice wants to call Bob, Alice’s phone contacts her proxy server, and the proxy tries to find Bob (often connecting through his proxy). Once the phones have started the call, they communicate directly with each other (if possible), so that the data doesn’t have to tie up the resources of the proxy. SIP was not the first, and is not the only, VoIP protocol in use today (others include H.323, MGCP, IAX, and so on), but currently it seems to have the most momentum with hardware vendors. The advantages of the SIP protocol lie in its wide acceptance and architectural flexibility (and, we used to say, simplicity!). Future SIP has earned its place as the protocol that justified VoIP. All new user and enterprise products are expected to support SIP, and any existing products will now be a tough sell unless a migration path to SIP is offered. SIP is widely expected to deliver far more than VoIP capabilities, including the ability to transmit video, music, and any type of real-time multimedia. While its use as a ubiquitous general-purpose media transport mechanism seems doubtful, SIP is unarguably poised to deliver the majority of new voice applications for the next few years. Security considerations SIP uses a challenge/response system to authenticate users. An initial INVITE is sent to the proxy with which the end device wishes to communicate. The proxy then sends back a 407 Proxy Authorization Request message, which contains a random set of characters referred to as a nonce. This nonce is used along with the password to generate an MD5 hash, which is then sent back in the subsequent INVITE. Assuming the MD5 hash matches the one that the proxy generated, the client is then authenticated. Denial of service (DoS) attacks are probably the most common type of attack on VoIP communications. A DoS attack can occur when a large number of invalid INVITE re- quests are sent to a proxy server in an attempt to overwhelm the system. These attacks are relatively simple to implement, and their effects on the users of the system are immediate. SIP has several methods of minimizing the effects of DoS attacks, but ulti- mately they are impossible to prevent. SIP implements a scheme to guarantee that a secure, encrypted transport mechanism (namely Transport Layer Security, or TLS) is used to establish communication between the caller and the domain of the callee. Beyond that, the request is sent securely to the end device, based upon the local security policies of the network. Note that the en- cryption of the media (that is, the RTP stream) is beyond the scope of SIP itself and must be dealt with separately. More information regarding SIP security considerations, including registration hijack- ing, server impersonation, and session teardown, can be found in Section 26 of SIP {{RFC|3261}}. SIP and NAT Probably the biggest technical hurdle SIP has to conquer is the challenge of carrying out transactions across a NAT layer. Because SIP encapsulates addressing information in its data frames, and NAT happens at a lower network layer, the addressing infor- mation is not automatically modified, and thus the media streams will not have the correct addressing information needed to complete the connection when NAT is in place. In addition to this, the firewalls normally integrated with NAT will not consider the incoming media stream to be part of the SIP transaction, and will block the con- nection. Newer firewalls and session border controllers (SBCs) are SIP-aware, but this is still considered a shortcoming in this protocol, and it causes no end of trouble to network professionals needing to connect SIP endpoints using existing network infrastructure. H.323 This International Telecommunication Union (ITU) protocol was originally designed to provide an IP transport mechanism for videoconferencing. It has become the stand- ard in IP-based video-conferencing equipment, and it briefly enjoyed fame as a VoIP protocol as well. While there is much heated debate over whether SIP or H.323 (or IAX) will come to dominate the VoIP protocol world, in Asterisk, H.323 has largely been deprecated in favor of IAX and SIP. H.323 has not enjoyed much success among users and enterprises, although it might still be the most widely used VoIP protocol among carriers. The three versions of H.323 supported in Asterisk are handled by the modules chan_h323.so (supplied with Asterisk), chan_oh323.so (available as a free addon), and chan_ooh323.so (supplied in asterisk-addons). You have probably used H.323 without even knowing it—Microsoft’s NetMeeting client is arguably the most widely deployed H.323 client. History H.323 was developed by the ITU in May 1996 as a means to transmit voice, video, data, and fax communications across an IP-based network while maintaining connectivity with the PSTN. Since that time, H.323 has gone through several versions and annexes (which add functionality to the protocol), allowing it to operate in pure VoIP networks and more widely distributed networks. Future The future of H.323 is a subject of debate. If the media is any measure, it doesn’t look good for H.323; it hardly ever gets mentioned (certainly not with the regularity of SIP). H.323 is often regarded as technically superior to SIP, but, that sort of thing is seldom the deciding factor in whether a technology enjoys success. One of the factors that makes H.323 unpopular is its complexity (although many argue that the once-simple SIP is starting to suffer from the same problem). H.323 still carries by far the majority of worldwide carrier VoIP traffic, but as people become less and less dependent on traditional carriers for their telecom needs, the future of H.323 becomes more difficult to predict with any certainty. While H.323 may not be the protocol of choice for new implementations, we can certainly expect to have to deal with H.323 interoperability issues for some time to come. Security considerations H.323 is a relatively secure protocol and does not require many security considerations beyond those that are common to any network communicating with the Internet. Since H.323 uses the RTP protocol for media communications, it does not natively support encrypted media paths. The use of a VPN or other encrypted tunnel between endpoints is the most common way of securely encapsulating communications. Of course, this has the disadvantage of requiring the establishment of these secure tunnels between endpoints, which may not always be convenient (or even possible). As VoIP becomes used more often to communicate with financial institutions such as banks, we’re likely to require extensions to the most commonly used VoIP protocols to natively support strong encryption methods. H.323 and NAT The H.323 standard uses the Internet Engineering Task Force (IETF) RTP protocol to transport media between endpoints. Because of this, H.323 has the same issues as SIP when dealing with network topologies involving NAT. The easiest method is to simply forward the appropriate ports through your NAT device to the internal client. To receive calls, you will always need to forward TCP port 1720 to the client. In addi- tion, you will need to forward the UDP ports for the RTP media and RTCP control streams (see the manual for your device for the port range it requires). Older clients, such as Microsoft NetMeeting, will also require TCP ports forwarded for H.245 tun- neling (again, see your client’s manual for the port number range). If you have a number of clients behind the NAT device, you will need to use a gate- keeper running in proxy mode. The gatekeeper will require an interface attached to the private IP subnet and the public Internet. Your H.323 client on the private IP subnet will then register to the gatekeeper, which will proxy calls on the clients’ behalf. Note that any external clients that wish to call you will also be required to register with the proxy server. At this time, Asterisk can’t act as an H.323 gatekeeper. You’ll have to use a separate application, such as the open source OpenH323 Gatekeeper (http://www.gnugk.org), for this purpose. MGCP The Media Gateway Control Protocol (MGCP) also comes to us from the IETF. While MGCP deployment is more widespread than one might think, it is quickly losing ground to protocols such as SIP and IAX. Still, Asterisk loves protocols, so naturally it has rudimentary support for it. MGCP is defined in {{RFC|3435}}.* It was designed to make the end devices (such as phones) as simple as possible, and have all the call logic and processing handled by media gateways and call agents. Unlike SIP, MGCP uses a centralized model. MGCP phones cannot directly call other MGCP phones; they must always go through some type of controller. Asterisk supports MGCP through the chan_mgcp.so module, and the endpoints are defined in the configuration file mgcp.conf. Since Asterisk provides only basic call agent services, it cannot emulate an MGCP phone (to register to another MGCP controller as a user agent, for example). If you have some MGCP phones lying around, you will be able to use them with Asterisk. If you are planning to put MGCP phones into production on an Asterisk system, keep in mind that the community has moved on to more popular protocols, and you will therefore need to budget your software support needs accordingly. If pos- sible (for example, with Cisco phones), you should upgrade MGCP phones to SIP. == Proprietary Protocols == Finally, let’s take a look at two proprietary protocols that are supported in Asterisk. Skinny/SCCP The Skinny Client Control Protocol (SCCP) is proprietary to Cisco VoIP equipment. It is the default protocol for endpoints on a Cisco Call Manager PBX.† Skinny is supported in Asterisk, but if you are connecting Cisco phones to Asterisk, it is generally recom- mended that you obtain SIP images for any phones that support this and connect via SIP instead. UNISTIM Asterisk’s Support for Nortel’s proprietary VoIP protocol, UNISTIM, makes it the first PBX in history to natively support proprietary IP terminals from the two biggest players in VoIP: Nortel and Cisco. UNISTIM support is totally experimental and does not yet work well enough to put it into production, but the fact that somebody has taken the trouble to implement it demonstrates the power of the Asterisk platform. == Codecs == Codecs are generally understood to be various mathematical models used to digitally encode (and compress) analog audio information. Many of these models take into ac- count the human brain’s ability to form an impression from incomplete information. We’ve all seen optical illusions; likewise, voice-compression algorithms take advantage of our tendency to interpret what we believe we should hear, rather than what we actually hear.‡ The purpose of the various encoding algorithms is to strike a balance between efficiency and quality.§ Originally, the term codec referred to a COder/DECoder: a device that converts between analog and digital. Now, the term seems to relate more to COmpression/ DECompression. Before we dig into the individual codecs, take a look at Table B-1—it’s a quick reference that you may want to refer back to. Table B-1. Codec quick reference Codec Data bitrate (Kbps) License required? G.711 64 Kbps No G.726 16, 24, 32, or 40 Kbps No G.729A 8 Kbps Yes (no for pass-through) GSM 13 Kbps No iLBC 13.3 Kbps (30-ms frames) or 15.2 Kbps (20-ms frames) No Speex Variable (between 2.15 and 22.4 Kbps) No G.722 64 Kbps No G.711 G.711 is the fundamental codec of the PSTN. In fact, if someone refers to PCM (dis- cussed in Appendix A) with respect to a telephone network, you are allowed to think of G.711. Two companding methods are used: μlaw in North America and alaw in the rest of the world. Either one delivers an 8-bit word transmitted 8,000 times per second. If you do the math, you will see that this requires 64,000 bits to be transmitted per second. Many people will tell you that G.711 is an uncompressed codec. This is not exactly true, as companding is considered a form of compression. What is true is that G.711 is the base codec from which all of the others are derived. G.711 imposes minimal (almost zero) load on the CPU. G.726 This codec has been around for some time (it used to be G.721, which is now obsolete), and it is one of the original compressed codecs. It is also known as Adaptive Differential Pulse-Code Modulation (ADPCM), and it can run at several bitrates. The most com- mon rates are 16 Kbps, 24 Kbps, and 32 Kbps. As of this writing, Asterisk supports only the ADPCM-32 rate, which is far and away the most popular rate for this codec. G.726 offers nearly identical quality to G.711, but it uses only half the bandwidth. This is possible because rather than sending the result of the quantization measurement, it sends only enough information to describe the difference between the current sample and the previous one. G.726 fell from favor in the 1990s due to its inability to carry modem and fax signals, but because of its bandwidth/CPU performance ratio it is now making a comeback. G.726 is especially attractive because it does not require a lot of computational work from the system. G.729A Considering how little bandwidth it uses, G.729A delivers impressive sound quality. It does this through the use of Conjugate-Structure Algebraic-Code-Excited Linear Pre- diction (CS-ACELP).‖ Because of patents, you can’t use G.729A without paying a li- censing fee; however, it is extremely popular and is well supported on many different phones and systems. To achieve its impressive compression ratio, this codec requires an equally impressive amount of effort from the CPU. In an Asterisk system, the use of heavily compressed codecs will quickly bog down the CPU. G.729A uses 8 Kbps of bandwidth. GSM The Global System for Mobile Communications (GSM) codec is the darling of Asterisk. This codec does not come encumbered with a licensing requirement the way that G.729A does, and it offers outstanding performance with respect to the demand it places on the CPU. The sound quality is generally considered to be of a lesser grade than that produced by G.729A, but much of this comes down to personal opinion; be sure to try it out. GSM operates at 13 Kbps. iLBC The Internet Low Bitrate Codec (iLBC) provides an attractive mix of low bandwidth usage and quality, and it is especially well suited to sustaining reasonable quality on lossy network links. Naturally, Asterisk supports it (and support elsewhere is growing), but it is not as popular as the ITU codecs, and thus may not be compatible with common IP telephones and commercial VoIP systems. IETF {{RFC|3951}} and {{RFC|3952}} have been published in sup- port of iLBC, and iLBC is on the IETF standards track. Because iLBC uses complex algorithms to achieve its high levels of compression, it has a fairly high CPU cost in Asterisk. While you are allowed to use iLBC without paying royalty fees, the holder of the iLBC patent, Global IP Sound (GIPS), wants to know whenever you use it in a commercial application. The way you do that is by downloading and printing a copy of the iLBC license, signing it, and returning it to GIPS. If you want to read about iLBC and its license, you can do so at http://www.ilbcfreeware.org. iLBC operates at 13.3 Kbps (30-ms frames) and 15.2 Kbps (20-ms frames). Speex Speex is a variable bitrate (VBR) codec, which means that it is able to dynamically modify its bitrate to respond to changing network conditions. It is offered in both narrowband and wideband versions, depending on whether you want telephone quality or better. Speex is a totally free codec, licensed under the Xiph.org variant of the BSD license. An Internet draft for Speex is available, and more information about Speex can be found at its home page (http://www.speex.org). Speex can operate at anywhere from 2.15 to 22.4 Kbps, due to its variable bitrate. G.722 G.722 is an ITU-T standard codec that was approved in 1988. The G.722 codec pro- duces a much higher-quality voice in the same space as G.711 (64 Kbps) and is starting to become popular among VoIP device manufacturers. The patents for G.722 have expired, so it is freely available. If you have access to devices that support G.722, you’ll be impressed by the quality improvement. MP3 Sure thing, MP3 is a codec. Specifically, it’s the Moving Picture Experts Group Audio Layer 3 Encoding Standard.# With a name like that, it’s no wonder we call it MP3! In Asterisk, the MP3 codec is typically used for music on hold (MoH). MP3 is not a tel- ephony codec, as it is optimized for music, not voice; nevertheless, it’s very popular with VoIP telephony systems as a method of delivering MoH. Be aware that music cannot usually be broadcast without a license. Many people assume that there is no legal problem with connecting a radio station or CD as a music on hold source, but this is very rarely true. Quality of Service Quality of Service, or QoS as it’s more popularly termed, refers to the challenge of delivering a time-sensitive stream of data across a network that was designed to deliver data in an ad hoc, best-effort sort of way. Although there is no hard rule, it is generally accepted that if you can deliver the sound produced by the speaker to the listener’s ear within 150 milliseconds, a normal flow of conversation is possible. When delay exceeds 300 milliseconds, it becomes difficult to avoid interrupting each other. Beyond 500 milliseconds, normal conversation becomes increasingly awkward and frustrating. In addition to getting it there on time, it is also essential to ensure that the transmitted information arrives intact. Too many lost packets will prevent the far end from com- pletely reproducing the sampled audio, and gaps in the data will be heard as static or, in severe cases, entire missed words or sentences. Even packet loss of 5 percent can severely impede a VoIP network. TCP, UDP, and SCTP If you’re going to send data on an IP-based network, it will be transported using one of the three transport protocols discussed here. Transmission Control Protocol The Transmission Control Protocol (TCP) is almost never used for VoIP, for while it does have mechanisms in place to ensure delivery, it is not inherently in any hurry to do so. Unless there is an extremely low-latency interconnection between the two end- points, TCP will tend to cause more problems than it solves. The purpose of TCP is to guarantee the delivery of packets. In order to do this, several mechanisms are implemented, such as packet numbering (for reconstructing blocks of data), delivery acknowledgment, and re-requesting of lost packets. In the world of VoIP, getting the packets to the endpoint quickly is paramount—but 20 years of cellular telephony has trained us to tolerate a few lost packets.* TCP’s high processing overhead, state management, and acknowledgment of arrival work well for transmitting large amounts of data, but they simply aren’t efficient enough for real-time media communications. User Datagram Protocol Unlike TCP, the User Datagram Protocol (UDP) does not offer any sort of delivery guarantee. Packets are placed on the wire as quickly as possible and released into the world to find their way to their final destinations, with no word back as to whether they got there or not. Since UDP itself does not offer any kind of guarantee that the data will arrive,† it achieves its efficiency by spending very little effort on what it is transporting. TCP is a more “socially responsible” protocol because the bandwidth is more evenly distributed to clients connecting to a server. As the per- centage of UDP traffic increases, it is possible that a network could be- come overwhelmed. Stream Control Transmission Protocol Approved by the IETF as a proposed standard in {{RFC|2960}}, SCTP is a relatively new transport protocol. From the ground up, it was designed to address the shortcomings of both TCP and UDP, especially as related to the types of services that used to be delivered over circuit-switched telephony networks. Some of the goals of SCTP were: • Better congestion-avoidance techniques (specifically, avoiding denial of service attacks) • Strict sequencing of data delivery • Lower latency for improved real-time transmissions By addressing the major shortcomings of TCP and UDP, SCTP’s developers hoped to create a robust protocol for the transmission of SS7 and other types of PSTN signaling over an IP-based network. Differentiated Service Differentiated service, or DiffServ, is not so much a QoS mechanism as a method by which traffic can be flagged and given specific treatment. Obviously, DiffServ can help to provide QoS by allowing certain types of packets to take precedence over others. While this will certainly increase the chance of a VoIP packet passing quickly through each link, it does not guarantee anything. Guaranteed Service The ultimate guarantee of QoS is provided by the PSTN. For each conversation, a 64- Kbps channel is completely dedicated to the call; the bandwidth is guaranteed. Simi- larly, protocols that offer guaranteed service can ensure that a required amount of bandwidth is dedicated to the connection being served. As with any packetized net- working technology, these mechanisms generally operate best when traffic is below maximum levels. When a connection approaches its limits, it is next to impossible to eliminate degradation. MPLS Multiprotocol Label Switching (MPLS) is a method for engineering network traffic patterns independent of layer-3 routing tables. The protocol works by assigning short labels (MPLS frames) to network packets, which routers then use to forward the packets to the MPLS egress router, and ultimately to their final destinations. Traditionally, routers make an independent forwarding decision based on an IP table lookup at each hop in the network. In an MPLS network, this lookup is performed only once, when the packet enters the MPLS cloud at the ingress router. The packet is then assigned to a stream, referred to as a Label Switched Path (LSP), and identified by a label. The label is used as a lookup index in the MPLS forwarding table, and the packet traverses the LSP independent of layer-3 routing decisions. This allows the administrators of large networks to fine-tune routing decisions and make the best use of network resources. Additionally, information can be associated with a label to prioritize packet forwarding. RSVP MPLS contains no method to dynamically establish LSPs, but you can use the Reser- vation Protocol (RSVP) with MPLS. RSVP is a signaling protocol used to simplify the establishment of LSPs and to report problems to the MPLS ingress router. The advant- age of using RSVP in conjunction with MPLS is the reduction in administrative over- head. If you don’t use RSVP with MPLS, you’ll have to go to every single router and configure the labels and each path manually. Using RSVP makes the network more dynamic by distributing control of labels to the routers. This enables the network to become more responsive to changing conditions, because it can be set up to change the paths based on certain conditions, such as a certain path going down (perhaps due to a faulty router). The configuration within the router will then be able to use RSVP to distribute new labels to the routers in the MPLS network, with no (or minimal) human intervention. Best Effort The simplest, least expensive approach to QoS is not to provide it at all—the “best effort” method. While this might sound like a bad idea, it can in fact work very well. Any VoIP call that traverses the public Internet is almost certain to be best-effort, as QoS mechanisms are not yet common in this environment. Echo You may not realize it, but echo has been a problem in the PSTN for as long as there have been telephones. You probably haven’t often experienced it, because the telecom industry has spent large sums of money designing expensive echo-cancellation devices. Also, when the endpoints are physically close—e.g., when you phone your neighbor down the street—the delay is so minimal that anything you transmit will be returned back so quickly that it will be indistinguishable from the sidetone‡ normally occurring in your telephone. So, the fact of the matter is that there is echo on your local calls much of the time, but you cannot perceive it with a regular telephone because it happens almost instantaneously. It may help you to understand this if you consider that when you stand in a room and speak, everything you say echos back to you off of the walls and ceiling (and possibly the floor, if it’s not carpeted), but this does not cause any problems because it happens so fast you do not perceive a delay. The reason that VoIP telephone systems such as Asterisk can experience echo is that the addition of a VoIP telephone introduces a slight delay. It takes a few milliseconds for the packets to travel from your phone to the server (and vice versa). Suddenly there is an appreciable delay, which allows you to perceive the echo that was always there, but never really noticeable. Why Echo Occurs Before we discuss measures to deal with echo, let’s first take a look at why echo occurs in the analog world. If you hear echo, it’s not your phone that’s causing the problem; it’s the far end of the circuit. Conversely, echo heard on the far end is being generated at your end. Echo can be caused by the fact that an analog local loop circuit has to transmit and receive on the same pair of wires. If this circuit is not electrically balanced, or if a low-quality telephone is connected to the end of the circuit, signals it receives can be reflected back, becoming part of the return transmission. When this reflected circuit gets back to you, you will hear the words you spoke just moments before. Humans will perceive an echo beyond a certain amount of delay (possibly as low as 20 milliseconds for some people). This echo will become annoying as the delay increases. In a cheap telephone, it is possible for echo to be generated in the body of the handset. This is why some cheap IP phones can cause echo even when the entire end-to-end connection does not contain an analog circuit.§ In the VoIP world, echo is usually introduced either by an analog circuit somewhere in the connection, or by a cheap endpoint reflecting back some of the signal (e.g., feedback through a hands-free or poorly designed handset or headset). The greater the latency on the network, the more annoying this echo can be. Managing Echo on DAHDI Channels You can enable and disable echo cancellation for DAHDI interfaces in the chan_dahdi.conf file. The default configuration enables echo cancellation with echocan cel=yes. echocancelwhenbridged=yes will enable echo cancellation for TDM bridged calls. While bridged calls should not require echo cancellation, this may improve call quality. When echo cancellation is enabled, the echo canceller learns of echo on the line by listening for it throughout the duration of the call. Consequently, echo may be heard at the beginning of a call and lessen after a period of time. To avoid this situation, you can employ a method called echo training, which will mute the line briefly at the be- ginning of a call, and send a tone from which the amount of echo on the line can be determined. This allows Asterisk to deal with the echo more quickly. Echo training can be enabled with echotraining=yes. Hardware Echo Cancellation The most effective way to handle echo cancellation is not in software. If you are plan- ning on deploying a good-quality system, spend the extra money and purchase cards for the system that have onboard hardware echo cancellation. These cards are a bit more expensive, but they quickly pay for themselves in terms of reduced load on the CPU, as well as reduced load on you due to fewer user complaints. == Asterisk and VoIP == It should come as no surprise that Asterisk loves to talk VoIP. But in order to do so, Asterisk needs to know which function it is to perform: that of client, server, or both. One of the most complex and often confusing concepts in Asterisk is the configuration of inbound and outbound authentication. Users and Peers and Friends—Oh My! Connections that authenticate to us, or that we authenticate, are defined in the iax.conf and sip.conf files as users and peers. Connections that do both may be defined as friends. When determining which way the authentication is occurring, it is always important to view the direction of the channels from Asterisk’s viewpoint, as connec- tions are accepted and created by the Asterisk server. Users A connection defined as a user is any system/user/endpoint that we allow to connect to us. Keep in mind that a user definition does not provide a method with which to call that user; the user type is used simply to create a channel for incoming calls.‖ A user definition will require a context name to be defined to indicate where the incoming authenticated call will enter the dialplan (in extensions.conf). Peers A connection defined as a peer type is an outgoing connection. Think of it this way: users place calls to us, while we place calls to our peers. Since peers do not place calls to us, a peer definition does not typically require the configuration of a context name. However, there is one exception: if calls that originate from your system are returned to your system in a loopback, the incoming calls (which originate from a SIP proxy, not a user agent) will be matched on the peer definition. The default context should handle these incoming calls appropriately, although it’s preferable for contexts to be defined for them on a per-peer basis. In order to know where to send a call to a host, we must know its location in relation to the Internet (that is, its IP address). The location of a peer may be defined either statically or dynamically. A dynamic peer is configured with host=dynamic under the peer definition heading. Because the IP address of a dynamic peer may change constantly, it must register with the Asterisk box so calls can successfully be routed to it. If the remote end is another Asterisk box, the use of a register statement is required, as discussed in the next section. Friends Defining a type as a friend is a shortcut for defining it as both a user and a peer. However, connections that are both users and peers aren’t always defined this way, because defining each direction of call creation individually (using both a user and a peer definition) allows more granularity and control over the individual connections. Figure B-2 shows the flow of authentication control in relation to Asterisk. register Statements A register statement is a way of telling a remote peer where your Asterisk box is in relation to the Internet. Asterisk uses register statements to authenticate to remote providers when you are employing a dynamic IP address, or when the provider does not have your IP address on record. There are situations when a register statement is not required, but to demonstrate when a register statement is required, let’s look at an example. Say you have a remote peer that is providing DID services to you. When someone calls the number +1-800-555-1212, the call goes over the physical PSTN network to your service provider and into its Asterisk server, possibly over its T1 connection. This call is then routed to your Asterisk server via the Internet. Your service provider will have a definition in either its sip.conf or iax.conf configuration file (depending on whether you are connecting with the SIP or IAX protocol, respec- tively) for your Asterisk server. If you only receive calls from this provider, you will define it as a user (if it is another Asterisk system, you might be defined in its system as a peer). Now let’s say that your box is on your home Internet connection, with a dynamic IP address. Your service provider has a static IP address (or perhaps a fully qualified do- main name), which you place in your configuration file. Since you have a dynamic address, your service provider specifies host=dynamic in its configuration file. In order to know where to route your +1-800-555-1212 call, your service provider needs to know where you are located in relation to the Internet. This is where the register statement comes into use. The register statement is a way of authenticating and telling your peer where you are. In the [general] section of your configuration file, you place a statement similar to this: register => username:secret@my_remote_peer You can verify a successful registration with the use of the iax2 show registry and sip show registry commands at the Asterisk console. == VoIP Security == We can barely scratch the surface of the complex matter of VoIP security in this ap- pendix; therefore, before we dig in, we want to steer you in the direction of the VoIP Security Alliance (http://www.voipsa.org). This fantastic resource contains an excellent mailing list, white papers, howtos, and a general compendium of all matters relating to VoIP security. Just as email has been abused by the selfish and criminal, so too will voice. The fine folks at VoIPSA are doing what they can to ensure that we address these challenges now, before they become an epidemic. In the realm of books on the subject, we recommend the most excellent Hacking Exposed VoIP by David Endler and Mark Collier (McGraw-Hill Osborne Media). If you are responsible for deploying any VoIP system, you need to be aware of this stuff. Spam over Internet Telephony (SPIT) We don’t want to think about this, but we know it’s coming. The simple fact is that there are people in this world who lack certain social skills, and that coupled with a kind of mindless greed, means that these folks think nothing of flooding the Internet with massive volumes of email. These same types of characters will think little of doing the same with voice. We already know what it’s like to get inundated with telemarketing calls; try to imagine what might happen when those telemarketers realize they can send voice spam at almost no cost. Regulation has not stopped email spam, and it will prob- ably not stop voice spam, so it will be up to us to prevent it. Encrypting Audio with Secure RTP If you can sniff the packets coming out of an Asterisk system, you can extract the audio from the RTP streams. This data can be fed offline to a speech processing system, which can listen for keywords such as “credit card number” or “PIN” and present the data it gathers to someone who has an interest in it. The stream can also be evaluated to see if there are DTMF tones embedded in it, which is dangerous because many services ask for passwords and credit card information to be input via the dialpad. In business, strategic information could also be gleaned from captured audio. Using Secure RTP can combat this problem by encrypting the RTP streams. More in- formation about SRTP is available in “Encrypting SIP calls” on page 150. Spoofing In the traditional telephone network, it is very difficult to successfully adopt someone else’s identity. Your activities can (and will) be traced back to you, and the authorities will quickly put an end to the fun. In the world of IP, it is much easier to remain anonymous. As such, it is no stretch to imagine that there are hordes of enterprising criminals out there who will be only too happy to make calls to your credit card com- pany or bank, pretending to be you. If a trusted mechanism is not discovered to combat spoofing, we will quickly learn that we cannot trust VoIP calls. What Can Be Done? The first thing to keep in mind when considering security on a VoIP system is that VoIP is based on network protocols, and needs be evaluated from that perspective. This is not to say that traditional telecom security should be ignored, but we need to pay attention to the underlying network. Basic network security One of the most effective things that can be done is to secure access to the voice network. The use of firewalls and VLANs are examples of how this can be achieved. By default, the voice network should be accessible only to those things that have a need. For ex- ample, if you do not have any softphones in use, do not allow client PCs access to the voice network. Segregating voice and data traffic. Unless there is a need to have voice and data on the same network, there may be some value in keeping them separate (this can have other benefits as well, such as simplifying QoS configurations). It is not unheard of to build the in- ternal voice network on a totally separate LAN, using existing CAT3 cabling and ter- minating on inexpensive network switches. This configuration can even be less expensive. DMZ. PlacingyourVoIPsysteminademilitarizedzone(DMZ)canprovideanadditional layer of protection for your LAN, while still allowing connectivity for relevant appli- cations. Should your VoIP system be compromised, it will be much more difficult to use it to launch an attack on the rest of your network, since it is not trusted. Regardless of whether you deploy within a DMZ, any abnormal traffic coming out of the system should be considered suspect. Server hardening. Hardening your Asterisk server is critical. Not only are there perform- ance benefits to doing this (running nonessential processes can eat up valuable CPU and RAM resources), but the elimination of anything not required will reduce the chance that an exploited vulnerability in the operating system can be used to gain access and launch an attack on other parts of your network. Running Asterisk as non-root is an essential part of system hardening. See Chapter 3 for more information. Encryption Asterisk 1.8 includes the ability to use both SIP TLS for the encryption of signaling and SRTP for the encryption of the media between endpoints. More information about encrypting SIP calls can be found in “Encrypting SIP calls” on page 150. Asterisk has also supported encryption between endpoints using IAX2 since version 1.4). Informa- tion about enabling encryption across IAX2 trunks can be found in “IAX encryp- tion” on page 154. Physical security Physical security should not be ignored. All terminating equipment (such as switches, routers, and the PBX itself) should be secured in an environment that can only be accessed by authorized persons. At the user end (such as under desks), it can be more difficult to deliver physical security, but if the network responds only to devices that it is familiar with (e.g., restricting DHCP to devices whose MAC addresses are known), the risk of unauthorized intrusions can be mitigated somewhat. == Conclusion == Over the last couple of years the telecom industry has embraced VoIP, which sets Asterisk up to do quite well. While Asterisk has been doing VoIP for years (well over a decade now), the integration of VoIP and traditional telephony into a single, powerful platform has made Asterisk a major player in the telecommunications industry. 8hhagb82qpxxh017lvrr06gqjw0q2bi Wikibooks:互助客棧/topic list 4 32161 188303 188247 2026-10-27T14:01:50Z Cewbot 42738 [[User:Cewbot/log/20170915/configuration|生成議題列表:4個議題]] 188303 wikitext text/x-wiki <!-- 本頁面由機器人自動更新。若要改進,請聯繫機器人操作者。 --> {| class="wikitable sortable mw-collapsible" style="float:left;" |- ! data-sort-type="number" style="font-weight: normal;" | <small>#</small> !! 💭 話題 !! <span title="發言數/發言人次 (實際上為計算簽名數)">💬</span> !! <span title="參與討論人數/發言人數">👥</span> !! 🙋 最新發言 !! data-sort-type="isoDate" | <span title="最後更新">🕒 <small>(UTC+8)</small></span> |- | style="text-align: right;" | 1 | [[:Wikibooks:互助客棧#再谈改名建议|再谈改名建议]] | style="text-align: right;background-color: #ffe;" | 48 | style="text-align: right;" | 22 | style="background-color: #ddd;" | [[User:魔琴|魔琴]] | style="background-color: #ddd;" data-sort-type="isoDate" data-sort-value="2026-10-08T11:46:00.000Z" | 2026-10-08 <span style="color: blue;">19:46</span> |- | style="text-align: right;" | 2 | [[:Wikibooks:互助客棧#批量删除User:蛇守护的苹果堆创建的页面|批量删除User:蛇守护的苹果堆创建的页面]] | style="text-align: right;background-color: #ffe;" | 12 | style="text-align: right;" | 4 | style="background-color: #bbb;" | [[User:Sheminghui.WU|Sheminghui.WU]] | style="background-color: #bbb;" data-sort-type="isoDate" data-sort-value="2026-05-29T00:36:00.000Z" | 2026-05-29 <span style="color: blue;">08:36</span> |- | style="text-align: right;" | 3 | [[:Wikibooks:互助客棧#此页面header有2个搜索存档|此页面header有2个搜索存档]] | style="text-align: right;" | 2 | style="text-align: right;" | 2 | [[User:Addonian1123|Addonian1123]] | data-sort-type="isoDate" data-sort-value="2026-10-24T03:21:00.000Z" | 2026-10-24 <span style="color: blue;">11:21</span> |- | style="text-align: right;" | 4 | [[:Wikibooks:互助客棧#伺服器切換_-_本wiki即將短暫進入唯讀模式|伺服器切換 - 本wiki即將短暫進入唯讀模式]] | style="text-align: right;background-color: #fcc;" | 1 | style="text-align: right;background-color: #fcc;" | 1 | [[User:Trizek (WMF)|Trizek (WMF)]] | data-sort-type="isoDate" data-sort-value="2026-10-26T14:01:00.000Z" | 2026-10-26 <span style="color: blue;">22:01</span> |} {| class="wikitable mw-collapsible mw-collapsed" style="float: left; margin-left: .5em;;{{#if:{{{no_time_legend|}}}|display:none;|}}" ! title="From the latest bot edit" | 發言更新圖例 |- | style="background-color: #efe;" | * 最近一小時內 |- | style="background-color: #eef;" | * 最近一日內 |- | | * 一週內 |- | style="background-color: #ddd;" | * 一個月內 |- | style="background-color: #bbb;" | * 逾一個月 |- ! 特殊狀態 |- | style="text-decoration: line-through" | 已移動至其他頁面<br />或完成討論之議題 |- ! 手動設定 |- | style="max-width: 12em;" | <small>當列表出現異常時,<br />請先檢查[[User:Cewbot/log/20170915/configuration|設定]]是否有誤</small> |- |} {{Clear}} 1067fuevhdmvlyggz0nmwjs705o0jsi JavaScript/Working with files 0 32466 188295 169717 2026-10-27T12:23:19Z Jcb 14615 188295 wikitext text/x-wiki 使用纯 HTML4 和纯 JavaScript,您实际上只能对用户文件做一件事: 服务器发送一个网页,其中包含类似这样的表单:<ref>{{RFC|1867}}, {{RFC|2388}}</ref> <syntaxhighlight lang=JavaScript> <form action="/upload_handler" method="post"> <input type="file" /> </form> </syntaxhighlight> 然后,浏览器允许用户选择一个文件,然后浏览器上传它——客户端上的任何 JavaScript 都无法查看任何数据或取消传输甚至显示进度条。 如果您希望 JavaScript 在传输文件之前了解有关文件的任何信息(例如,立即取消大文件的传输,而不是等待文件传输一个小时,然后告诉用户“文件太大”;或要显示进度条),您必须在纯 HTML4 上使用纯 JavaScript 以外的其他内容。 一些流行的选项是:<ref> [http://stackoverflow.com/questions/4190934/getting-upload-file-size-before-upload Getting upload file size before upload]</ref><ref> [http://stackoverflow.com/questions/543926/is-it-possible-to-use-ajax-to-do-file-upload Is it possible to use Ajax to do file upload?]</ref><ref> [http://www.w3.org/TR/FileAPI/ File API: W3C Last Call Working Draft 12 September 2013]</ref><ref> [http://www.html5rocks.com/en/tutorials/file/dndfiles/ Reading files in JavaScript using the File APIs]</ref> * 使用支持 HTML5 File API 的现代 Web 浏览器。 * 使用 Flash(可能是 Gmail 等用于绘制小进度条的小型 Flash 实用程序) * 使用 Java 小程序 * 使用 ActiveX 控件 * use a modern Web browser that supports the HTML5 File API. * use Flash (perhaps a tiny flash utility like Gmail uses to draw a little progress bar) * use a Java applet * use an ActiveX control ==参考文献== {{reflist}} 49nf7b7aavcq9g3twbwnqis24hv7x4h JavaScript/Best practices 0 32471 188294 169723 2026-10-27T12:22:50Z Jcb 14615 188294 wikitext text/x-wiki == document.write == 这已被弃用。 请改用 <code>innerHTML</code> 或 DOM 操作方法。 在 XHTML 中,<code>document.write</code> 不起作用,但您可以使用 DOM 操作方法实现相同的效果[http://w3.org/MarkUp/2004/xhtml-faq#docwrite]。 ==JavaScript协议== 尽量避免只为执行 JavaScript 代码而存在的链接。 <syntaxhighlight lang=html5> <a href="javascript:resumeFancyVersion()">See my résumé!</a> </syntaxhighlight> 可以考虑替换为: <syntaxhighlight lang=html5> <a href="resumePlainVersion.html" onclick="return !resumeFancyVersion()">See my résumé!</a> </syntaxhighlight> 允许JavaScript脚本运行的用户将被提供嵌入了JavaScript脚本的内容版本(可能使用DHTML),而没有允许JavaScript运行的用户将被重定向到静态的XHTML页面。这比缺少正常的href属性值的<a>元素更易于访问。首先,它使用 [[w:XHTML|属性语言语义]]。其次,它为没有JavaScript的用户提供对内容的访问。第三,它检测函数执行是否成功,并在失败的情况下重定向支持JS的阅读器。 onclick表达式的计算结果为布尔值。如果函数成功执行预期效果并返回true,则onclick将返回失败并且超链接不执行。当函数由于某种原因失败时,false、null 或 undefined 值将评估为 true,并且不会阻止链接被执行。或者,如果您不希望提供静态等效项,则可以将 onclick 属性嵌入到语义要求较低的元素中: <syntaxhighlight lang=html5> <strong onclick="resumeFancyVersion()">See my résumé!</strong> </syntaxhighlight> 因此,用户代理在读取简化的 <a> 元素时不会感到困惑。 == Email验证== 许多人使用 JavaScript 函数来立即捕获表单输入中最常见的错误类型。例如,一些 Web 表单要求人们输入两次相同的内容。其他网络表单要求人们输入电子邮件地址。然后他们会快速检查输入的内容是否至少有点像电子邮件地址: <syntaxhighlight lang=JavaScript> function isValidEmail(string) { // These comments use the following terms from {{RFC|2822}}: // local-part, domain, domain-literal and dot-atom. // Does the address contain a local-part followed an @ followed by a domain? // Note the use of lastIndexOf to find the last @ in the address // since a valid email address may have a quoted @ in the local-part. // Does the domain name have at least two parts, i.e. at least one dot, // after the @? If not, is it a domain-literal? // This will accept some invalid email addresses // BUT it doesn't reject valid ones. var atSym = string.lastIndexOf("@"); if (atSym < 1) { return false; } // no local-part if (atSym == string.length - 1) { return false; } // no domain if (atSym > 64) { return false; } // there may only be 64 octets in the local-part if (string.length - atSym > 255) { return false; } // there may only be 255 octets in the domain // Is the domain plausible? var lastDot = string.lastIndexOf("."); // Check if it is a dot-atom such as example.com if (lastDot > atSym + 1 && lastDot < string.length - 1) { return true; } // Check if could be a domain-literal. if (string.charAt(atSym + 1) == '[' && string.charAt(string.length - 1) == ']') { return true; } return false; } </syntaxhighlight> 不幸的是,其他一些“电子邮件验证”JavaScript函数会拒绝完全有效的电子邮件地址。 例如,某些 [http://www.javascriptsource.com/forms/email-validation---basic.html 错误地拒绝] 包含“+”号的有效地址。 原始电子邮件地址语法 ({{RFC|821}}) 确实允许使用“+”号。 同月(1982 年 8 月)发布的 {{RFC|822}} 也允许使用它们。 当前版本的语法在 {{RFC|2821}}/{{RFC|2822}} 中给出。 {{RFC|3696}} 的第 3 节给出了异常有效电子邮件地址的有用示例。 验证后,许多 JavaScript 程序员对电子邮件地址进行编码使用 <code>encodeURIComponent()</code>解决某些似乎无法正确处理加号的客户端语言。<ref> Jan Wolter. [http://unixpapa.com/js/querystring.html "JavaScript Madness: Query String Parsing"] 2011. </ref><ref> [https://bugs.php.net/bug.php?id=39078 PHP bug #39078: Plus sign in URL arg received as space]. </ref> 用于电子邮件地址的引用规则的复杂性使得完全测试地址的本地部分或域文字是不切实际的。 鉴于不一定存在对应于有效本地部分的真实邮箱,在复杂的验证脚本上花费多少额外的下载时间是值得的? === 按照RFC2822验证通过的例子 === * <code>me@example.com</code> * <code>a.nonymous@example.com</code> * <code>name+tag@example.com</code> * <code>a.name+tag@example.com</code> * <code>me.example@com</code> * <code>"spaces must be quoted"@example.com</code> * <code>!#$%&'*+-/=.?^_`{|}~@[1.0.0.127]</code> * <code>!#$%&'*+-/=.?^_`{|}~@[IPv6:0123:4567:89AB:CDEF:0123:4567:89AB:CDEF]</code> * <code>me(this is a comment)@example.com</code> &#8211; 不鼓励comment,但 {{RFC|2822}} 不禁止comment. === 按照RFC2822验证不通过的例子 === {{wikipedia|email address}} * <code>me@</code> * <code>@example.com</code> * <code>me.@example.com</code> * <code>.me@example.com</code> * <code>me@example..com</code> * <code>me\@example.com</code> * <code>spaces\ must\ be\ within\ quotes\ even\ when\ escaped@example.com</code> * <code>a\@mustbeinquotes@example.com</code> === 测试页 === 评论:此代码被错误地设计为拒绝某些实际有效的电子邮件。如果接受对有效和无效电子邮件的更改,则还应查看以下代码。 以下测试页面可用于测试电子邮件验证功能。将这三个文件保存在同一目录中,然后在 Web 浏览器中打开“validEmail.htm”。 ''validEmail.js'' <syntaxhighlight lang=JavaScript> function isValidEmail(string) { // 这些注释使用 RFC2822 中的以下术语: // 本地部分、域、域文字和点原子(local-part, domain, domain-literal, dot-atom) // 地址是否包含一个本地部分,后跟一个@,后跟一个域? // 注意使用lastIndexOf 查找地址中最后一个@ // 因为一个有效的电子邮件地址可能在本地部分有一个带引号的@。 // 域名是否至少有两部分,即至少有一个点, // 之后 @? 如果不是,它是域文字吗? // 这将接受一些无效的电子邮件地址 // 但它不会拒绝有效的。 var atSym = string.lastIndexOf("@"); if (atSym < 1) { return false; } // no local-part if (atSym == string.length - 1) { return false; } // no domain if (atSym > 64) { return false; } // there may only be 64 octets in the local-part if (string.length - atSym > 255) { return false; } // there may only be 255 octets in the domain // Is the domain plausible? var lastDot = string.lastIndexOf("."); // Check if it is a dot-atom such as example.com if (lastDot > atSym + 1 && lastDot < string.length - 1) { return true; } // Check if could be a domain-literal. if (string.charAt(atSym + 1) == '[' && string.charAt(string.length - 1) == ']') { return true; } return false; } function testIsValidEmail(string) { alert("'" + string + "' is " + (isValidEmail(string) ? "" : "NOT ") + " a valid email address."); } function checkSamples() { var validAddress = [ 'me@example.com', 'a.nonymous@example.com', 'name+tag@example.com', 'name\\@tag@example.com', 'spaces\\ are\\ allowed@example.com', '"spaces may be quoted"@example.com', '!#$%&\'*+-/=.?^_`{|}~@[1.0.0.127]', '!#$%&\'*+-/=.?^_`{|}~@[IPv6:0123:4567:89AB:CDEF:0123:4567:89AB:CDEF]', 'me(this is a comment)@example.com' ]; var invalidAddress = [ 'me@', '@example.com', 'me.@example.com', '.me@example.com', 'me@example..com', 'me.example@com', 'me\\@example.com' ]; var results = new StringBuffer(); var handlesValidAddressesCorrectly = true; results.append('<table border="1">'); results.append('<caption>Does the function accept all the valid sample addresses?</caption>'); results.append('<tr><th>Valid address</th><th>Function returns</th></tr>'); for (var i = 0; i < validAddress.length; i++) { results.append('<tr><td>'); results.append(validAddress[i]); results.append('</td><td>'); if (isValidEmail(validAddress[i])) { results.append('<span class="good">true</span>'); } else { handlesValidAddressesCorrectly = false; results.append('<strong class="fail">false</strong>'); } results.append('</td></tr>'); } results.append('</table>'); var handlesInvalidAddressesCorrectly = true; results.append('<table border="1">'); results.append('<caption>Does the function reject all the invalid sample addresses?</caption>'); results.append('<tr><th>Valid address</th><th>Function returns</th></tr>'); for (var i = 0; i < invalidAddress.length; i++) { results.append('<tr><td>'); results.append(invalidAddress[i]); results.append('</td><td>'); if (!isValidEmail(invalidAddress[i])) { results.append('<span class="good">false</span>'); } else { handlesInvalidAddressesCorrectly = false; results.append('<em class="warning">true</em>'); } results.append('</td></tr>'); } results.append('</table>'); var conclusion; if (handlesValidAddressesCorrectly) { if (handlesInvalidAddressesCorrectly) { conclusion = '<p><strong class="good">The function works correctly with all the sample addresses.</strong></p>'; } else { conclusion = '<p><em class="warning">The function incorrectly accepts some invalid addresses.</em></p>'; } } else { conclusion = '<p><strong class="fail">The function incorrectly rejects some valid addresses.</strong></p>'; } document.getElementById('testResults').innerHTML = conclusion + results.toString(); } function StringBuffer() { this.buffer = ""; } StringBuffer.prototype.append = function(string) { this.buffer += string; return this; }; StringBuffer.prototype.toString = function() { return this.buffer; }; </syntaxhighlight> ''validEmail.css'' <syntaxhighlight lang=css> body { background-color: #fff; color: #000 } table { margin-bottom: 2em } caption { margin-top: 2em } .good { background-color: #0f0; color: #000 } .warning { background-color: #fc9; color: #000 } .fail { background-color: #f00; color: #fff } </syntaxhighlight> ''validEmail.htm'' <syntaxhighlight lang=html5> <!DOCTYPE html> <html lang="en"> <head> <title>Valid email test</title> <link rel="stylesheet" href="validEmail.css"> <script src="validEmail.js"></script> </head> <body onload="checkSamples()"> <h1>Unit test for email address validation functions</h1> <h2>Interactive test</h2> <form action="#"> <fieldset> <legend>Email address</legend> <label for="emailAddress">Email</label> <input type="text" size="40" value="" name="email" id="emailAddress"> <input type="button" name="validate" value="Check address" onclick="testIsValidEmail(this.form.email.value)"> </fieldset> </form> <h2>Selected samples</h2> <p>This section shows the results of testing the function with sample strings. The sample includes both valid strings and invalid strings according to <a href="http://www.faqs.org/rfcs/rfc2822.html">RFC2822</a>. </p> <div id="testResults">You need to enable JavaScript for this unit test to work.</div> </body> </html> </syntaxhighlight> == use strict == 许多 JavaScript 程序员建议通过将确切的语句 <code>"use strict";</code> 放在任何其他语句之前来启用 ECMAScript 5 的严格模式:<ref> Nicholas C. Zakas. [http://www.nczonline.net/blog/2012/03/13/its-time-to-start-using-javascript-strict-mode/ "It’s time to start using JavaScript strict mode"]. 2012. </ref><ref> [http://stackoverflow.com/questions/1335851/what-does-use-strict-do-in-javascript-and-what-is-the-reasoning-behind-it "What does “use strict” do in JavaScript, and what is the reasoning behind it?"] </ref><ref> [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/Strict_mode Mozilla Developer Network: "Strict mode"]. </ref> <syntaxhighlight lang=JavaScript> "use strict"; function … </syntaxhighlight> == 进一步阅读 == * [[Coding Cookbook/Validate Email Address]] * [http://wait-till-i.com/index.php?p=104 "Six JavaScript features we do not need any longer" by Christian Heilmann]. * [http://developer.apple.com/internet/webcontent/validation.html source code for Apple's recommended JavaScript validation functions: checkEmail(), etc. ] * [http://www.xs4all.nl/~sbpoley/webmatters/formval.html JavaScript form validation - doing it right ] * [http://ppewww.physics.gla.ac.uk/~flavell/www/formquestion.html "FORM submission and the ENTER key?" ] discusses forms that submit when you press Enter; forms that don't submit when you press Enter; and how to make a form work the other way. * [http://www.mattkruse.com/javascript/bestpractices/ "JavaScript Best Practices" by Matt Kruse] * [http://fightingforalostcause.net/misc/2006/compare-email-regex.php "Comparing E-mail Address Validating Regular Expressions"] has a list of valid and invalid email addresses and a variety of regular expressions and how well each one works on that list. == 参考文献== {{reflist}} jb874t3bbyybti3ssd6jnlr3tzp7446 国际语基本语法/词性 0 34963 188307 188241 2026-10-27T22:53:15Z Francucelo 68408 内容扩充 188307 wikitext text/x-wiki 这一节主要讲句子中的各种组成部分。了解了每一部分后便可开始造句。 == 目录 == # [[/冠词|冠词]] # [[/名词|名词]] # [[/形容词|形容词]] # [[/动词|动词]] # [[/副词|副词]] # [[/介词|介词]] # [[/代词|代词]] # [[/数词|数词]] [[Category:国际语]] 5w8obsacgppa7hfdjoj0fywse29ug0k 国际语基本语法/词性/动词 0 34997 188296 188250 2026-10-27T12:46:31Z Francucelo 68408 /* 分词和复合时态太复杂了 */ 修饰语句 内容扩充 188296 wikitext text/x-wiki '''动词'''是表达动作、行为或存在状态的词,比如中文里的「吃」、「去」、「是」、「有」都是动词。 == 变位法 == 国际语有三种变位法。如果学习者有学过拉丁语可能会有点被吓到,但在国际语里其实只是很简单的三元音交替,主要是为了表现得自然。 大多数变位都只是保留变位法的元音(a、e或i)然后加上固定的后缀。 == 不定式 == 不定式是动词原本的状态。不定式的结尾一律为「-r」: * Parlar:说 * Vider:看 * Audir:听 不定式的用法如同名词,但依然有着了动词的功能。在词典里,动词都是以不定式的形态展示的。 * Le '''venir''' del estate ** 夏天的到来。 ** Venir:来(不定式) ** Del:De + le:……的 ** Estate:夏天 * '''Parlar''' es pro '''comprender'''. ** 说是为了理解。 ** Pro:为了 ** Comprender:理解 * Io vole '''apprender Interlingua'''. ** 我想学国际语。 ** Io:我(主语) ** Vole:想要(现在式) ** Apprender Interlingua:学国际语(不定式) == 变位 == 动词变位及动词根据情况变换形态。 每个变位的形态都很简单:去掉不定式结尾的「-r」,然后加上对应那个时态的结尾。 === 现在式 === 现在式,顾名思义,表示现在发生的事情。它的变位没有后缀,直接去掉不定式的结尾即可。 * Un catto '''mangia''' pisces. ** 一只猫吃鱼。 * Le catto '''audi''' un can. ** 猫听见一只狗。 * Le catto '''vide''' le can. ** 猫看见那只狗。 === 过去式 === 过去式,顾名思义,表示过去发生了的事情。它通过添加结尾「-va」变位。 * Le can '''mordeva''' le catto. ** 一只狗咬了猫。 * Le catto '''clamava'''. ** 猫喊叫了。 * Le domino '''veniva'''. ** 主人来了。 === 将来式 === 将来式,顾名思义,表示将要发生的事情。它通过添加结尾「-ra」变位。 * Le domino '''battera''' le can. ** 主人将打狗。 * Le can '''partira'''. ** 狗将离开。 * Le catto '''amara''' le domino. ** 猫将爱主人。 === 条件式 === 条件式,顾名思义,表示在某个前提下会产生的事情。它通过添加结尾「-rea」变位。 * Si le can parti, le domino non '''batterea''' le can. Ergo, le can parti. ** 如果狗走了,主人就不会打狗。所以,狗走了。 时常,条件式和将来式的用法很像。条件式主要表达假设,而将来式则更加表达一个真实或确定的结果。 而除了字面意义上的条件,条件式也能表达委婉语气: * Io '''vole''' aqua. ** 我想要一点水(直接)。 * Io '''volerea''' aqua. ** 我会想要一点水(委婉)。 === 命令式 === 命令式,顾名思义,表示命令。它的形态和现在式一致,要区分两者主要看语气和语境。 * Le domino partira. Le catto reguarda le domino. le domino videva le catto, e dice: “Mi parve catto! '''Veni'''!”. ** 主人将离开。猫看着主人。主人看到了猫,并说:「我的小猫!来吧!」。 == 不规则动词 == 国际语只有三个不规则动词:esser(是、存在)、haber(有)、vader(去)。事实上,所谓的不规则其实只是它们的现在式的省略: * esse -&gt; es * habe -&gt; ha * vade -&gt; va 省略形式也不是强制的,学习者完全可以用规则的完整形式。 同时,因为esser是个非常常用的动词,国际语也允许欧洲语使用者用以下的不规则形式: * esseva -&gt; era * essera -&gt; sera * esserea -&gt; serea * es(命令式)-&gt; sia 除此之外,也有velle(voler,「想要」的条件式的不规则变体)等少数变体,通常无需在意。 == 分词 == 分词就是把动词变成形容词,同时依然保留了动词的功能。 分词分两种时态:现在分词和过去分词。为了语音自然,一些变位法的分词变位会略有不规则。以下是分词的变位表: * 现在分词(-nte): ** -a -&gt; -ante ** -e -&gt; -ente ** -i -&gt; -iente * 过去分词(-te): ** -a -&gt; -ate ** -e -&gt; -ite ** -i -&gt; -ite 现在分词,顾名思义,表示现在发生的,常表示主动。过去分词,顾名思义,表示过去发生的,常表示被动。 * Un catto '''magiante pisces''' vide un can. ** 一只吃着鱼的猫看见了一只狗。 * Le catto es '''mordite''' per le can. ** 猫被狗咬了。 ** Per:「被……」、「通过……」 * Le can '''vidite per le catto''' mordeva le catto '''vidente le can'''. ** 被猫看见了的狗咬了看见狗的猫。 分词和形容词一样,可以放在名词前面或后面。不过,如果分词后面还接了宾语(动作的接收者)或更长的信息,如「Per……」(被……),应该放名词后面。 == 复合时态 == 复合时态就是通过组合不同形式的动词而产生的时态。它的存在本质上是为了精准表达。 <span id="va-不定式"></span> === Va + 不定式 === 「Va + 动词不定式」所表达的意思和将来式差不多,不过前者所表达的将来会更近一点,有点像中文的「要……了」。 * Le domino partira. Le domino va partir. ** 主人将离开。主人要离开了。 <span id="haber-过去分词"></span> === Haber + 过去分词 === 「Haber + 过去分词」表达完成时。过去分词表示「这个动词已经发生了」,而Haber则会根据时态表达「这个动词在何时已经发生了」。 * Le catto '''ha mangiate''' le pisces. ** 猫吃了鱼了。 ** ha mangiate:现在完成时 * Le catto '''habeva mangiate''' le pisces. ** 猫当时吃了鱼了。 ** habeva mangiate:过去完成时 * Le catto '''habera mangiate''' le pisces. ** 猫将会吃了鱼。 ** habera mangiate:将来完成时 * Le catto '''haberea mangiate''' le pisces. ** 猫将会吃了鱼(条件句中)。 ** haberea mangiate:条件完成时 同时,Haber也可以变成分词: * Le catto '''habente mangiate''' le pisces. ** 吃了鱼了的猫。 * Le pisces '''habite mangiate''' per le catto. ** 被猫吃了的鱼。 == 问答 == <span id="动词会随人称变位吗"></span> === 动词会随人称变位吗? === 不会。几乎所有动词都只会随时态变位,而不管人称。唯可以一管人称的动词只有「esser」的现在式有「so」(我是)、「somos」(我们是)和「son」(他们是),但这些也很少用,除非使用者有强烈的欧洲语习惯。 <span id="有虚拟式吗"></span> === 有虚拟式吗? === 除了esser以外,所有名词都没有虚拟式。而唯一有虚拟式的esser(虚拟式为sia),也不算常用。这主要还是服务于欧洲语使用者的习惯,学习者完全无需在意。 === 分词和复合时态太复杂了 === 看到上述庞大的分词组合和复合时态,难免会让人怀疑「国际语真的简单吗?」。 其实,实际使用中并不用太在意,这里只是展示这种表达的可能性。对于学习者,了解基本的变位就行了。对于复杂的分词,也能用从句解决(后面的篇章会讲到)。 事实上,学习者完全不用复合时态的组合。「Vader + 不定式」和「Haber + 过去分词」的底层逻辑非常简单:就如上述所说,「Vader + 不定式」的不同变位就是在表达「在何时要……了」,而「Haber + 过去分词」的不同变位则是在表达「这个动词在何时已经发生了」。 <span id="什么是主语和宾语"></span> === 什么是主语和宾语? === 主语就是句子中动作的发起者,而宾语则是动作的接收者。比如「猫吃鱼」中,「猫」就是主语,而「鱼」则是宾语,「吃」则是动词,也称作谓语。 [[Category:国际语]] gbbwzip7ffglngasonbo0nip6ytpy2i 188297 188296 2026-10-27T12:48:09Z Francucelo 68408 /* Haber + 过去分词 */ 188297 wikitext text/x-wiki '''动词'''是表达动作、行为或存在状态的词,比如中文里的「吃」、「去」、「是」、「有」都是动词。 == 变位法 == 国际语有三种变位法。如果学习者有学过拉丁语可能会有点被吓到,但在国际语里其实只是很简单的三元音交替,主要是为了表现得自然。 大多数变位都只是保留变位法的元音(a、e或i)然后加上固定的后缀。 == 不定式 == 不定式是动词原本的状态。不定式的结尾一律为「-r」: * Parlar:说 * Vider:看 * Audir:听 不定式的用法如同名词,但依然有着了动词的功能。在词典里,动词都是以不定式的形态展示的。 * Le '''venir''' del estate ** 夏天的到来。 ** Venir:来(不定式) ** Del:De + le:……的 ** Estate:夏天 * '''Parlar''' es pro '''comprender'''. ** 说是为了理解。 ** Pro:为了 ** Comprender:理解 * Io vole '''apprender Interlingua'''. ** 我想学国际语。 ** Io:我(主语) ** Vole:想要(现在式) ** Apprender Interlingua:学国际语(不定式) == 变位 == 动词变位及动词根据情况变换形态。 每个变位的形态都很简单:去掉不定式结尾的「-r」,然后加上对应那个时态的结尾。 === 现在式 === 现在式,顾名思义,表示现在发生的事情。它的变位没有后缀,直接去掉不定式的结尾即可。 * Un catto '''mangia''' pisces. ** 一只猫吃鱼。 * Le catto '''audi''' un can. ** 猫听见一只狗。 * Le catto '''vide''' le can. ** 猫看见那只狗。 === 过去式 === 过去式,顾名思义,表示过去发生了的事情。它通过添加结尾「-va」变位。 * Le can '''mordeva''' le catto. ** 一只狗咬了猫。 * Le catto '''clamava'''. ** 猫喊叫了。 * Le domino '''veniva'''. ** 主人来了。 === 将来式 === 将来式,顾名思义,表示将要发生的事情。它通过添加结尾「-ra」变位。 * Le domino '''battera''' le can. ** 主人将打狗。 * Le can '''partira'''. ** 狗将离开。 * Le catto '''amara''' le domino. ** 猫将爱主人。 === 条件式 === 条件式,顾名思义,表示在某个前提下会产生的事情。它通过添加结尾「-rea」变位。 * Si le can parti, le domino non '''batterea''' le can. Ergo, le can parti. ** 如果狗走了,主人就不会打狗。所以,狗走了。 时常,条件式和将来式的用法很像。条件式主要表达假设,而将来式则更加表达一个真实或确定的结果。 而除了字面意义上的条件,条件式也能表达委婉语气: * Io '''vole''' aqua. ** 我想要一点水(直接)。 * Io '''volerea''' aqua. ** 我会想要一点水(委婉)。 === 命令式 === 命令式,顾名思义,表示命令。它的形态和现在式一致,要区分两者主要看语气和语境。 * Le domino partira. Le catto reguarda le domino. le domino videva le catto, e dice: “Mi parve catto! '''Veni'''!”. ** 主人将离开。猫看着主人。主人看到了猫,并说:「我的小猫!来吧!」。 == 不规则动词 == 国际语只有三个不规则动词:esser(是、存在)、haber(有)、vader(去)。事实上,所谓的不规则其实只是它们的现在式的省略: * esse -&gt; es * habe -&gt; ha * vade -&gt; va 省略形式也不是强制的,学习者完全可以用规则的完整形式。 同时,因为esser是个非常常用的动词,国际语也允许欧洲语使用者用以下的不规则形式: * esseva -&gt; era * essera -&gt; sera * esserea -&gt; serea * es(命令式)-&gt; sia 除此之外,也有velle(voler,「想要」的条件式的不规则变体)等少数变体,通常无需在意。 == 分词 == 分词就是把动词变成形容词,同时依然保留了动词的功能。 分词分两种时态:现在分词和过去分词。为了语音自然,一些变位法的分词变位会略有不规则。以下是分词的变位表: * 现在分词(-nte): ** -a -&gt; -ante ** -e -&gt; -ente ** -i -&gt; -iente * 过去分词(-te): ** -a -&gt; -ate ** -e -&gt; -ite ** -i -&gt; -ite 现在分词,顾名思义,表示现在发生的,常表示主动。过去分词,顾名思义,表示过去发生的,常表示被动。 * Un catto '''magiante pisces''' vide un can. ** 一只吃着鱼的猫看见了一只狗。 * Le catto es '''mordite''' per le can. ** 猫被狗咬了。 ** Per:「被……」、「通过……」 * Le can '''vidite per le catto''' mordeva le catto '''vidente le can'''. ** 被猫看见了的狗咬了看见狗的猫。 分词和形容词一样,可以放在名词前面或后面。不过,如果分词后面还接了宾语(动作的接收者)或更长的信息,如「Per……」(被……),应该放名词后面。 == 复合时态 == 复合时态就是通过组合不同形式的动词而产生的时态。它的存在本质上是为了精准表达。 <span id="va-不定式"></span> === Va + 不定式 === 「Va + 动词不定式」所表达的意思和将来式差不多,不过前者所表达的将来会更近一点,有点像中文的「要……了」。 * Le domino partira. Le domino va partir. ** 主人将离开。主人要离开了。 <span id="haber-过去分词"></span> === Haber + 过去分词 === 「Haber + 过去分词」表达完成时。过去分词表示「这个动词已经发生了」,而Haber则会根据时态表达「这个动词在何时已经发生了」。 * Le catto '''ha mangiate''' le pisces. ** 猫吃了鱼了。 * Le catto '''habeva mangiate''' le pisces. ** 猫当时吃了鱼了。 * Le catto '''habera mangiate''' le pisces. ** 猫将会吃了鱼。 * Le catto '''haberea mangiate''' le pisces. ** 猫将会吃了鱼(条件句中)。 同时,Haber也可以变成分词: * Le catto '''habente mangiate''' le pisces. ** 吃了鱼了的猫。 * Le pisces '''habite mangiate''' per le catto. ** 被猫吃了的鱼。 == 问答 == <span id="动词会随人称变位吗"></span> === 动词会随人称变位吗? === 不会。几乎所有动词都只会随时态变位,而不管人称。唯可以一管人称的动词只有「esser」的现在式有「so」(我是)、「somos」(我们是)和「son」(他们是),但这些也很少用,除非使用者有强烈的欧洲语习惯。 <span id="有虚拟式吗"></span> === 有虚拟式吗? === 除了esser以外,所有名词都没有虚拟式。而唯一有虚拟式的esser(虚拟式为sia),也不算常用。这主要还是服务于欧洲语使用者的习惯,学习者完全无需在意。 === 分词和复合时态太复杂了 === 看到上述庞大的分词组合和复合时态,难免会让人怀疑「国际语真的简单吗?」。 其实,实际使用中并不用太在意,这里只是展示这种表达的可能性。对于学习者,了解基本的变位就行了。对于复杂的分词,也能用从句解决(后面的篇章会讲到)。 事实上,学习者完全不用复合时态的组合。「Vader + 不定式」和「Haber + 过去分词」的底层逻辑非常简单:就如上述所说,「Vader + 不定式」的不同变位就是在表达「在何时要……了」,而「Haber + 过去分词」的不同变位则是在表达「这个动词在何时已经发生了」。 <span id="什么是主语和宾语"></span> === 什么是主语和宾语? === 主语就是句子中动作的发起者,而宾语则是动作的接收者。比如「猫吃鱼」中,「猫」就是主语,而「鱼」则是宾语,「吃」则是动词,也称作谓语。 [[Category:国际语]] 2o6qast3ex8ul3kp7rpes0u2jgscohp 188298 188297 2026-10-27T12:57:20Z Francucelo 68408 /* Va + 不定式 */ 内容扩充 188298 wikitext text/x-wiki '''动词'''是表达动作、行为或存在状态的词,比如中文里的「吃」、「去」、「是」、「有」都是动词。 == 变位法 == 国际语有三种变位法。如果学习者有学过拉丁语可能会有点被吓到,但在国际语里其实只是很简单的三元音交替,主要是为了表现得自然。 大多数变位都只是保留变位法的元音(a、e或i)然后加上固定的后缀。 == 不定式 == 不定式是动词原本的状态。不定式的结尾一律为「-r」: * Parlar:说 * Vider:看 * Audir:听 不定式的用法如同名词,但依然有着了动词的功能。在词典里,动词都是以不定式的形态展示的。 * Le '''venir''' del estate ** 夏天的到来。 ** Venir:来(不定式) ** Del:De + le:……的 ** Estate:夏天 * '''Parlar''' es pro '''comprender'''. ** 说是为了理解。 ** Pro:为了 ** Comprender:理解 * Io vole '''apprender Interlingua'''. ** 我想学国际语。 ** Io:我(主语) ** Vole:想要(现在式) ** Apprender Interlingua:学国际语(不定式) == 变位 == 动词变位及动词根据情况变换形态。 每个变位的形态都很简单:去掉不定式结尾的「-r」,然后加上对应那个时态的结尾。 === 现在式 === 现在式,顾名思义,表示现在发生的事情。它的变位没有后缀,直接去掉不定式的结尾即可。 * Un catto '''mangia''' pisces. ** 一只猫吃鱼。 * Le catto '''audi''' un can. ** 猫听见一只狗。 * Le catto '''vide''' le can. ** 猫看见那只狗。 === 过去式 === 过去式,顾名思义,表示过去发生了的事情。它通过添加结尾「-va」变位。 * Le can '''mordeva''' le catto. ** 一只狗咬了猫。 * Le catto '''clamava'''. ** 猫喊叫了。 * Le domino '''veniva'''. ** 主人来了。 === 将来式 === 将来式,顾名思义,表示将要发生的事情。它通过添加结尾「-ra」变位。 * Le domino '''battera''' le can. ** 主人将打狗。 * Le can '''partira'''. ** 狗将离开。 * Le catto '''amara''' le domino. ** 猫将爱主人。 === 条件式 === 条件式,顾名思义,表示在某个前提下会产生的事情。它通过添加结尾「-rea」变位。 * Si le can parti, le domino non '''batterea''' le can. Ergo, le can parti. ** 如果狗走了,主人就不会打狗。所以,狗走了。 时常,条件式和将来式的用法很像。条件式主要表达假设,而将来式则更加表达一个真实或确定的结果。 而除了字面意义上的条件,条件式也能表达委婉语气: * Io '''vole''' aqua. ** 我想要一点水(直接)。 * Io '''volerea''' aqua. ** 我会想要一点水(委婉)。 === 命令式 === 命令式,顾名思义,表示命令。它的形态和现在式一致,要区分两者主要看语气和语境。 * Le domino partira. Le catto reguarda le domino. le domino videva le catto, e dice: “Mi parve catto! '''Veni'''!”. ** 主人将离开。猫看着主人。主人看到了猫,并说:「我的小猫!来吧!」。 == 不规则动词 == 国际语只有三个不规则动词:esser(是、存在)、haber(有)、vader(去)。事实上,所谓的不规则其实只是它们的现在式的省略: * esse -&gt; es * habe -&gt; ha * vade -&gt; va 省略形式也不是强制的,学习者完全可以用规则的完整形式。 同时,因为esser是个非常常用的动词,国际语也允许欧洲语使用者用以下的不规则形式: * esseva -&gt; era * essera -&gt; sera * esserea -&gt; serea * es(命令式)-&gt; sia 除此之外,也有velle(voler,「想要」的条件式的不规则变体)等少数变体,通常无需在意。 == 分词 == 分词就是把动词变成形容词,同时依然保留了动词的功能。 分词分两种时态:现在分词和过去分词。为了语音自然,一些变位法的分词变位会略有不规则。以下是分词的变位表: * 现在分词(-nte): ** -a -&gt; -ante ** -e -&gt; -ente ** -i -&gt; -iente * 过去分词(-te): ** -a -&gt; -ate ** -e -&gt; -ite ** -i -&gt; -ite 现在分词,顾名思义,表示现在发生的,常表示主动。过去分词,顾名思义,表示过去发生的,常表示被动。 * Un catto '''magiante pisces''' vide un can. ** 一只吃着鱼的猫看见了一只狗。 * Le catto es '''mordite''' per le can. ** 猫被狗咬了。 ** Per:「被……」、「通过……」 * Le can '''vidite per le catto''' mordeva le catto '''vidente le can'''. ** 被猫看见了的狗咬了看见狗的猫。 分词和形容词一样,可以放在名词前面或后面。不过,如果分词后面还接了宾语(动作的接收者)或更长的信息,如「Per……」(被……),应该放名词后面。 == 复合时态 == 复合时态就是通过组合不同形式的动词而产生的时态。它的存在本质上是为了精准表达。 <span id="va-不定式"></span> === Va + 不定式 === 「Va + 不定式」所表达的意思和将来式差不多,不过前者所表达的将来会更近一点,有点像中文的「要……了」。 * Le domino partira. Le domino '''va partir'''. ** 主人将离开。主人要离开了。 除此之外,「Vader + 不定式」也可以变位成其他时态,表达「在何时要……了」。 * Le domino '''vadeva partir'''. ** 主人当时要离开了。 * Le domino '''vadera partir'''. ** 主人将会要离开了。 * Le domino '''vaderea partir'''. ** 主人将会要离开了(条件句中)。 同样的逻辑也适用于分词,通常主要用现在分词: * Le domino '''vadente partir'''. ** 要离开了的主人。 <span id="haber-过去分词"></span> === Haber + 过去分词 === 「Haber + 过去分词」表达完成时。过去分词表示「这个动词已经发生了」,而Haber则会根据时态表达「这个动词在何时已经发生了」。 * Le catto '''ha mangiate''' le pisces. ** 猫吃了鱼了。 * Le catto '''habeva mangiate''' le pisces. ** 猫当时吃了鱼了。 * Le catto '''habera mangiate''' le pisces. ** 猫将会吃了鱼。 * Le catto '''haberea mangiate''' le pisces. ** 猫将会吃了鱼(条件句中)。 同时,Haber也可以变成分词: * Le catto '''habente mangiate''' le pisces. ** 吃了鱼了的猫。 * Le pisces '''habite mangiate''' per le catto. ** 被猫吃了的鱼。 == 问答 == <span id="动词会随人称变位吗"></span> === 动词会随人称变位吗? === 不会。几乎所有动词都只会随时态变位,而不管人称。唯可以一管人称的动词只有「esser」的现在式有「so」(我是)、「somos」(我们是)和「son」(他们是),但这些也很少用,除非使用者有强烈的欧洲语习惯。 <span id="有虚拟式吗"></span> === 有虚拟式吗? === 除了esser以外,所有名词都没有虚拟式。而唯一有虚拟式的esser(虚拟式为sia),也不算常用。这主要还是服务于欧洲语使用者的习惯,学习者完全无需在意。 === 分词和复合时态太复杂了 === 看到上述庞大的分词组合和复合时态,难免会让人怀疑「国际语真的简单吗?」。 其实,实际使用中并不用太在意,这里只是展示这种表达的可能性。对于学习者,了解基本的变位就行了。对于复杂的分词,也能用从句解决(后面的篇章会讲到)。 事实上,学习者完全不用复合时态的组合。「Vader + 不定式」和「Haber + 过去分词」的底层逻辑非常简单:就如上述所说,「Vader + 不定式」的不同变位就是在表达「在何时要……了」,而「Haber + 过去分词」的不同变位则是在表达「这个动词在何时已经发生了」。 <span id="什么是主语和宾语"></span> === 什么是主语和宾语? === 主语就是句子中动作的发起者,而宾语则是动作的接收者。比如「猫吃鱼」中,「猫」就是主语,而「鱼」则是宾语,「吃」则是动词,也称作谓语。 [[Category:国际语]] 5pitbsw9fx97tzxfyqezwspj8duvzju 188299 188298 2026-10-27T13:04:28Z Francucelo 68408 /* 问答 */ 内容扩充 188299 wikitext text/x-wiki '''动词'''是表达动作、行为或存在状态的词,比如中文里的「吃」、「去」、「是」、「有」都是动词。 == 变位法 == 国际语有三种变位法。如果学习者有学过拉丁语可能会有点被吓到,但在国际语里其实只是很简单的三元音交替,主要是为了表现得自然。 大多数变位都只是保留变位法的元音(a、e或i)然后加上固定的后缀。 == 不定式 == 不定式是动词原本的状态。不定式的结尾一律为「-r」: * Parlar:说 * Vider:看 * Audir:听 不定式的用法如同名词,但依然有着了动词的功能。在词典里,动词都是以不定式的形态展示的。 * Le '''venir''' del estate ** 夏天的到来。 ** Venir:来(不定式) ** Del:De + le:……的 ** Estate:夏天 * '''Parlar''' es pro '''comprender'''. ** 说是为了理解。 ** Pro:为了 ** Comprender:理解 * Io vole '''apprender Interlingua'''. ** 我想学国际语。 ** Io:我(主语) ** Vole:想要(现在式) ** Apprender Interlingua:学国际语(不定式) == 变位 == 动词变位及动词根据情况变换形态。 每个变位的形态都很简单:去掉不定式结尾的「-r」,然后加上对应那个时态的结尾。 === 现在式 === 现在式,顾名思义,表示现在发生的事情。它的变位没有后缀,直接去掉不定式的结尾即可。 * Un catto '''mangia''' pisces. ** 一只猫吃鱼。 * Le catto '''audi''' un can. ** 猫听见一只狗。 * Le catto '''vide''' le can. ** 猫看见那只狗。 === 过去式 === 过去式,顾名思义,表示过去发生了的事情。它通过添加结尾「-va」变位。 * Le can '''mordeva''' le catto. ** 一只狗咬了猫。 * Le catto '''clamava'''. ** 猫喊叫了。 * Le domino '''veniva'''. ** 主人来了。 === 将来式 === 将来式,顾名思义,表示将要发生的事情。它通过添加结尾「-ra」变位。 * Le domino '''battera''' le can. ** 主人将打狗。 * Le can '''partira'''. ** 狗将离开。 * Le catto '''amara''' le domino. ** 猫将爱主人。 === 条件式 === 条件式,顾名思义,表示在某个前提下会产生的事情。它通过添加结尾「-rea」变位。 * Si le can parti, le domino non '''batterea''' le can. Ergo, le can parti. ** 如果狗走了,主人就不会打狗。所以,狗走了。 时常,条件式和将来式的用法很像。条件式主要表达假设,而将来式则更加表达一个真实或确定的结果。 而除了字面意义上的条件,条件式也能表达委婉语气: * Io '''vole''' aqua. ** 我想要一点水(直接)。 * Io '''volerea''' aqua. ** 我会想要一点水(委婉)。 === 命令式 === 命令式,顾名思义,表示命令。它的形态和现在式一致,要区分两者主要看语气和语境。 * Le domino partira. Le catto reguarda le domino. le domino videva le catto, e dice: “Mi parve catto! '''Veni'''!”. ** 主人将离开。猫看着主人。主人看到了猫,并说:「我的小猫!来吧!」。 == 不规则动词 == 国际语只有三个不规则动词:esser(是、存在)、haber(有)、vader(去)。事实上,所谓的不规则其实只是它们的现在式的省略: * esse -&gt; es * habe -&gt; ha * vade -&gt; va 省略形式也不是强制的,学习者完全可以用规则的完整形式。 同时,因为esser是个非常常用的动词,国际语也允许欧洲语使用者用以下的不规则形式: * esseva -&gt; era * essera -&gt; sera * esserea -&gt; serea * es(命令式)-&gt; sia 除此之外,也有velle(voler,「想要」的条件式的不规则变体)等少数变体,通常无需在意。 == 分词 == 分词就是把动词变成形容词,同时依然保留了动词的功能。 分词分两种时态:现在分词和过去分词。为了语音自然,一些变位法的分词变位会略有不规则。以下是分词的变位表: * 现在分词(-nte): ** -a -&gt; -ante ** -e -&gt; -ente ** -i -&gt; -iente * 过去分词(-te): ** -a -&gt; -ate ** -e -&gt; -ite ** -i -&gt; -ite 现在分词,顾名思义,表示现在发生的,常表示主动。过去分词,顾名思义,表示过去发生的,常表示被动。 * Un catto '''magiante pisces''' vide un can. ** 一只吃着鱼的猫看见了一只狗。 * Le catto es '''mordite''' per le can. ** 猫被狗咬了。 ** Per:「被……」、「通过……」 * Le can '''vidite per le catto''' mordeva le catto '''vidente le can'''. ** 被猫看见了的狗咬了看见狗的猫。 分词和形容词一样,可以放在名词前面或后面。不过,如果分词后面还接了宾语(动作的接收者)或更长的信息,如「Per……」(被……),应该放名词后面。 == 复合时态 == 复合时态就是通过组合不同形式的动词而产生的时态。它的存在本质上是为了精准表达。 <span id="va-不定式"></span> === Va + 不定式 === 「Va + 不定式」所表达的意思和将来式差不多,不过前者所表达的将来会更近一点,有点像中文的「要……了」。 * Le domino partira. Le domino '''va partir'''. ** 主人将离开。主人要离开了。 除此之外,「Vader + 不定式」也可以变位成其他时态,表达「在何时要……了」。 * Le domino '''vadeva partir'''. ** 主人当时要离开了。 * Le domino '''vadera partir'''. ** 主人将会要离开了。 * Le domino '''vaderea partir'''. ** 主人将会要离开了(条件句中)。 同样的逻辑也适用于分词,通常主要用现在分词: * Le domino '''vadente partir'''. ** 要离开了的主人。 <span id="haber-过去分词"></span> === Haber + 过去分词 === 「Haber + 过去分词」表达完成时。过去分词表示「这个动词已经发生了」,而Haber则会根据时态表达「这个动词在何时已经发生了」。 * Le catto '''ha mangiate''' le pisces. ** 猫吃了鱼了。 * Le catto '''habeva mangiate''' le pisces. ** 猫当时吃了鱼了。 * Le catto '''habera mangiate''' le pisces. ** 猫将会吃了鱼。 * Le catto '''haberea mangiate''' le pisces. ** 猫将会吃了鱼(条件句中)。 同时,Haber也可以变成分词: * Le catto '''habente mangiate''' le pisces. ** 吃了鱼了的猫。 * Le pisces '''habite mangiate''' per le catto. ** 被猫吃了的鱼。 == 问答 == <span id="分词和复合时态太复杂了"></span> === 分词和复合时态太复杂了 === 看到上述庞大的分词组合和复合时态,难免会让人怀疑「国际语真的简单吗?」。 其实,实际使用中并不用太在意,这里只是展示这种表达的可能性。对于学习者,了解基本的变位就行了。对于复杂的分词,也能用从句解决(后面的篇章会讲到)。 事实上,学习者完全不用复合时态的组合。「Vader + 不定式」和「Haber + 过去分词」的底层逻辑非常简单:就如上述所说,「Vader + 不定式」的不同变位就是在表达「在何时要……了」,而「Haber + 过去分词」的不同变位则是在表达「这个动词在何时已经发生了」。 <span id="不懂怎么区分条件式和将来式"></span> === 不懂怎么区分条件式和将来式 === 在中文里,表达条件下的结果和将来所用的表达几乎一致。对于学习者,除了记住「假设用条件式,现实用将来式」外,全用将来式也问题不大,通常在语境下都能理解。不过需要注意的是,在委婉表达时,不能把条件式替换成将来式。 <span id="动词会随人称变位吗"></span> === 动词会随人称变位吗? === 不会。几乎所有动词都只会随时态变位,而不管人称。唯可以一管人称的动词只有「esser」的现在式有「so」(我是)、「somos」(我们是)和「son」(他们是),但这些也很少用,除非使用者有强烈的欧洲语习惯。 <span id="有虚拟式吗"></span> === 有虚拟式吗? === 除了esser以外,所有名词都没有虚拟式。而唯一有虚拟式的esser(虚拟式为sia),也不算常用。这主要还是服务于欧洲语使用者的习惯,学习者完全无需在意。 <span id="什么是主语和宾语"></span> === 什么是主语和宾语? === 主语就是句子中动作的发起者,而宾语则是动作的接收者。比如「猫吃鱼」中,「猫」就是主语,而「鱼」则是宾语,「吃」则是动词,也称作谓语。 [[Category:国际语]] 41qvxoofsa2oz9nclwh8wafomfpkm47 188300 188299 2026-10-27T13:13:18Z Francucelo 68408 /* 不规则动词 */ 修饰语句 188300 wikitext text/x-wiki '''动词'''是表达动作、行为或存在状态的词,比如中文里的「吃」、「去」、「是」、「有」都是动词。 == 变位法 == 国际语有三种变位法。如果学习者有学过拉丁语可能会有点被吓到,但在国际语里其实只是很简单的三元音交替,主要是为了表现得自然。 大多数变位都只是保留变位法的元音(a、e或i)然后加上固定的后缀。 == 不定式 == 不定式是动词原本的状态。不定式的结尾一律为「-r」: * Parlar:说 * Vider:看 * Audir:听 不定式的用法如同名词,但依然有着了动词的功能。在词典里,动词都是以不定式的形态展示的。 * Le '''venir''' del estate ** 夏天的到来。 ** Venir:来(不定式) ** Del:De + le:……的 ** Estate:夏天 * '''Parlar''' es pro '''comprender'''. ** 说是为了理解。 ** Pro:为了 ** Comprender:理解 * Io vole '''apprender Interlingua'''. ** 我想学国际语。 ** Io:我(主语) ** Vole:想要(现在式) ** Apprender Interlingua:学国际语(不定式) == 变位 == 动词变位及动词根据情况变换形态。 每个变位的形态都很简单:去掉不定式结尾的「-r」,然后加上对应那个时态的结尾。 === 现在式 === 现在式,顾名思义,表示现在发生的事情。它的变位没有后缀,直接去掉不定式的结尾即可。 * Un catto '''mangia''' pisces. ** 一只猫吃鱼。 * Le catto '''audi''' un can. ** 猫听见一只狗。 * Le catto '''vide''' le can. ** 猫看见那只狗。 === 过去式 === 过去式,顾名思义,表示过去发生了的事情。它通过添加结尾「-va」变位。 * Le can '''mordeva''' le catto. ** 一只狗咬了猫。 * Le catto '''clamava'''. ** 猫喊叫了。 * Le domino '''veniva'''. ** 主人来了。 === 将来式 === 将来式,顾名思义,表示将要发生的事情。它通过添加结尾「-ra」变位。 * Le domino '''battera''' le can. ** 主人将打狗。 * Le can '''partira'''. ** 狗将离开。 * Le catto '''amara''' le domino. ** 猫将爱主人。 === 条件式 === 条件式,顾名思义,表示在某个前提下会产生的事情。它通过添加结尾「-rea」变位。 * Si le can parti, le domino non '''batterea''' le can. Ergo, le can parti. ** 如果狗走了,主人就不会打狗。所以,狗走了。 时常,条件式和将来式的用法很像。条件式主要表达假设,而将来式则更加表达一个真实或确定的结果。 而除了字面意义上的条件,条件式也能表达委婉语气: * Io '''vole''' aqua. ** 我想要一点水(直接)。 * Io '''volerea''' aqua. ** 我会想要一点水(委婉)。 === 命令式 === 命令式,顾名思义,表示命令。它的形态和现在式一致,要区分两者主要看语气和语境。 * Le domino partira. Le catto reguarda le domino. le domino videva le catto, e dice: “Mi parve catto! '''Veni'''!”. ** 主人将离开。猫看着主人。主人看到了猫,并说:「我的小猫!来吧!」。 == 不规则动词 == 国际语只有三个不规则动词:esser(是、存在)、haber(有)、vader(去)。事实上,所谓的不规则其实只是它们的现在式的省略: * esse -&gt; es * habe -&gt; ha * vade -&gt; va 省略形式也不是强制的,学习者完全可以用规则的完整形式。 同时,因为esser是个非常常用的动词,国际语也允许欧洲语使用者用以下的不规则形式: * esseva -&gt; era * essera -&gt; sera * esserea -&gt; serea * es(命令式)-&gt; sia 同时,也存在完全不规则的动词,比如「voler」的条件式「velle」(规则形式为「volerea」)。不过这完全不妨碍学习者用规则形式。 == 分词 == 分词就是把动词变成形容词,同时依然保留了动词的功能。 分词分两种时态:现在分词和过去分词。为了语音自然,一些变位法的分词变位会略有不规则。以下是分词的变位表: * 现在分词(-nte): ** -a -&gt; -ante ** -e -&gt; -ente ** -i -&gt; -iente * 过去分词(-te): ** -a -&gt; -ate ** -e -&gt; -ite ** -i -&gt; -ite 现在分词,顾名思义,表示现在发生的,常表示主动。过去分词,顾名思义,表示过去发生的,常表示被动。 * Un catto '''magiante pisces''' vide un can. ** 一只吃着鱼的猫看见了一只狗。 * Le catto es '''mordite''' per le can. ** 猫被狗咬了。 ** Per:「被……」、「通过……」 * Le can '''vidite per le catto''' mordeva le catto '''vidente le can'''. ** 被猫看见了的狗咬了看见狗的猫。 分词和形容词一样,可以放在名词前面或后面。不过,如果分词后面还接了宾语(动作的接收者)或更长的信息,如「Per……」(被……),应该放名词后面。 == 复合时态 == 复合时态就是通过组合不同形式的动词而产生的时态。它的存在本质上是为了精准表达。 <span id="va-不定式"></span> === Va + 不定式 === 「Va + 不定式」所表达的意思和将来式差不多,不过前者所表达的将来会更近一点,有点像中文的「要……了」。 * Le domino partira. Le domino '''va partir'''. ** 主人将离开。主人要离开了。 除此之外,「Vader + 不定式」也可以变位成其他时态,表达「在何时要……了」。 * Le domino '''vadeva partir'''. ** 主人当时要离开了。 * Le domino '''vadera partir'''. ** 主人将会要离开了。 * Le domino '''vaderea partir'''. ** 主人将会要离开了(条件句中)。 同样的逻辑也适用于分词,通常主要用现在分词: * Le domino '''vadente partir'''. ** 要离开了的主人。 <span id="haber-过去分词"></span> === Haber + 过去分词 === 「Haber + 过去分词」表达完成时。过去分词表示「这个动词已经发生了」,而Haber则会根据时态表达「这个动词在何时已经发生了」。 * Le catto '''ha mangiate''' le pisces. ** 猫吃了鱼了。 * Le catto '''habeva mangiate''' le pisces. ** 猫当时吃了鱼了。 * Le catto '''habera mangiate''' le pisces. ** 猫将会吃了鱼。 * Le catto '''haberea mangiate''' le pisces. ** 猫将会吃了鱼(条件句中)。 同时,Haber也可以变成分词: * Le catto '''habente mangiate''' le pisces. ** 吃了鱼了的猫。 * Le pisces '''habite mangiate''' per le catto. ** 被猫吃了的鱼。 == 问答 == <span id="分词和复合时态太复杂了"></span> === 分词和复合时态太复杂了 === 看到上述庞大的分词组合和复合时态,难免会让人怀疑「国际语真的简单吗?」。 其实,实际使用中并不用太在意,这里只是展示这种表达的可能性。对于学习者,了解基本的变位就行了。对于复杂的分词,也能用从句解决(后面的篇章会讲到)。 事实上,学习者完全不用复合时态的组合。「Vader + 不定式」和「Haber + 过去分词」的底层逻辑非常简单:就如上述所说,「Vader + 不定式」的不同变位就是在表达「在何时要……了」,而「Haber + 过去分词」的不同变位则是在表达「这个动词在何时已经发生了」。 <span id="不懂怎么区分条件式和将来式"></span> === 不懂怎么区分条件式和将来式 === 在中文里,表达条件下的结果和将来所用的表达几乎一致。对于学习者,除了记住「假设用条件式,现实用将来式」外,全用将来式也问题不大,通常在语境下都能理解。不过需要注意的是,在委婉表达时,不能把条件式替换成将来式。 <span id="动词会随人称变位吗"></span> === 动词会随人称变位吗? === 不会。几乎所有动词都只会随时态变位,而不管人称。唯可以一管人称的动词只有「esser」的现在式有「so」(我是)、「somos」(我们是)和「son」(他们是),但这些也很少用,除非使用者有强烈的欧洲语习惯。 <span id="有虚拟式吗"></span> === 有虚拟式吗? === 除了esser以外,所有名词都没有虚拟式。而唯一有虚拟式的esser(虚拟式为sia),也不算常用。这主要还是服务于欧洲语使用者的习惯,学习者完全无需在意。 <span id="什么是主语和宾语"></span> === 什么是主语和宾语? === 主语就是句子中动作的发起者,而宾语则是动作的接收者。比如「猫吃鱼」中,「猫」就是主语,而「鱼」则是宾语,「吃」则是动词,也称作谓语。 [[Category:国际语]] 08fi5tlawkgff30rgju830mmznvoc58 188301 188300 2026-10-27T13:15:11Z Francucelo 68408 /* Va + 不定式 */ 内容扩充 188301 wikitext text/x-wiki '''动词'''是表达动作、行为或存在状态的词,比如中文里的「吃」、「去」、「是」、「有」都是动词。 == 变位法 == 国际语有三种变位法。如果学习者有学过拉丁语可能会有点被吓到,但在国际语里其实只是很简单的三元音交替,主要是为了表现得自然。 大多数变位都只是保留变位法的元音(a、e或i)然后加上固定的后缀。 == 不定式 == 不定式是动词原本的状态。不定式的结尾一律为「-r」: * Parlar:说 * Vider:看 * Audir:听 不定式的用法如同名词,但依然有着了动词的功能。在词典里,动词都是以不定式的形态展示的。 * Le '''venir''' del estate ** 夏天的到来。 ** Venir:来(不定式) ** Del:De + le:……的 ** Estate:夏天 * '''Parlar''' es pro '''comprender'''. ** 说是为了理解。 ** Pro:为了 ** Comprender:理解 * Io vole '''apprender Interlingua'''. ** 我想学国际语。 ** Io:我(主语) ** Vole:想要(现在式) ** Apprender Interlingua:学国际语(不定式) == 变位 == 动词变位及动词根据情况变换形态。 每个变位的形态都很简单:去掉不定式结尾的「-r」,然后加上对应那个时态的结尾。 === 现在式 === 现在式,顾名思义,表示现在发生的事情。它的变位没有后缀,直接去掉不定式的结尾即可。 * Un catto '''mangia''' pisces. ** 一只猫吃鱼。 * Le catto '''audi''' un can. ** 猫听见一只狗。 * Le catto '''vide''' le can. ** 猫看见那只狗。 === 过去式 === 过去式,顾名思义,表示过去发生了的事情。它通过添加结尾「-va」变位。 * Le can '''mordeva''' le catto. ** 一只狗咬了猫。 * Le catto '''clamava'''. ** 猫喊叫了。 * Le domino '''veniva'''. ** 主人来了。 === 将来式 === 将来式,顾名思义,表示将要发生的事情。它通过添加结尾「-ra」变位。 * Le domino '''battera''' le can. ** 主人将打狗。 * Le can '''partira'''. ** 狗将离开。 * Le catto '''amara''' le domino. ** 猫将爱主人。 === 条件式 === 条件式,顾名思义,表示在某个前提下会产生的事情。它通过添加结尾「-rea」变位。 * Si le can parti, le domino non '''batterea''' le can. Ergo, le can parti. ** 如果狗走了,主人就不会打狗。所以,狗走了。 时常,条件式和将来式的用法很像。条件式主要表达假设,而将来式则更加表达一个真实或确定的结果。 而除了字面意义上的条件,条件式也能表达委婉语气: * Io '''vole''' aqua. ** 我想要一点水(直接)。 * Io '''volerea''' aqua. ** 我会想要一点水(委婉)。 === 命令式 === 命令式,顾名思义,表示命令。它的形态和现在式一致,要区分两者主要看语气和语境。 * Le domino partira. Le catto reguarda le domino. le domino videva le catto, e dice: “Mi parve catto! '''Veni'''!”. ** 主人将离开。猫看着主人。主人看到了猫,并说:「我的小猫!来吧!」。 == 不规则动词 == 国际语只有三个不规则动词:esser(是、存在)、haber(有)、vader(去)。事实上,所谓的不规则其实只是它们的现在式的省略: * esse -&gt; es * habe -&gt; ha * vade -&gt; va 省略形式也不是强制的,学习者完全可以用规则的完整形式。 同时,因为esser是个非常常用的动词,国际语也允许欧洲语使用者用以下的不规则形式: * esseva -&gt; era * essera -&gt; sera * esserea -&gt; serea * es(命令式)-&gt; sia 同时,也存在完全不规则的动词,比如「voler」的条件式「velle」(规则形式为「volerea」)。不过这完全不妨碍学习者用规则形式。 == 分词 == 分词就是把动词变成形容词,同时依然保留了动词的功能。 分词分两种时态:现在分词和过去分词。为了语音自然,一些变位法的分词变位会略有不规则。以下是分词的变位表: * 现在分词(-nte): ** -a -&gt; -ante ** -e -&gt; -ente ** -i -&gt; -iente * 过去分词(-te): ** -a -&gt; -ate ** -e -&gt; -ite ** -i -&gt; -ite 现在分词,顾名思义,表示现在发生的,常表示主动。过去分词,顾名思义,表示过去发生的,常表示被动。 * Un catto '''magiante pisces''' vide un can. ** 一只吃着鱼的猫看见了一只狗。 * Le catto es '''mordite''' per le can. ** 猫被狗咬了。 ** Per:「被……」、「通过……」 * Le can '''vidite per le catto''' mordeva le catto '''vidente le can'''. ** 被猫看见了的狗咬了看见狗的猫。 分词和形容词一样,可以放在名词前面或后面。不过,如果分词后面还接了宾语(动作的接收者)或更长的信息,如「Per……」(被……),应该放名词后面。 == 复合时态 == 复合时态就是通过组合不同形式的动词而产生的时态。它的存在本质上是为了精准表达。 <span id="va-不定式"></span> === Va + 不定式 === 「Va + 不定式」所表达的意思和将来式差不多,不过前者所表达的将来会更近一点,有点像中文的「要……了」。 * Le domino partira. Le domino '''va partir'''. ** 主人将离开。主人要离开了。 除此之外,「Vader + 不定式」也可以变位成其他时态,表达「在何时要……了」。 * Le domino '''vadeva partir'''. ** 主人当时要离开了。 * Le domino '''vadera partir'''. ** 主人将会要离开了。 * Le domino '''vaderea partir'''. ** 主人将会要离开了(条件句中)。 ** 在条件句中,「vaderea」也能用不规则的「velle」(也是「volerea」的不规则形式)表示。 同样的逻辑也适用于分词,通常主要用现在分词: * Le domino '''vadente partir'''. ** 要离开了的主人。 <span id="haber-过去分词"></span> === Haber + 过去分词 === 「Haber + 过去分词」表达完成时。过去分词表示「这个动词已经发生了」,而Haber则会根据时态表达「这个动词在何时已经发生了」。 * Le catto '''ha mangiate''' le pisces. ** 猫吃了鱼了。 * Le catto '''habeva mangiate''' le pisces. ** 猫当时吃了鱼了。 * Le catto '''habera mangiate''' le pisces. ** 猫将会吃了鱼。 * Le catto '''haberea mangiate''' le pisces. ** 猫将会吃了鱼(条件句中)。 同时,Haber也可以变成分词: * Le catto '''habente mangiate''' le pisces. ** 吃了鱼了的猫。 * Le pisces '''habite mangiate''' per le catto. ** 被猫吃了的鱼。 == 问答 == <span id="分词和复合时态太复杂了"></span> === 分词和复合时态太复杂了 === 看到上述庞大的分词组合和复合时态,难免会让人怀疑「国际语真的简单吗?」。 其实,实际使用中并不用太在意,这里只是展示这种表达的可能性。对于学习者,了解基本的变位就行了。对于复杂的分词,也能用从句解决(后面的篇章会讲到)。 事实上,学习者完全不用复合时态的组合。「Vader + 不定式」和「Haber + 过去分词」的底层逻辑非常简单:就如上述所说,「Vader + 不定式」的不同变位就是在表达「在何时要……了」,而「Haber + 过去分词」的不同变位则是在表达「这个动词在何时已经发生了」。 <span id="不懂怎么区分条件式和将来式"></span> === 不懂怎么区分条件式和将来式 === 在中文里,表达条件下的结果和将来所用的表达几乎一致。对于学习者,除了记住「假设用条件式,现实用将来式」外,全用将来式也问题不大,通常在语境下都能理解。不过需要注意的是,在委婉表达时,不能把条件式替换成将来式。 <span id="动词会随人称变位吗"></span> === 动词会随人称变位吗? === 不会。几乎所有动词都只会随时态变位,而不管人称。唯可以一管人称的动词只有「esser」的现在式有「so」(我是)、「somos」(我们是)和「son」(他们是),但这些也很少用,除非使用者有强烈的欧洲语习惯。 <span id="有虚拟式吗"></span> === 有虚拟式吗? === 除了esser以外,所有名词都没有虚拟式。而唯一有虚拟式的esser(虚拟式为sia),也不算常用。这主要还是服务于欧洲语使用者的习惯,学习者完全无需在意。 <span id="什么是主语和宾语"></span> === 什么是主语和宾语? === 主语就是句子中动作的发起者,而宾语则是动作的接收者。比如「猫吃鱼」中,「猫」就是主语,而「鱼」则是宾语,「吃」则是动词,也称作谓语。 [[Category:国际语]] lzz8bx3byys4u1i11h3xoqrp98053em 188304 188301 2026-10-27T20:38:20Z Francucelo 68408 /* 复合时态 */ 内容扩充 188304 wikitext text/x-wiki '''动词'''是表达动作、行为或存在状态的词,比如中文里的「吃」、「去」、「是」、「有」都是动词。 == 变位法 == 国际语有三种变位法。如果学习者有学过拉丁语可能会有点被吓到,但在国际语里其实只是很简单的三元音交替,主要是为了表现得自然。 大多数变位都只是保留变位法的元音(a、e或i)然后加上固定的后缀。 == 不定式 == 不定式是动词原本的状态。不定式的结尾一律为「-r」: * Parlar:说 * Vider:看 * Audir:听 不定式的用法如同名词,但依然有着了动词的功能。在词典里,动词都是以不定式的形态展示的。 * Le '''venir''' del estate ** 夏天的到来。 ** Venir:来(不定式) ** Del:De + le:……的 ** Estate:夏天 * '''Parlar''' es pro '''comprender'''. ** 说是为了理解。 ** Pro:为了 ** Comprender:理解 * Io vole '''apprender Interlingua'''. ** 我想学国际语。 ** Io:我(主语) ** Vole:想要(现在式) ** Apprender Interlingua:学国际语(不定式) == 变位 == 动词变位及动词根据情况变换形态。 每个变位的形态都很简单:去掉不定式结尾的「-r」,然后加上对应那个时态的结尾。 === 现在式 === 现在式,顾名思义,表示现在发生的事情。它的变位没有后缀,直接去掉不定式的结尾即可。 * Un catto '''mangia''' pisces. ** 一只猫吃鱼。 * Le catto '''audi''' un can. ** 猫听见一只狗。 * Le catto '''vide''' le can. ** 猫看见那只狗。 === 过去式 === 过去式,顾名思义,表示过去发生了的事情。它通过添加结尾「-va」变位。 * Le can '''mordeva''' le catto. ** 一只狗咬了猫。 * Le catto '''clamava'''. ** 猫喊叫了。 * Le domino '''veniva'''. ** 主人来了。 === 将来式 === 将来式,顾名思义,表示将要发生的事情。它通过添加结尾「-ra」变位。 * Le domino '''battera''' le can. ** 主人将打狗。 * Le can '''partira'''. ** 狗将离开。 * Le catto '''amara''' le domino. ** 猫将爱主人。 === 条件式 === 条件式,顾名思义,表示在某个前提下会产生的事情。它通过添加结尾「-rea」变位。 * Si le can parti, le domino non '''batterea''' le can. Ergo, le can parti. ** 如果狗走了,主人就不会打狗。所以,狗走了。 时常,条件式和将来式的用法很像。条件式主要表达假设,而将来式则更加表达一个真实或确定的结果。 而除了字面意义上的条件,条件式也能表达委婉语气: * Io '''vole''' aqua. ** 我想要一点水(直接)。 * Io '''volerea''' aqua. ** 我会想要一点水(委婉)。 === 命令式 === 命令式,顾名思义,表示命令。它的形态和现在式一致,要区分两者主要看语气和语境。 * Le domino partira. Le catto reguarda le domino. le domino videva le catto, e dice: “Mi parve catto! '''Veni'''!”. ** 主人将离开。猫看着主人。主人看到了猫,并说:「我的小猫!来吧!」。 == 不规则动词 == 国际语只有三个不规则动词:esser(是、存在)、haber(有)、vader(去)。事实上,所谓的不规则其实只是它们的现在式的省略: * esse -&gt; es * habe -&gt; ha * vade -&gt; va 省略形式也不是强制的,学习者完全可以用规则的完整形式。 同时,因为esser是个非常常用的动词,国际语也允许欧洲语使用者用以下的不规则形式: * esseva -&gt; era * essera -&gt; sera * esserea -&gt; serea * es(命令式)-&gt; sia 同时,也存在完全不规则的动词,比如「voler」的条件式「velle」(规则形式为「volerea」)。不过这完全不妨碍学习者用规则形式。 == 分词 == 分词就是把动词变成形容词,同时依然保留了动词的功能。 分词分两种时态:现在分词和过去分词。为了语音自然,一些变位法的分词变位会略有不规则。以下是分词的变位表: * 现在分词(-nte): ** -a -&gt; -ante ** -e -&gt; -ente ** -i -&gt; -iente * 过去分词(-te): ** -a -&gt; -ate ** -e -&gt; -ite ** -i -&gt; -ite 现在分词,顾名思义,表示现在发生的,常表示主动。过去分词,顾名思义,表示过去发生的,常表示被动。 * Un catto '''magiante pisces''' vide un can. ** 一只吃着鱼的猫看见了一只狗。 * Le catto es '''mordite''' per le can. ** 猫被狗咬了。 ** Per:「被……」、「通过……」 * Le can '''vidite per le catto''' mordeva le catto '''vidente le can'''. ** 被猫看见了的狗咬了看见狗的猫。 分词和形容词一样,可以放在名词前面或后面。不过,如果分词后面还接了宾语(动作的接收者)或更长的信息,如「Per……」(被……),应该放名词后面。 == 复合时态 == 复合时态就是通过组合不同形式的动词而产生的时态。它的存在本质上是为了精准表达。 <span id="va-不定式"></span> === Va + 不定式 === 「Va + 不定式」所表达的意思和将来式差不多,不过前者所表达的将来会更近一点,有点像中文的「要……了」。 * Le domino partira. Le domino '''va partir'''. ** 主人将离开。主人要离开了。 除此之外,「Vader + 不定式」也可以变位成其他时态,表达「在何时要……了」。 * Le domino '''vadeva partir'''. ** 主人当时要离开了。 * Le domino '''vadera partir'''. ** 主人将会要离开了。 * Le domino '''vaderea partir'''. ** 主人将会要离开了(条件句中)。 ** 在条件句中,「vaderea」也能用不规则的「velle」(也是「volerea」的不规则形式)表示。 同样的逻辑也适用于分词,通常主要用现在分词: * Le domino '''vadente partir'''. ** 要离开了的主人。 <span id="haber-过去分词"></span> === Haber + 过去分词 === 「Haber + 过去分词」表达完成时。过去分词表示「这个动词已经发生了」,而Haber则会根据时态表达「这个动词在何时已经发生了」。 * Le catto '''ha mangiate''' le pisces. ** 猫吃了鱼了。 * Le catto '''habeva mangiate''' le pisces. ** 猫当时吃了鱼了。 * Le catto '''habera mangiate''' le pisces. ** 猫将会吃了鱼。 * Le catto '''haberea mangiate''' le pisces. ** 猫将会吃了鱼(条件句中)。 同时,Haber也可以变成分词: * Le catto '''habente mangiate''' le pisces. ** 吃了鱼了的猫。 * Le pisces '''habite mangiate''' per le catto. ** 被猫吃了的鱼。 <span id="esser-分词"></span> === Esser + 分词 === 「Esser + 分词」的逻辑很简单。它和上述的分词逻辑一样,只是用了「esser」(是)连接。同时,「esser」也能变位成不同时态来精细表达。 ==== 现在分词 ==== 现在分词表达的就是「在……」或「……着」,而「esser」则表示这在何时发生。通常这表示'''主动'''的动作。 * Le can '''es mordente''' le catto. ** 狗在咬猫。 * Le can '''esseva mordente''' le catto. ** 狗当时在咬猫。 * Le can '''essera mordente''' le catto. ** 狗将会咬着猫。 * Le can '''esserea mordente''' le catto. ** 狗将会咬着猫(条件句中)。 同样的逻辑也能用在分词上: * Le can '''essente mordente''' le catto. ** 在咬着猫的狗。 ==== 过去分词 ==== 过去分词表达的就是「被……了的」,而「esser」则表示这在何时发生。通常这表示'''被动'''的动作。 * Le can '''es mordite''' le catto. ** 狗在咬猫。 * Le can '''esseva mordite''' le catto. ** 狗当时在咬猫。 * Le can '''essera mordite''' le catto. ** 狗将会咬着猫。 * Le can '''esserea mordite''' le catto. ** 狗将会咬着猫(条件句中)。 同样的逻辑也能用在分词上: * Le can '''essente mordite''' le catto. ** 在咬着猫的狗。 == 问答 == <span id="分词和复合时态太复杂了"></span> === 分词和复合时态太复杂了 === 看到上述庞大的分词组合和复合时态,难免会让人怀疑「国际语真的简单吗?」。 其实,实际使用中并不用太在意,这里只是展示这种表达的可能性。对于学习者,了解基本的变位就行了。对于复杂的分词,也能用从句解决(后面的篇章会讲到)。 事实上,学习者完全不用复合时态的组合。「Vader + 不定式」和「Haber + 过去分词」的底层逻辑非常简单:就如上述所说,「Vader + 不定式」的不同变位就是在表达「在何时要……了」,而「Haber + 过去分词」的不同变位则是在表达「这个动词在何时已经发生了」。 <span id="不懂怎么区分条件式和将来式"></span> === 不懂怎么区分条件式和将来式 === 在中文里,表达条件下的结果和将来所用的表达几乎一致。对于学习者,除了记住「假设用条件式,现实用将来式」外,全用将来式也问题不大,通常在语境下都能理解。不过需要注意的是,在委婉表达时,不能把条件式替换成将来式。 <span id="动词会随人称变位吗"></span> === 动词会随人称变位吗? === 不会。几乎所有动词都只会随时态变位,而不管人称。唯可以一管人称的动词只有「esser」的现在式有「so」(我是)、「somos」(我们是)和「son」(他们是),但这些也很少用,除非使用者有强烈的欧洲语习惯。 <span id="有虚拟式吗"></span> === 有虚拟式吗? === 除了esser以外,所有名词都没有虚拟式。而唯一有虚拟式的esser(虚拟式为sia),也不算常用。这主要还是服务于欧洲语使用者的习惯,学习者完全无需在意。 <span id="什么是主语和宾语"></span> === 什么是主语和宾语? === 主语就是句子中动作的发起者,而宾语则是动作的接收者。比如「猫吃鱼」中,「猫」就是主语,而「鱼」则是宾语,「吃」则是动词,也称作谓语。 [[Category:国际语]] k0wqp94f94xbvp84nrg4admprqn9o7k 188305 188304 2026-10-27T20:39:32Z Francucelo 68408 /* 分词和复合时态太复杂了 */ 内容扩充 188305 wikitext text/x-wiki '''动词'''是表达动作、行为或存在状态的词,比如中文里的「吃」、「去」、「是」、「有」都是动词。 == 变位法 == 国际语有三种变位法。如果学习者有学过拉丁语可能会有点被吓到,但在国际语里其实只是很简单的三元音交替,主要是为了表现得自然。 大多数变位都只是保留变位法的元音(a、e或i)然后加上固定的后缀。 == 不定式 == 不定式是动词原本的状态。不定式的结尾一律为「-r」: * Parlar:说 * Vider:看 * Audir:听 不定式的用法如同名词,但依然有着了动词的功能。在词典里,动词都是以不定式的形态展示的。 * Le '''venir''' del estate ** 夏天的到来。 ** Venir:来(不定式) ** Del:De + le:……的 ** Estate:夏天 * '''Parlar''' es pro '''comprender'''. ** 说是为了理解。 ** Pro:为了 ** Comprender:理解 * Io vole '''apprender Interlingua'''. ** 我想学国际语。 ** Io:我(主语) ** Vole:想要(现在式) ** Apprender Interlingua:学国际语(不定式) == 变位 == 动词变位及动词根据情况变换形态。 每个变位的形态都很简单:去掉不定式结尾的「-r」,然后加上对应那个时态的结尾。 === 现在式 === 现在式,顾名思义,表示现在发生的事情。它的变位没有后缀,直接去掉不定式的结尾即可。 * Un catto '''mangia''' pisces. ** 一只猫吃鱼。 * Le catto '''audi''' un can. ** 猫听见一只狗。 * Le catto '''vide''' le can. ** 猫看见那只狗。 === 过去式 === 过去式,顾名思义,表示过去发生了的事情。它通过添加结尾「-va」变位。 * Le can '''mordeva''' le catto. ** 一只狗咬了猫。 * Le catto '''clamava'''. ** 猫喊叫了。 * Le domino '''veniva'''. ** 主人来了。 === 将来式 === 将来式,顾名思义,表示将要发生的事情。它通过添加结尾「-ra」变位。 * Le domino '''battera''' le can. ** 主人将打狗。 * Le can '''partira'''. ** 狗将离开。 * Le catto '''amara''' le domino. ** 猫将爱主人。 === 条件式 === 条件式,顾名思义,表示在某个前提下会产生的事情。它通过添加结尾「-rea」变位。 * Si le can parti, le domino non '''batterea''' le can. Ergo, le can parti. ** 如果狗走了,主人就不会打狗。所以,狗走了。 时常,条件式和将来式的用法很像。条件式主要表达假设,而将来式则更加表达一个真实或确定的结果。 而除了字面意义上的条件,条件式也能表达委婉语气: * Io '''vole''' aqua. ** 我想要一点水(直接)。 * Io '''volerea''' aqua. ** 我会想要一点水(委婉)。 === 命令式 === 命令式,顾名思义,表示命令。它的形态和现在式一致,要区分两者主要看语气和语境。 * Le domino partira. Le catto reguarda le domino. le domino videva le catto, e dice: “Mi parve catto! '''Veni'''!”. ** 主人将离开。猫看着主人。主人看到了猫,并说:「我的小猫!来吧!」。 == 不规则动词 == 国际语只有三个不规则动词:esser(是、存在)、haber(有)、vader(去)。事实上,所谓的不规则其实只是它们的现在式的省略: * esse -&gt; es * habe -&gt; ha * vade -&gt; va 省略形式也不是强制的,学习者完全可以用规则的完整形式。 同时,因为esser是个非常常用的动词,国际语也允许欧洲语使用者用以下的不规则形式: * esseva -&gt; era * essera -&gt; sera * esserea -&gt; serea * es(命令式)-&gt; sia 同时,也存在完全不规则的动词,比如「voler」的条件式「velle」(规则形式为「volerea」)。不过这完全不妨碍学习者用规则形式。 == 分词 == 分词就是把动词变成形容词,同时依然保留了动词的功能。 分词分两种时态:现在分词和过去分词。为了语音自然,一些变位法的分词变位会略有不规则。以下是分词的变位表: * 现在分词(-nte): ** -a -&gt; -ante ** -e -&gt; -ente ** -i -&gt; -iente * 过去分词(-te): ** -a -&gt; -ate ** -e -&gt; -ite ** -i -&gt; -ite 现在分词,顾名思义,表示现在发生的,常表示主动。过去分词,顾名思义,表示过去发生的,常表示被动。 * Un catto '''magiante pisces''' vide un can. ** 一只吃着鱼的猫看见了一只狗。 * Le catto es '''mordite''' per le can. ** 猫被狗咬了。 ** Per:「被……」、「通过……」 * Le can '''vidite per le catto''' mordeva le catto '''vidente le can'''. ** 被猫看见了的狗咬了看见狗的猫。 分词和形容词一样,可以放在名词前面或后面。不过,如果分词后面还接了宾语(动作的接收者)或更长的信息,如「Per……」(被……),应该放名词后面。 == 复合时态 == 复合时态就是通过组合不同形式的动词而产生的时态。它的存在本质上是为了精准表达。 <span id="va-不定式"></span> === Va + 不定式 === 「Va + 不定式」所表达的意思和将来式差不多,不过前者所表达的将来会更近一点,有点像中文的「要……了」。 * Le domino partira. Le domino '''va partir'''. ** 主人将离开。主人要离开了。 除此之外,「Vader + 不定式」也可以变位成其他时态,表达「在何时要……了」。 * Le domino '''vadeva partir'''. ** 主人当时要离开了。 * Le domino '''vadera partir'''. ** 主人将会要离开了。 * Le domino '''vaderea partir'''. ** 主人将会要离开了(条件句中)。 ** 在条件句中,「vaderea」也能用不规则的「velle」(也是「volerea」的不规则形式)表示。 同样的逻辑也适用于分词,通常主要用现在分词: * Le domino '''vadente partir'''. ** 要离开了的主人。 <span id="haber-过去分词"></span> === Haber + 过去分词 === 「Haber + 过去分词」表达完成时。过去分词表示「这个动词已经发生了」,而Haber则会根据时态表达「这个动词在何时已经发生了」。 * Le catto '''ha mangiate''' le pisces. ** 猫吃了鱼了。 * Le catto '''habeva mangiate''' le pisces. ** 猫当时吃了鱼了。 * Le catto '''habera mangiate''' le pisces. ** 猫将会吃了鱼。 * Le catto '''haberea mangiate''' le pisces. ** 猫将会吃了鱼(条件句中)。 同时,Haber也可以变成分词: * Le catto '''habente mangiate''' le pisces. ** 吃了鱼了的猫。 * Le pisces '''habite mangiate''' per le catto. ** 被猫吃了的鱼。 <span id="esser-分词"></span> === Esser + 分词 === 「Esser + 分词」的逻辑很简单。它和上述的分词逻辑一样,只是用了「esser」(是)连接。同时,「esser」也能变位成不同时态来精细表达。 ==== 现在分词 ==== 现在分词表达的就是「在……」或「……着」,而「esser」则表示这在何时发生。通常这表示'''主动'''的动作。 * Le can '''es mordente''' le catto. ** 狗在咬猫。 * Le can '''esseva mordente''' le catto. ** 狗当时在咬猫。 * Le can '''essera mordente''' le catto. ** 狗将会咬着猫。 * Le can '''esserea mordente''' le catto. ** 狗将会咬着猫(条件句中)。 同样的逻辑也能用在分词上: * Le can '''essente mordente''' le catto. ** 在咬着猫的狗。 ==== 过去分词 ==== 过去分词表达的就是「被……了的」,而「esser」则表示这在何时发生。通常这表示'''被动'''的动作。 * Le can '''es mordite''' le catto. ** 狗在咬猫。 * Le can '''esseva mordite''' le catto. ** 狗当时在咬猫。 * Le can '''essera mordite''' le catto. ** 狗将会咬着猫。 * Le can '''esserea mordite''' le catto. ** 狗将会咬着猫(条件句中)。 同样的逻辑也能用在分词上: * Le can '''essente mordite''' le catto. ** 在咬着猫的狗。 == 问答 == <span id="分词和复合时态太复杂了"></span> === 分词和复合时态太复杂了 === 看到上述庞大的分词组合和复合时态,难免会让人怀疑「国际语真的简单吗?」。 其实,实际使用中并不用太在意,这里只是展示这种表达的可能性。对于学习者,了解基本的变位就行了。对于复杂的分词,也能用从句解决(后面的篇章会讲到)。 事实上,学习者完全不用复合时态的组合。「Vader + 不定式」和「Haber + 过去分词」的底层逻辑非常简单:就如上述所说,「Vader + 不定式」的不同变位就是在表达「在何时要……了」,而「Haber + 过去分词」的不同变位则是在表达「这个动词在何时已经发生了」。「Esser + 分词」则完全是分词的逻辑,只是加了「esser」表示时态并连接而已。 <span id="不懂怎么区分条件式和将来式"></span> === 不懂怎么区分条件式和将来式 === 在中文里,表达条件下的结果和将来所用的表达几乎一致。对于学习者,除了记住「假设用条件式,现实用将来式」外,全用将来式也问题不大,通常在语境下都能理解。不过需要注意的是,在委婉表达时,不能把条件式替换成将来式。 <span id="动词会随人称变位吗"></span> === 动词会随人称变位吗? === 不会。几乎所有动词都只会随时态变位,而不管人称。唯可以一管人称的动词只有「esser」的现在式有「so」(我是)、「somos」(我们是)和「son」(他们是),但这些也很少用,除非使用者有强烈的欧洲语习惯。 <span id="有虚拟式吗"></span> === 有虚拟式吗? === 除了esser以外,所有名词都没有虚拟式。而唯一有虚拟式的esser(虚拟式为sia),也不算常用。这主要还是服务于欧洲语使用者的习惯,学习者完全无需在意。 <span id="什么是主语和宾语"></span> === 什么是主语和宾语? === 主语就是句子中动作的发起者,而宾语则是动作的接收者。比如「猫吃鱼」中,「猫」就是主语,而「鱼」则是宾语,「吃」则是动词,也称作谓语。 [[Category:国际语]] 33o70jqb7n68hfev3w6m2jxqaw3cswt 188306 188305 2026-10-27T20:44:32Z Francucelo 68408 /* 过去分词 */ 修正笔误 188306 wikitext text/x-wiki '''动词'''是表达动作、行为或存在状态的词,比如中文里的「吃」、「去」、「是」、「有」都是动词。 == 变位法 == 国际语有三种变位法。如果学习者有学过拉丁语可能会有点被吓到,但在国际语里其实只是很简单的三元音交替,主要是为了表现得自然。 大多数变位都只是保留变位法的元音(a、e或i)然后加上固定的后缀。 == 不定式 == 不定式是动词原本的状态。不定式的结尾一律为「-r」: * Parlar:说 * Vider:看 * Audir:听 不定式的用法如同名词,但依然有着了动词的功能。在词典里,动词都是以不定式的形态展示的。 * Le '''venir''' del estate ** 夏天的到来。 ** Venir:来(不定式) ** Del:De + le:……的 ** Estate:夏天 * '''Parlar''' es pro '''comprender'''. ** 说是为了理解。 ** Pro:为了 ** Comprender:理解 * Io vole '''apprender Interlingua'''. ** 我想学国际语。 ** Io:我(主语) ** Vole:想要(现在式) ** Apprender Interlingua:学国际语(不定式) == 变位 == 动词变位及动词根据情况变换形态。 每个变位的形态都很简单:去掉不定式结尾的「-r」,然后加上对应那个时态的结尾。 === 现在式 === 现在式,顾名思义,表示现在发生的事情。它的变位没有后缀,直接去掉不定式的结尾即可。 * Un catto '''mangia''' pisces. ** 一只猫吃鱼。 * Le catto '''audi''' un can. ** 猫听见一只狗。 * Le catto '''vide''' le can. ** 猫看见那只狗。 === 过去式 === 过去式,顾名思义,表示过去发生了的事情。它通过添加结尾「-va」变位。 * Le can '''mordeva''' le catto. ** 一只狗咬了猫。 * Le catto '''clamava'''. ** 猫喊叫了。 * Le domino '''veniva'''. ** 主人来了。 === 将来式 === 将来式,顾名思义,表示将要发生的事情。它通过添加结尾「-ra」变位。 * Le domino '''battera''' le can. ** 主人将打狗。 * Le can '''partira'''. ** 狗将离开。 * Le catto '''amara''' le domino. ** 猫将爱主人。 === 条件式 === 条件式,顾名思义,表示在某个前提下会产生的事情。它通过添加结尾「-rea」变位。 * Si le can parti, le domino non '''batterea''' le can. Ergo, le can parti. ** 如果狗走了,主人就不会打狗。所以,狗走了。 时常,条件式和将来式的用法很像。条件式主要表达假设,而将来式则更加表达一个真实或确定的结果。 而除了字面意义上的条件,条件式也能表达委婉语气: * Io '''vole''' aqua. ** 我想要一点水(直接)。 * Io '''volerea''' aqua. ** 我会想要一点水(委婉)。 === 命令式 === 命令式,顾名思义,表示命令。它的形态和现在式一致,要区分两者主要看语气和语境。 * Le domino partira. Le catto reguarda le domino. le domino videva le catto, e dice: “Mi parve catto! '''Veni'''!”. ** 主人将离开。猫看着主人。主人看到了猫,并说:「我的小猫!来吧!」。 == 不规则动词 == 国际语只有三个不规则动词:esser(是、存在)、haber(有)、vader(去)。事实上,所谓的不规则其实只是它们的现在式的省略: * esse -&gt; es * habe -&gt; ha * vade -&gt; va 省略形式也不是强制的,学习者完全可以用规则的完整形式。 同时,因为esser是个非常常用的动词,国际语也允许欧洲语使用者用以下的不规则形式: * esseva -&gt; era * essera -&gt; sera * esserea -&gt; serea * es(命令式)-&gt; sia 同时,也存在完全不规则的动词,比如「voler」的条件式「velle」(规则形式为「volerea」)。不过这完全不妨碍学习者用规则形式。 == 分词 == 分词就是把动词变成形容词,同时依然保留了动词的功能。 分词分两种时态:现在分词和过去分词。为了语音自然,一些变位法的分词变位会略有不规则。以下是分词的变位表: * 现在分词(-nte): ** -a -&gt; -ante ** -e -&gt; -ente ** -i -&gt; -iente * 过去分词(-te): ** -a -&gt; -ate ** -e -&gt; -ite ** -i -&gt; -ite 现在分词,顾名思义,表示现在发生的,常表示主动。过去分词,顾名思义,表示过去发生的,常表示被动。 * Un catto '''magiante pisces''' vide un can. ** 一只吃着鱼的猫看见了一只狗。 * Le catto es '''mordite''' per le can. ** 猫被狗咬了。 ** Per:「被……」、「通过……」 * Le can '''vidite per le catto''' mordeva le catto '''vidente le can'''. ** 被猫看见了的狗咬了看见狗的猫。 分词和形容词一样,可以放在名词前面或后面。不过,如果分词后面还接了宾语(动作的接收者)或更长的信息,如「Per……」(被……),应该放名词后面。 == 复合时态 == 复合时态就是通过组合不同形式的动词而产生的时态。它的存在本质上是为了精准表达。 <span id="va-不定式"></span> === Va + 不定式 === 「Va + 不定式」所表达的意思和将来式差不多,不过前者所表达的将来会更近一点,有点像中文的「要……了」。 * Le domino partira. Le domino '''va partir'''. ** 主人将离开。主人要离开了。 除此之外,「Vader + 不定式」也可以变位成其他时态,表达「在何时要……了」。 * Le domino '''vadeva partir'''. ** 主人当时要离开了。 * Le domino '''vadera partir'''. ** 主人将会要离开了。 * Le domino '''vaderea partir'''. ** 主人将会要离开了(条件句中)。 ** 在条件句中,「vaderea」也能用不规则的「velle」(也是「volerea」的不规则形式)表示。 同样的逻辑也适用于分词,通常主要用现在分词: * Le domino '''vadente partir'''. ** 要离开了的主人。 <span id="haber-过去分词"></span> === Haber + 过去分词 === 「Haber + 过去分词」表达完成时。过去分词表示「这个动词已经发生了」,而Haber则会根据时态表达「这个动词在何时已经发生了」。 * Le catto '''ha mangiate''' le pisces. ** 猫吃了鱼了。 * Le catto '''habeva mangiate''' le pisces. ** 猫当时吃了鱼了。 * Le catto '''habera mangiate''' le pisces. ** 猫将会吃了鱼。 * Le catto '''haberea mangiate''' le pisces. ** 猫将会吃了鱼(条件句中)。 同时,Haber也可以变成分词: * Le catto '''habente mangiate''' le pisces. ** 吃了鱼了的猫。 * Le pisces '''habite mangiate''' per le catto. ** 被猫吃了的鱼。 <span id="esser-分词"></span> === Esser + 分词 === 「Esser + 分词」的逻辑很简单。它和上述的分词逻辑一样,只是用了「esser」(是)连接。同时,「esser」也能变位成不同时态来精细表达。 ==== 现在分词 ==== 现在分词表达的就是「在……」或「……着」,而「esser」则表示这在何时发生。通常这表示'''主动'''的动作。 * Le can '''es mordente''' le catto. ** 狗在咬猫。 * Le can '''esseva mordente''' le catto. ** 狗当时在咬猫。 * Le can '''essera mordente''' le catto. ** 狗将会咬着猫。 * Le can '''esserea mordente''' le catto. ** 狗将会咬着猫(条件句中)。 同样的逻辑也能用在分词上: * Le can '''essente mordente''' le catto. ** 在咬着猫的狗。 ==== 过去分词 ==== 过去分词表达的就是「被……了的」,而「esser」则表示这在何时发生。通常这表示'''被动'''的动作。 * Le catto '''es mordite''' per le can. ** 猫被狗咬了。 * Le catto '''esseva mordite''' per le can. ** 猫当时被狗咬了。 * Le catto '''essera mordite''' per le can. ** 猫将会被狗咬了。 * Le catto '''esserea mordite''' per le can. ** 猫将会被狗咬了(条件句中)。 同样的逻辑也能用在分词上: * Le catto '''essente mordite''' per le can. ** 被狗咬了的猫。 == 问答 == <span id="分词和复合时态太复杂了"></span> === 分词和复合时态太复杂了 === 看到上述庞大的分词组合和复合时态,难免会让人怀疑「国际语真的简单吗?」。 其实,实际使用中并不用太在意,这里只是展示这种表达的可能性。对于学习者,了解基本的变位就行了。对于复杂的分词,也能用从句解决(后面的篇章会讲到)。 事实上,学习者完全不用复合时态的组合。「Vader + 不定式」和「Haber + 过去分词」的底层逻辑非常简单:就如上述所说,「Vader + 不定式」的不同变位就是在表达「在何时要……了」,而「Haber + 过去分词」的不同变位则是在表达「这个动词在何时已经发生了」。「Esser + 分词」则完全是分词的逻辑,只是加了「esser」表示时态并连接而已。 <span id="不懂怎么区分条件式和将来式"></span> === 不懂怎么区分条件式和将来式 === 在中文里,表达条件下的结果和将来所用的表达几乎一致。对于学习者,除了记住「假设用条件式,现实用将来式」外,全用将来式也问题不大,通常在语境下都能理解。不过需要注意的是,在委婉表达时,不能把条件式替换成将来式。 <span id="动词会随人称变位吗"></span> === 动词会随人称变位吗? === 不会。几乎所有动词都只会随时态变位,而不管人称。唯可以一管人称的动词只有「esser」的现在式有「so」(我是)、「somos」(我们是)和「son」(他们是),但这些也很少用,除非使用者有强烈的欧洲语习惯。 <span id="有虚拟式吗"></span> === 有虚拟式吗? === 除了esser以外,所有名词都没有虚拟式。而唯一有虚拟式的esser(虚拟式为sia),也不算常用。这主要还是服务于欧洲语使用者的习惯,学习者完全无需在意。 <span id="什么是主语和宾语"></span> === 什么是主语和宾语? === 主语就是句子中动作的发起者,而宾语则是动作的接收者。比如「猫吃鱼」中,「猫」就是主语,而「鱼」则是宾语,「吃」则是动词,也称作谓语。 [[Category:国际语]] 96j8m7kv3s86h160wtne9ntep61t3ng 188308 188306 2026-10-27T23:09:36Z Francucelo 68408 /* 变位法 */ 修饰语句 188308 wikitext text/x-wiki '''动词'''是表达动作、行为或存在状态的词,比如中文里的「吃」、「去」、「是」、「有」都是动词。 == 变位法 == 国际语有三种变位法。如果学习者有学过拉丁语可能会有点被吓到,但在国际语里其实只是很简单的三元音交替,主要是为了表现得自然。 所有变位都只是保留变位法的元音(a、e或i)然后加上固定的后缀。 == 不定式 == 不定式是动词原本的状态。不定式的结尾一律为「-r」: * Parlar:说 * Vider:看 * Audir:听 不定式的用法如同名词,但依然有着了动词的功能。在词典里,动词都是以不定式的形态展示的。 * Le '''venir''' del estate ** 夏天的到来。 ** Venir:来(不定式) ** Del:De + le:……的 ** Estate:夏天 * '''Parlar''' es pro '''comprender'''. ** 说是为了理解。 ** Pro:为了 ** Comprender:理解 * Io vole '''apprender Interlingua'''. ** 我想学国际语。 ** Io:我(主语) ** Vole:想要(现在式) ** Apprender Interlingua:学国际语(不定式) == 变位 == 动词变位及动词根据情况变换形态。 每个变位的形态都很简单:去掉不定式结尾的「-r」,然后加上对应那个时态的结尾。 === 现在式 === 现在式,顾名思义,表示现在发生的事情。它的变位没有后缀,直接去掉不定式的结尾即可。 * Un catto '''mangia''' pisces. ** 一只猫吃鱼。 * Le catto '''audi''' un can. ** 猫听见一只狗。 * Le catto '''vide''' le can. ** 猫看见那只狗。 === 过去式 === 过去式,顾名思义,表示过去发生了的事情。它通过添加结尾「-va」变位。 * Le can '''mordeva''' le catto. ** 一只狗咬了猫。 * Le catto '''clamava'''. ** 猫喊叫了。 * Le domino '''veniva'''. ** 主人来了。 === 将来式 === 将来式,顾名思义,表示将要发生的事情。它通过添加结尾「-ra」变位。 * Le domino '''battera''' le can. ** 主人将打狗。 * Le can '''partira'''. ** 狗将离开。 * Le catto '''amara''' le domino. ** 猫将爱主人。 === 条件式 === 条件式,顾名思义,表示在某个前提下会产生的事情。它通过添加结尾「-rea」变位。 * Si le can parti, le domino non '''batterea''' le can. Ergo, le can parti. ** 如果狗走了,主人就不会打狗。所以,狗走了。 时常,条件式和将来式的用法很像。条件式主要表达假设,而将来式则更加表达一个真实或确定的结果。 而除了字面意义上的条件,条件式也能表达委婉语气: * Io '''vole''' aqua. ** 我想要一点水(直接)。 * Io '''volerea''' aqua. ** 我会想要一点水(委婉)。 === 命令式 === 命令式,顾名思义,表示命令。它的形态和现在式一致,要区分两者主要看语气和语境。 * Le domino partira. Le catto reguarda le domino. le domino videva le catto, e dice: “Mi parve catto! '''Veni'''!”. ** 主人将离开。猫看着主人。主人看到了猫,并说:「我的小猫!来吧!」。 == 不规则动词 == 国际语只有三个不规则动词:esser(是、存在)、haber(有)、vader(去)。事实上,所谓的不规则其实只是它们的现在式的省略: * esse -&gt; es * habe -&gt; ha * vade -&gt; va 省略形式也不是强制的,学习者完全可以用规则的完整形式。 同时,因为esser是个非常常用的动词,国际语也允许欧洲语使用者用以下的不规则形式: * esseva -&gt; era * essera -&gt; sera * esserea -&gt; serea * es(命令式)-&gt; sia 同时,也存在完全不规则的动词,比如「voler」的条件式「velle」(规则形式为「volerea」)。不过这完全不妨碍学习者用规则形式。 == 分词 == 分词就是把动词变成形容词,同时依然保留了动词的功能。 分词分两种时态:现在分词和过去分词。为了语音自然,一些变位法的分词变位会略有不规则。以下是分词的变位表: * 现在分词(-nte): ** -a -&gt; -ante ** -e -&gt; -ente ** -i -&gt; -iente * 过去分词(-te): ** -a -&gt; -ate ** -e -&gt; -ite ** -i -&gt; -ite 现在分词,顾名思义,表示现在发生的,常表示主动。过去分词,顾名思义,表示过去发生的,常表示被动。 * Un catto '''magiante pisces''' vide un can. ** 一只吃着鱼的猫看见了一只狗。 * Le catto es '''mordite''' per le can. ** 猫被狗咬了。 ** Per:「被……」、「通过……」 * Le can '''vidite per le catto''' mordeva le catto '''vidente le can'''. ** 被猫看见了的狗咬了看见狗的猫。 分词和形容词一样,可以放在名词前面或后面。不过,如果分词后面还接了宾语(动作的接收者)或更长的信息,如「Per……」(被……),应该放名词后面。 == 复合时态 == 复合时态就是通过组合不同形式的动词而产生的时态。它的存在本质上是为了精准表达。 <span id="va-不定式"></span> === Va + 不定式 === 「Va + 不定式」所表达的意思和将来式差不多,不过前者所表达的将来会更近一点,有点像中文的「要……了」。 * Le domino partira. Le domino '''va partir'''. ** 主人将离开。主人要离开了。 除此之外,「Vader + 不定式」也可以变位成其他时态,表达「在何时要……了」。 * Le domino '''vadeva partir'''. ** 主人当时要离开了。 * Le domino '''vadera partir'''. ** 主人将会要离开了。 * Le domino '''vaderea partir'''. ** 主人将会要离开了(条件句中)。 ** 在条件句中,「vaderea」也能用不规则的「velle」(也是「volerea」的不规则形式)表示。 同样的逻辑也适用于分词,通常主要用现在分词: * Le domino '''vadente partir'''. ** 要离开了的主人。 <span id="haber-过去分词"></span> === Haber + 过去分词 === 「Haber + 过去分词」表达完成时。过去分词表示「这个动词已经发生了」,而Haber则会根据时态表达「这个动词在何时已经发生了」。 * Le catto '''ha mangiate''' le pisces. ** 猫吃了鱼了。 * Le catto '''habeva mangiate''' le pisces. ** 猫当时吃了鱼了。 * Le catto '''habera mangiate''' le pisces. ** 猫将会吃了鱼。 * Le catto '''haberea mangiate''' le pisces. ** 猫将会吃了鱼(条件句中)。 同时,Haber也可以变成分词: * Le catto '''habente mangiate''' le pisces. ** 吃了鱼了的猫。 * Le pisces '''habite mangiate''' per le catto. ** 被猫吃了的鱼。 <span id="esser-分词"></span> === Esser + 分词 === 「Esser + 分词」的逻辑很简单。它和上述的分词逻辑一样,只是用了「esser」(是)连接。同时,「esser」也能变位成不同时态来精细表达。 ==== 现在分词 ==== 现在分词表达的就是「在……」或「……着」,而「esser」则表示这在何时发生。通常这表示'''主动'''的动作。 * Le can '''es mordente''' le catto. ** 狗在咬猫。 * Le can '''esseva mordente''' le catto. ** 狗当时在咬猫。 * Le can '''essera mordente''' le catto. ** 狗将会咬着猫。 * Le can '''esserea mordente''' le catto. ** 狗将会咬着猫(条件句中)。 同样的逻辑也能用在分词上: * Le can '''essente mordente''' le catto. ** 在咬着猫的狗。 ==== 过去分词 ==== 过去分词表达的就是「被……了的」,而「esser」则表示这在何时发生。通常这表示'''被动'''的动作。 * Le catto '''es mordite''' per le can. ** 猫被狗咬了。 * Le catto '''esseva mordite''' per le can. ** 猫当时被狗咬了。 * Le catto '''essera mordite''' per le can. ** 猫将会被狗咬了。 * Le catto '''esserea mordite''' per le can. ** 猫将会被狗咬了(条件句中)。 同样的逻辑也能用在分词上: * Le catto '''essente mordite''' per le can. ** 被狗咬了的猫。 == 问答 == <span id="分词和复合时态太复杂了"></span> === 分词和复合时态太复杂了 === 看到上述庞大的分词组合和复合时态,难免会让人怀疑「国际语真的简单吗?」。 其实,实际使用中并不用太在意,这里只是展示这种表达的可能性。对于学习者,了解基本的变位就行了。对于复杂的分词,也能用从句解决(后面的篇章会讲到)。 事实上,学习者完全不用复合时态的组合。「Vader + 不定式」和「Haber + 过去分词」的底层逻辑非常简单:就如上述所说,「Vader + 不定式」的不同变位就是在表达「在何时要……了」,而「Haber + 过去分词」的不同变位则是在表达「这个动词在何时已经发生了」。「Esser + 分词」则完全是分词的逻辑,只是加了「esser」表示时态并连接而已。 <span id="不懂怎么区分条件式和将来式"></span> === 不懂怎么区分条件式和将来式 === 在中文里,表达条件下的结果和将来所用的表达几乎一致。对于学习者,除了记住「假设用条件式,现实用将来式」外,全用将来式也问题不大,通常在语境下都能理解。不过需要注意的是,在委婉表达时,不能把条件式替换成将来式。 <span id="动词会随人称变位吗"></span> === 动词会随人称变位吗? === 不会。几乎所有动词都只会随时态变位,而不管人称。唯可以一管人称的动词只有「esser」的现在式有「so」(我是)、「somos」(我们是)和「son」(他们是),但这些也很少用,除非使用者有强烈的欧洲语习惯。 <span id="有虚拟式吗"></span> === 有虚拟式吗? === 除了esser以外,所有名词都没有虚拟式。而唯一有虚拟式的esser(虚拟式为sia),也不算常用。这主要还是服务于欧洲语使用者的习惯,学习者完全无需在意。 <span id="什么是主语和宾语"></span> === 什么是主语和宾语? === 主语就是句子中动作的发起者,而宾语则是动作的接收者。比如「猫吃鱼」中,「猫」就是主语,而「鱼」则是宾语,「吃」则是动词,也称作谓语。 [[Category:国际语]] fra50pisktdszvym9zs80ppe27ip9w4 188309 188308 2026-10-27T23:11:47Z Francucelo 68408 /* 命令式 */ 修饰语句 修正笔误 188309 wikitext text/x-wiki '''动词'''是表达动作、行为或存在状态的词,比如中文里的「吃」、「去」、「是」、「有」都是动词。 == 变位法 == 国际语有三种变位法。如果学习者有学过拉丁语可能会有点被吓到,但在国际语里其实只是很简单的三元音交替,主要是为了表现得自然。 所有变位都只是保留变位法的元音(a、e或i)然后加上固定的后缀。 == 不定式 == 不定式是动词原本的状态。不定式的结尾一律为「-r」: * Parlar:说 * Vider:看 * Audir:听 不定式的用法如同名词,但依然有着了动词的功能。在词典里,动词都是以不定式的形态展示的。 * Le '''venir''' del estate ** 夏天的到来。 ** Venir:来(不定式) ** Del:De + le:……的 ** Estate:夏天 * '''Parlar''' es pro '''comprender'''. ** 说是为了理解。 ** Pro:为了 ** Comprender:理解 * Io vole '''apprender Interlingua'''. ** 我想学国际语。 ** Io:我(主语) ** Vole:想要(现在式) ** Apprender Interlingua:学国际语(不定式) == 变位 == 动词变位及动词根据情况变换形态。 每个变位的形态都很简单:去掉不定式结尾的「-r」,然后加上对应那个时态的结尾。 === 现在式 === 现在式,顾名思义,表示现在发生的事情。它的变位没有后缀,直接去掉不定式的结尾即可。 * Un catto '''mangia''' pisces. ** 一只猫吃鱼。 * Le catto '''audi''' un can. ** 猫听见一只狗。 * Le catto '''vide''' le can. ** 猫看见那只狗。 === 过去式 === 过去式,顾名思义,表示过去发生了的事情。它通过添加结尾「-va」变位。 * Le can '''mordeva''' le catto. ** 一只狗咬了猫。 * Le catto '''clamava'''. ** 猫喊叫了。 * Le domino '''veniva'''. ** 主人来了。 === 将来式 === 将来式,顾名思义,表示将要发生的事情。它通过添加结尾「-ra」变位。 * Le domino '''battera''' le can. ** 主人将打狗。 * Le can '''partira'''. ** 狗将离开。 * Le catto '''amara''' le domino. ** 猫将爱主人。 === 条件式 === 条件式,顾名思义,表示在某个前提下会产生的事情。它通过添加结尾「-rea」变位。 * Si le can parti, le domino non '''batterea''' le can. Ergo, le can parti. ** 如果狗走了,主人就不会打狗。所以,狗走了。 时常,条件式和将来式的用法很像。条件式主要表达假设,而将来式则更加表达一个真实或确定的结果。 而除了字面意义上的条件,条件式也能表达委婉语气: * Io '''vole''' aqua. ** 我想要一点水(直接)。 * Io '''volerea''' aqua. ** 我会想要一点水(委婉)。 === 命令式 === 命令式,顾名思义,表示命令。它的形态和现在式一致,要区分两者主要看语气和语境。 * Le domino partira. Le catto reguarda le domino. Le domino videva le catto, e dice: “Mi parve catto! '''Veni'''!”. ** 主人将离开。猫看着主人。主人看到了猫,并说:「我的小猫!来吧!」。 == 不规则动词 == 国际语只有三个不规则动词:esser(是、存在)、haber(有)、vader(去)。事实上,所谓的不规则其实只是它们的现在式的省略: * esse -&gt; es * habe -&gt; ha * vade -&gt; va 省略形式也不是强制的,学习者完全可以用规则的完整形式。 同时,因为esser是个非常常用的动词,国际语也允许欧洲语使用者用以下的不规则形式: * esseva -&gt; era * essera -&gt; sera * esserea -&gt; serea * es(命令式)-&gt; sia 同时,也存在完全不规则的动词,比如「voler」的条件式「velle」(规则形式为「volerea」)。不过这完全不妨碍学习者用规则形式。 == 分词 == 分词就是把动词变成形容词,同时依然保留了动词的功能。 分词分两种时态:现在分词和过去分词。为了语音自然,一些变位法的分词变位会略有不规则。以下是分词的变位表: * 现在分词(-nte): ** -a -&gt; -ante ** -e -&gt; -ente ** -i -&gt; -iente * 过去分词(-te): ** -a -&gt; -ate ** -e -&gt; -ite ** -i -&gt; -ite 现在分词,顾名思义,表示现在发生的,常表示主动。过去分词,顾名思义,表示过去发生的,常表示被动。 * Un catto '''magiante pisces''' vide un can. ** 一只吃着鱼的猫看见了一只狗。 * Le catto es '''mordite''' per le can. ** 猫被狗咬了。 ** Per:「被……」、「通过……」 * Le can '''vidite per le catto''' mordeva le catto '''vidente le can'''. ** 被猫看见了的狗咬了看见狗的猫。 分词和形容词一样,可以放在名词前面或后面。不过,如果分词后面还接了宾语(动作的接收者)或更长的信息,如「Per……」(被……),应该放名词后面。 == 复合时态 == 复合时态就是通过组合不同形式的动词而产生的时态。它的存在本质上是为了精准表达。 <span id="va-不定式"></span> === Va + 不定式 === 「Va + 不定式」所表达的意思和将来式差不多,不过前者所表达的将来会更近一点,有点像中文的「要……了」。 * Le domino partira. Le domino '''va partir'''. ** 主人将离开。主人要离开了。 除此之外,「Vader + 不定式」也可以变位成其他时态,表达「在何时要……了」。 * Le domino '''vadeva partir'''. ** 主人当时要离开了。 * Le domino '''vadera partir'''. ** 主人将会要离开了。 * Le domino '''vaderea partir'''. ** 主人将会要离开了(条件句中)。 ** 在条件句中,「vaderea」也能用不规则的「velle」(也是「volerea」的不规则形式)表示。 同样的逻辑也适用于分词,通常主要用现在分词: * Le domino '''vadente partir'''. ** 要离开了的主人。 <span id="haber-过去分词"></span> === Haber + 过去分词 === 「Haber + 过去分词」表达完成时。过去分词表示「这个动词已经发生了」,而Haber则会根据时态表达「这个动词在何时已经发生了」。 * Le catto '''ha mangiate''' le pisces. ** 猫吃了鱼了。 * Le catto '''habeva mangiate''' le pisces. ** 猫当时吃了鱼了。 * Le catto '''habera mangiate''' le pisces. ** 猫将会吃了鱼。 * Le catto '''haberea mangiate''' le pisces. ** 猫将会吃了鱼(条件句中)。 同时,Haber也可以变成分词: * Le catto '''habente mangiate''' le pisces. ** 吃了鱼了的猫。 * Le pisces '''habite mangiate''' per le catto. ** 被猫吃了的鱼。 <span id="esser-分词"></span> === Esser + 分词 === 「Esser + 分词」的逻辑很简单。它和上述的分词逻辑一样,只是用了「esser」(是)连接。同时,「esser」也能变位成不同时态来精细表达。 ==== 现在分词 ==== 现在分词表达的就是「在……」或「……着」,而「esser」则表示这在何时发生。通常这表示'''主动'''的动作。 * Le can '''es mordente''' le catto. ** 狗在咬猫。 * Le can '''esseva mordente''' le catto. ** 狗当时在咬猫。 * Le can '''essera mordente''' le catto. ** 狗将会咬着猫。 * Le can '''esserea mordente''' le catto. ** 狗将会咬着猫(条件句中)。 同样的逻辑也能用在分词上: * Le can '''essente mordente''' le catto. ** 在咬着猫的狗。 ==== 过去分词 ==== 过去分词表达的就是「被……了的」,而「esser」则表示这在何时发生。通常这表示'''被动'''的动作。 * Le catto '''es mordite''' per le can. ** 猫被狗咬了。 * Le catto '''esseva mordite''' per le can. ** 猫当时被狗咬了。 * Le catto '''essera mordite''' per le can. ** 猫将会被狗咬了。 * Le catto '''esserea mordite''' per le can. ** 猫将会被狗咬了(条件句中)。 同样的逻辑也能用在分词上: * Le catto '''essente mordite''' per le can. ** 被狗咬了的猫。 == 问答 == <span id="分词和复合时态太复杂了"></span> === 分词和复合时态太复杂了 === 看到上述庞大的分词组合和复合时态,难免会让人怀疑「国际语真的简单吗?」。 其实,实际使用中并不用太在意,这里只是展示这种表达的可能性。对于学习者,了解基本的变位就行了。对于复杂的分词,也能用从句解决(后面的篇章会讲到)。 事实上,学习者完全不用复合时态的组合。「Vader + 不定式」和「Haber + 过去分词」的底层逻辑非常简单:就如上述所说,「Vader + 不定式」的不同变位就是在表达「在何时要……了」,而「Haber + 过去分词」的不同变位则是在表达「这个动词在何时已经发生了」。「Esser + 分词」则完全是分词的逻辑,只是加了「esser」表示时态并连接而已。 <span id="不懂怎么区分条件式和将来式"></span> === 不懂怎么区分条件式和将来式 === 在中文里,表达条件下的结果和将来所用的表达几乎一致。对于学习者,除了记住「假设用条件式,现实用将来式」外,全用将来式也问题不大,通常在语境下都能理解。不过需要注意的是,在委婉表达时,不能把条件式替换成将来式。 <span id="动词会随人称变位吗"></span> === 动词会随人称变位吗? === 不会。几乎所有动词都只会随时态变位,而不管人称。唯可以一管人称的动词只有「esser」的现在式有「so」(我是)、「somos」(我们是)和「son」(他们是),但这些也很少用,除非使用者有强烈的欧洲语习惯。 <span id="有虚拟式吗"></span> === 有虚拟式吗? === 除了esser以外,所有名词都没有虚拟式。而唯一有虚拟式的esser(虚拟式为sia),也不算常用。这主要还是服务于欧洲语使用者的习惯,学习者完全无需在意。 <span id="什么是主语和宾语"></span> === 什么是主语和宾语? === 主语就是句子中动作的发起者,而宾语则是动作的接收者。比如「猫吃鱼」中,「猫」就是主语,而「鱼」则是宾语,「吃」则是动词,也称作谓语。 [[Category:国际语]] j2m26hcaj94pr3pmrhpfgp927jzunog 国际语基本语法/词性/副词 0 34998 188291 188290 2026-10-27T12:05:32Z Francucelo 68408 /* 需要在意不规则的副词吗? */ 修饰语句 188291 wikitext text/x-wiki '''副词'''和形容词一样用于修饰,但是副词修饰名词以外的事物,包括动词、句子、形容词、其他的副词,比如中文里的「快速地」、「开心地」。 国际语中,副词分为两种:'''原始副词'''与'''派生副词'''。原始副词没有固定的结尾,而派生副词则直接来自形容词,且有固定的结尾。 == 派生副词 == 要派生副词很简单,只需要在形容词结尾直接添加「-mente」即可。如果形容词以「-c」结尾,则需要在中间加上「-a-」为了语音需要。 * Rapide''mente'' ** 快速地 ** Rapide:快速的 * Felice''mente'' ** 快乐地、幸运地、幸好 ** Felice:快乐的、幸运的 * Natural''mente'' ** 自然地 ** Natural:自然的 * Photographic''amente'' ** 摄影地 ** Photographic:摄影的 === 连用 === 当有多个副词连着时,前面的派生副词不需要加后缀,只有最后一个要加: * Rapide e felice e natural''mente'':快速且快乐又自然地 == 不规则副词 == 有些形容词虽然能直接派生,但存在不规则的副词形式。这些也属于原始副词,但又有形容词对应。 * Bon(好的)-&gt; ben(好地) * Melior(更好的)-&gt; melio(更好地) * Mal(坏的)-&gt; mal(坏地) * Pejor(更坏的)-&gt; pejo(更坏地) * 诸如此类。 除了完全不规则的副词,也有两类有自己的规则的副词派生,这两类适用于以「e」结尾的形容词。第一类直接保留形容词的形式,即副词形式与形容词一模一样。第二类则将形容词结尾的「-e」替换为「-o」。 * 第一类 ** Forte(强的)-&gt; forte(强地) ** Longe(长的)-&gt; longe(长地) * 第二类 ** Multe(多的)-&gt; multo(非常、多地) ** Juste(正确的、公正的)-&gt; justo(正确地、公正地) == 语序 == 副词的位置相对固定,根据其修饰的事物改变。 === 对动词 === 副词修饰动词时在动词后面,除了表示否定的「non」(不、没)。 * Le can parti '''rapidemente'''. ** 狗快速地离开了。 * Le catto '''non''' vide le can. ** 猫没看到狗。 这同样适用于分词。 * Le can partiente '''rapidemente'''. ** 快速地离开的狗。 === 对形容词和其他副词 === 副词修饰形容词和其他副词时通常放在其前面。 * Multo rapide:非常快的 * Multo rapidemente:非常快地 === 对句子 === 副词修饰整个句子时,它可以被放在句首、句中(主语后面)和句末。语感和中文相似: * '''Felicemente''', le domino veni e le can parti. ** 好在,主人来了,狗也走了。 * Le domino '''felicemente''' veni e le can parti. ** 主人幸好来了,狗也走了。 * Le domino veni e le can parti, '''felicemente'''. ** 主人来了,狗也走了,幸运的是。 == 副词短语 == 副词短语的用法和副词一样,它们通常通过介词(后面的篇章会讲到)连接形成短语,可以理解为一种固定搭配。这些固定搭配通常能直接在词典里找到。 * A fin de:从而 * Al fin:最后 * In summa:总而言之 * De tempore in tempore:时不时 == 问答 == <span id="需要在意不规则的副词吗"></span> === 需要在意不规则的副词吗? === 对于学习者表达,完全不需要。学习者完全可以将此当作进阶用法。国际语完全允许直接用规则的派生形式。比如,可以不用不规则的「ben」,而用规则派生而来的「bonmente」。 <span id="副词的派生规则从何而来"></span> === 副词的派生规则从何而来? === -mente在如今看来就是个简单的语法标记,但它其实直接来自拉丁语。 起初,它只是名词mens(心灵、精神、态度)的夺格形式。夺格表达「以……」,因此mens的夺格形式mente也就表示「以……的态度」。之后经过进一步的语法化,它逐渐变成了一个副词后缀。 这也是为什么连用副词时只有结尾的副词需要有-mente后缀,因为它本质上就是一堆形容词在修饰单个名词。 <span id="不规则副词独特的派生规则又从何而来"></span> === 不规则副词独特的派生规则又从何而来? === 不规则副词有不少完全不规则,但也存在上述提到的两类相对规则的形式:「e」和「o」结尾。这两个结尾都来自拉丁语,前者是拉丁语的副词形式,后者是拉丁语的夺格形式。 虽然拉丁语原本已经有了完整的副词派生体系,但当平民使用时,遇到了两大问题:不够清楚(容易混淆)且规则太多(繁琐),所以就演化出了完全规则的-mente。 <span id="什么是短语"></span> === 什么是短语? === 短语是大于单词、但还没有构成句子的语法单位。可以这么理解:「猫」是个名词,而「快乐的猫」则是个名词短语,因为它的功能是名词,但又有多个词。 [[Category:国际语]] npepbe0p5u6ldn2can555ypqx0mbo2l 188310 188291 2026-10-27T23:31:47Z Francucelo 68408 内容扩充 188310 wikitext text/x-wiki '''副词'''和形容词一样用于修饰,但是副词修饰名词以外的事物,包括动词、句子、形容词、其他的副词,比如中文里的「快速地」、「开心地」。 国际语中,副词分为两种:'''原始副词'''与'''派生副词'''。原始副词没有固定的结尾,而派生副词则直接来自形容词,且有固定的结尾。 == 派生副词 == 要派生副词很简单,只需要在形容词结尾直接添加「-mente」即可。如果形容词以「-c」结尾,则需要在中间加上「-a-」为了语音需要。 * Rapide''mente'' ** 快速地 ** Rapide:快速的 * Felice''mente'' ** 快乐地、幸运地、幸好 ** Felice:快乐的、幸运的 * Natural''mente'' ** 自然地 ** Natural:自然的 * Photographic''amente'' ** 摄影地 ** Photographic:摄影的 === 连用 === 当有多个副词连着时,前面的派生副词不需要加后缀,只有最后一个要加: * Rapide e felice e natural''mente'':快速且快乐又自然地 == 不规则副词 == 有些形容词虽然能直接派生,但存在不规则的副词形式。这些也属于原始副词,但又有形容词对应。 * Bon(好的)-&gt; ben(好地) * Melior(更好的)-&gt; melio(更好地) * Mal(坏的)-&gt; mal(坏地) * Pejor(更坏的)-&gt; pejo(更坏地) * 诸如此类。 除了完全不规则的副词,也有两类有自己的规则的副词派生,这两类适用于以「e」结尾的形容词。第一类直接保留形容词的形式,即副词形式与形容词一模一样。第二类则将形容词结尾的「-e」替换为「-o」。 * 第一类 ** Forte(强的)-&gt; forte(强地) ** Longe(长的)-&gt; longe(长地) * 第二类 ** Multe(多的)-&gt; multo(非常、多地) ** Juste(正确的、公正的)-&gt; justo(正确地、公正地) == 语序 == 副词的位置相对固定,根据其修饰的事物改变。 === 对动词 === 副词修饰动词时在动词后面,除了表示否定的「non」(不、没)。 * Le can parti '''rapidemente'''. ** 狗快速地离开了。 * Le catto '''non''' vide le can. ** 猫没看到狗。 这同样适用于分词。 * Le can partiente '''rapidemente'''. ** 快速地离开的狗。 === 对形容词和其他副词 === 副词修饰形容词和其他副词时通常放在其前面。 * Multo rapide:非常快的 * Multo rapidemente:非常快地 === 对句子 === 副词修饰整个句子时,它可以被放在句首、句中(主语后面)和句末。语感和中文相似: * '''Felicemente''', le domino veni e le can parti. ** 好在,主人来了,狗也走了。 * Le domino '''felicemente''' veni e le can parti. ** 主人幸好来了,狗也走了。 * Le domino veni e le can parti, '''felicemente'''. ** 主人来了,狗也走了,幸运的是。 == 副词短语 == 副词短语的用法和副词一样,它们通常通过介词(后面的篇章会讲到)连接形成短语,可以理解为一种固定搭配。这些固定搭配通常能直接在词典里找到。 * A fin de:从而 * Al fin:最后 * In summa:总而言之 * De tempore in tempore:时不时 == 副词作名词 == 部分副词能被直接用作名词,比如「nunc」(现在)、「hodie」(今天)、「hic」(这里),逻辑和中文差不多,主要都是表示空间和时间的原始副词。 == 问答 == <span id="需要在意不规则的副词吗"></span> === 需要在意不规则的副词吗? === 对于学习者表达,完全不需要。学习者完全可以将此当作进阶用法。国际语完全允许直接用规则的派生形式。比如,可以不用不规则的「ben」,而用规则派生而来的「bonmente」。 <span id="副词的派生规则从何而来"></span> === 副词的派生规则从何而来? === -mente在如今看来就是个简单的语法标记,但它其实直接来自拉丁语。 起初,它只是名词mens(心灵、精神、态度)的夺格形式。夺格表达「以……」,因此mens的夺格形式mente也就表示「以……的态度」。之后经过进一步的语法化,它逐渐变成了一个副词后缀。 这也是为什么连用副词时只有结尾的副词需要有-mente后缀,因为它本质上就是一堆形容词在修饰单个名词。 <span id="不规则副词独特的派生规则又从何而来"></span> === 不规则副词独特的派生规则又从何而来? === 不规则副词有不少完全不规则,但也存在上述提到的两类相对规则的形式:「e」和「o」结尾。这两个结尾都来自拉丁语,前者是拉丁语的副词形式,后者是拉丁语的夺格形式。 虽然拉丁语原本已经有了完整的副词派生体系,但当平民使用时,遇到了两大问题:不够清楚(容易混淆)且规则太多(繁琐),所以就演化出了完全规则的-mente。 <span id="什么是短语"></span> === 什么是短语? === 短语是大于单词、但还没有构成句子的语法单位。可以这么理解:「猫」是个名词,而「快乐的猫」则是个名词短语,因为它的功能是名词,但又有多个词。 [[Category:国际语]] hdpl3z6uw0lyr63m7b0n5atyk9ob5gt Template:RFC 10 35000 188292 2026-10-27T12:16:07Z Jcb 14615 创建页面,内容为“<includeonly>[https://datatracker.ietf.org/doc/html/rfc{{{1}}} RFC&nbsp;{{{1}}}]</includeonly><noinclude>” 188292 wikitext text/x-wiki <includeonly>[https://datatracker.ietf.org/doc/html/rfc{{{1}}} RFC&nbsp;{{{1}}}]</includeonly><noinclude> eghp8gmiwa01fo10l6qp9m50gjsnhkf User talk:Jcb 3 35001 188302 2026-10-27T13:49:18Z Tisscherry 69132 + 188302 wikitext text/x-wiki <div style="width:100%; margin:0.2em 0; padding:0.3em 0; border-top:1px solid #DDDDDD; border-bottom:1px solid #DDDDDD; font-size:120%;">'''您好,Jcb!歡迎加入維基教科書!'''</div> [[Wikibooks:欢迎|歡迎]]您加入中文維基教科書的大家庭![[Wikibooks:关于|維基教科書]]是自由、免費、人人可編輯的書籍協作計畫,包括各種[[:w:開放內容|內容開放]]的教科書及手冊。中文維基教科書始於2004年7月23日,至今為止已有3,862頁教科書及手冊。 * 您可以在[[Wikibooks:首页|首頁]]按主題瀏覽或[[Wikibooks:如何参与|參與編寫]]教科書。 * 不熟悉維基格式?您可以參照[[Wikibooks:格式手册|格式手冊]],並在[[Wikibooks:沙盒|沙盒]]中練習如何編輯頁面。請記得留下[[Wikibooks:编辑摘要|編輯摘要]]。 * 如果有問題,歡迎在[[Wikibooks:互助客棧|互助客棧]]或我的對話頁面提出。發布留言以前請記得簽名,方式之一是留下4個波浪號「<nowiki>~~</nowiki><nowiki>~~</nowiki>」。您亦可以參考[[Wikibooks:维基教科书语言列表|其他語言版本]]的維基教科書。 * [[Wikibooks:勇於更新頁面|請勇於編輯]]。 希望您會喜歡上這裡! <div lang="en" style="font-style:italic; font-size:90%;">If you have any questions about the Chinese Wikibooks, please leave a message [[Wikibooks:Guestbook|here]] or [[Wikibooks:互助客棧|here]]. Thank you for visiting!</div> 我是歡迎您的[[Wikibooks:維基教科書人|維基人]]:[[User:Tisscherry|Tisscherry]] ([[User talk:Tisscherry|留言]]) 2026年10月27日 (二) 13:49 (UTC) 5631n4nup2vw9dijl7vvo90e5ush6br