Difference between revisions of "LanguageWML"

From The Battle for Wesnoth Wiki
(added special_note_damage_type_$TYPE)
 
(20 intermediate revisions by 6 users not shown)
Line 1: Line 1:
== the toplevel [language] tag ==
+
{{WML Tags}}
 +
== The toplevel [language] tag ==
  
Each [language] tag represents one language.
+
The contents of the [language] tag associate strings with certain keywords used by the engine and some WML, such as attack types and ranges.
Languages are selected by pressing the "Language" button in-game.
 
  
If you are just trying to make a language, then open the file '''data/sample-translation.cfg''', then translate all the
+
The following keys and tags are recognized in [language] tags:
pink text into another language
 
(See [[WesnothTranslations]] for information on how to submit your translation).
 
The purpose of this wiki, however, is to explain how the internationalization system works.
 
(Note: this wiki is currently incomplete)
 
  
== the Wesnoth internationalization system ==
+
* '''EASY''': string to associate with the EASY difficulty keyword.
 +
* '''NORMAL''': string to associate with the NORMAL difficulty keyword.
 +
* '''HARD''': string to associate with the HARD difficulty keyword.
 +
* '''NIGHTMARE''': string to associate with the NIGHTMARE difficulty keyword.
 +
* '''liminal_description''': string for the liminal alignment's description.
 +
* '''lawful_description''': string for the lawful alignment's description.
 +
* '''neutral_description''': string for the neutral alignment's description.
 +
* '''chaotic_description''': string for the chaotic alignment's description.
 +
* '''bridge_name''': comma-separated list of names to be used by the feature-labeling function for bridges.
 +
* '''road_name''': comma-separated list of names to be used by the feature-labeling function for roads.
 +
* '''river_name''': comma-separated list of names to be used by the feature-labeling function for rivers.
 +
* '''forest_name''': comma-separated list of names to be used by the feature-labeling function for forests.
 +
* '''lake_name''': comma-separated list of names to be used by the feature-labeling function for lakes.
 +
* '''mountain_name''': comma-separated list of names to be used by the feature-labeling function for mountains.
 +
* '''swamp_name''': comma-separated list of names to be used by the feature-labeling function for rivers.
 +
* '''village_name''': comma-separated list of names to be used by the feature-labeling function for villages.
 +
* '''range_melee''': string to associate with the melee range keyword.
 +
* '''range_ranged''': string to associate with the ranged range keyword.
 +
* '''range_$RANGE''': string to associate with whatever range $RANGE is in actual use. Refer to the [[LanguageWML#Examples|examples section]] for actual uses and examples.
 +
* '''type_$TYPE''': string to associate with whatever type $TYPE is in actual use. Refer to the the [[LanguageWML#Examples|examples section]] for actual uses and examples.
 +
* '''special_note_damage_type_$TYPE''': {{DevFeature1.15|14}} See [[UnitTypeWML#Special_Notes]]. Mainline uses it only for ''arcane''.
  
In the Wesnoth internationanization system, each tag that has keys with displayed text values is given an
+
== Examples ==
internationalization key, or an ''ID''.
 
For example, the [scenario] tag has the key ''name'' which is a text value, and this value is displayed in the game.
 
So each [scenario] tag is given an ID, which is used to translate this text in different languages.
 
Most internationalized tags have the key ''id//; the value of ''id'' is the tag's ID.
 
However, the tag [unit] (see [[UnitWML]]) uses the key ''name'' in place of ''id''.
 
Important: since keys are not allowed to have spaces, all spaces should be removed when entering a key.
 
However, several IDs use underbars instead of spaces; underbars should not be removed.
 
  
 +
=== Examples and actual uses of range_$RANGE ===
  
== Internationalization attributes ==
+
Example of an actual use in mainline:
 +
 +
[language]
 +
    range_melee= _ "melee"
 +
[/language]
  
One type of internationalization attribute is the attribute '''''id//=//translation'''''.
+
Example of an association of a string with the keyword for a '''very_long''' range in UMC:
This attribute is interpreted as meaning that all tags with ID ''id'' should have their main text interpreted as
+
''translation''.
+
[language]
For example, the attribute '''Elves_Besieged="Elves Besieged"|| means that the scenario with ||id=Elves_Besieged''' should
+
    range_very_long= _ "very long"
use the name "Elves Besieged" in the translation.
+
[/language]
  
However, some internationalized tags have multiple text attributes.
+
=== Examples and actual uses of type_$TYPE ===
An example is [scenario], which has the name of the scenario, and the scenario objectives.
 
If the key ''key'' is not the main text of its tag, it is interpreted using the attribute
 
== ''id//_//key//=//translation'' ==.
 
For example the key '''Crossroads_objectives''' describes the scenario objectives for Crossroads.
 
  
A list of tags which have IDs:
+
Example of an actual use in mainline:
* [campaign] main text: ''name//. Also, ''difficulty_descriptions//, which is written as ''difficulties''. See [[CampaignWML]]
+
* [scenario] main text: ''name//. Also, ''objectives''. See [[ScenarioWML]]
+
[language]
* [unit] main text: ''name//. Also, ''description''. See [[UnitWML]]
+
    type_arcane= _ "arcane"
* [message] main text: ''message''. See [message], [[InterfaceActionsWML]]
+
[/language]
* [object] main text: ''message''. See [object], [[DirectActionsWML]]
 
* [terrain] main text: ''name''. See [[TerrainWML]]
 
  
Another type of internationalization attribute: '''''type//_//specific//=//translation'''''.
+
Example of an association of a string with the keyword for an '''electric''' type in UMC:
''type'' is a type of text; ''specific'' is which text.
+
For example the attribute '''ability_cures="cures"''' would translate the ability "cures" as "cures".
+
[language]
 
+
    type_electric= _ "electric"
The following are values for ''type'':
+
[/language]
* "ability" ''specific'' is the name of an ability (See [[AbilitiesWML]]).
 
The translation will be displayed on the Status Table.
 
* "action" ''specific'' is a UI action, for example "Recruit".
 
The translation will be displayed as an option on a menu.
 
See [[ThemeWML]] for a list of UI actions, and for information on menus.
 
* "weapon_name" ''specific'' is the name of a unit's weapon.
 
All weapons with '''name=''specific//''' (see [[AttackWML]]) will be displayed on the Status Table as ''translation''.
 
* "weapon_special" a weapon specialty, displayed in the Status Table under the weapon's name. See [[AbilitiesWML]]
 
 
 
Another type: '''''tooltip//_description=//translation'''''.
 
Whenever the player's cursor is over the word ''tooltip//, ''translation'' will be displayed as a tooltip.
 
 
 
The following types of text can have tooltips:
 
* (non-weapon) abilities. See [[AbilitiesWML]]
 
* alignments. See [[TimeWML]]
 
* status modifications. See [[StatusWML]]
 
* '''weapon_special_''weapon-special'''''. See [[AbilitiesWML]]
 
 
 
In addition to internationalization attributes, the following keys are recognized:
 
* ''language'' the name of the language (in the language).
 
This is displayed when selecting a translation.
 
* ''id'' the internationalization key of the language
 
  
 
== See Also ==
 
== See Also ==

Latest revision as of 22:23, 15 October 2021

[edit]WML Tags

A:

abilities, about, achievement, achievement_group, add_ai_behavior, advanced_preference, advancefrom, advancement, advances, affect_adjacent, ai, allied_with, allow_end_turn, allow_extra_recruit, allow_recruit, allow_undo, and, animate, animate_unit, animation, aspect, attack (replay, weapon), attack_anim, attacks (special, stats), avoid;

B:

base_unit, background_layer, berserk, binary_path, break, brush;

C:

campaign, cancel_action, candidate_action, capture_village, case, chance_to_hit, change_theme, chat, checkbox, choice, choose, clear_global_variable, clear_menu_item, clear_variable, color_adjust, color_palette, color_range, command (action, replay), continue, core, credits_group, criteria;

D:

damage, damage_type, death, deaths, default, defend, defends, defense, delay, deprecated_message, destination, difficulty, disable, disallow_end_turn, disallow_extra_recruit, disallow_recruit, do, do_command, drains, draw_weapon_anim;

E:

editor_group, editor_music, editor_times, effect, else (action, animation), elseif, endlevel, end_turn (action, replay), enemy_of, engine, entry (credits, options), era, event, experimental_filter_ability, experimental_filter_ability_active, experimental_filter_specials, extra_anim;

F:

facet, facing, fake_unit, false, feedback, female, filter (concept, event), filter_adjacent, filter_adjacent_location, filter_attack, filter_attacker, filter_base_value, filter_condition, filter_defender, filter_enemy, filter_location, filter_opponent, filter_own, filter_owner, filter_radius, filter_recall, filter_second, filter_second_attack, filter_self, filter_side, filter_student, filter_vision, filter_weapon, filter_wml, find_path, fire_event, firststrike, floating_text, fonts, for, foreach, found_item, frame;

G:

game_config, get_global_variable, goal, gold, gold_carryover;

H:

harm_unit, has_ally, has_attack, has_unit, has_achievement, have_location, have_unit, heal_on_hit, heal_unit, healed_anim, healing_anim, heals, hide_help, hide_unit, hides;

I:

idle_anim, if (action, animation, intro), illuminates, image (intro, terrain), init_side, insert_tag, inspect, item, item_group;

J:

jamming_costs, join;

K:

kill, killed;

L:

label, language, leader, leader_goal, leadership, leading_anim, levelin_anim, levelout_anim, lift_fog, limit, literal, load_resource, locale, lock_view, lua;

M:

male, menu_item, message, micro_ai, missile_frame, modification, modifications, modify_ai, modify_side, modify_turns, modify_unit, modify_unit_type, move, move_unit, move_unit_fake, move_units_fake, movement_anim, movement costs, movetype, multiplayer, multiplayer_side, music;

N:

not, note;

O:

object, objective, objectives, on_undo, open_help, option, options, or;

P:

part, petrifies, petrify, place_shroud, plague, poison, post_movement_anim, pre_movement_anim, primary_attack, primary_unit, print, progress_achievement, put_to_recall_list;

R:

race, random_placement, recall (action, replay), recalls, recruit, recruit_anim, recruiting_anim, recruits, redraw, regenerate, remove_event, remove_item, remove_object, remove_shroud, remove_sound_source, remove_time_area, remove_trait, remove_unit_overlay, repeat, replace_map, replace_schedule, replay, replay_start, reset_fog, resistance (ability, unit), resistance_defaults, resolution, resource, return, role, rule;

S:

save, scenario, screen_fade, scroll, scroll_to, scroll_to_unit, secondary_attack, secondary_unit, section, select_unit, sequence, set_achievement, set_extra_recruit, set_global_variable, set_menu_item, set_recruit, set_specials, set_variable, set_variables, sheath_weapon_anim, show_if (message, objective, set_menu_item), show_objectives, side, skirmisher, slider, slow, snapshot, sound, sound_source, source (replay, teleport), special_note, specials, split, stage, standing_anim, statistics, status, store_gold, store_items, store_locations, store_map_dimensions, store_reachable_locations, store_relative_direction, store_side, store_starting_location, store_time_of_day, store_turns, store_unit, store_unit_defense, store_unit_defense_on, store_unit_type, store_unit_type_ids, store_villages, story, swarm, sub_achievement, switch, sync_variable;

T:

target, team, teleport (ability, action), teleport_anim, terrain, terrain_defaults, terrain_graphics, terrain_mask, terrain_type, test, test_condition, test_do_attack_by_id, text_input, textdomain, theme, then, tile, time, time_area, topic, toplevel, trait, transform_unit, traveler, true, tunnel;

U:

unhide_unit, unit (action, scenario), unit_overlay, unit_type, unit_worth, units, unlock_view, unpetrify, unstore_unit, unsynced;

V:

value, variable, variables, variant, variation, victory_anim, village, vision_costs, volume;

W:

while, wml_message, wml_schema;

Z:

zoom;

The toplevel [language] tag

The contents of the [language] tag associate strings with certain keywords used by the engine and some WML, such as attack types and ranges.

The following keys and tags are recognized in [language] tags:

  • EASY: string to associate with the EASY difficulty keyword.
  • NORMAL: string to associate with the NORMAL difficulty keyword.
  • HARD: string to associate with the HARD difficulty keyword.
  • NIGHTMARE: string to associate with the NIGHTMARE difficulty keyword.
  • liminal_description: string for the liminal alignment's description.
  • lawful_description: string for the lawful alignment's description.
  • neutral_description: string for the neutral alignment's description.
  • chaotic_description: string for the chaotic alignment's description.
  • bridge_name: comma-separated list of names to be used by the feature-labeling function for bridges.
  • road_name: comma-separated list of names to be used by the feature-labeling function for roads.
  • river_name: comma-separated list of names to be used by the feature-labeling function for rivers.
  • forest_name: comma-separated list of names to be used by the feature-labeling function for forests.
  • lake_name: comma-separated list of names to be used by the feature-labeling function for lakes.
  • mountain_name: comma-separated list of names to be used by the feature-labeling function for mountains.
  • swamp_name: comma-separated list of names to be used by the feature-labeling function for rivers.
  • village_name: comma-separated list of names to be used by the feature-labeling function for villages.
  • range_melee: string to associate with the melee range keyword.
  • range_ranged: string to associate with the ranged range keyword.
  • range_$RANGE: string to associate with whatever range $RANGE is in actual use. Refer to the examples section for actual uses and examples.
  • type_$TYPE: string to associate with whatever type $TYPE is in actual use. Refer to the the examples section for actual uses and examples.
  • special_note_damage_type_$TYPE: (Version 1.15.14 and later only) See UnitTypeWML#Special_Notes. Mainline uses it only for arcane.

Examples

Examples and actual uses of range_$RANGE

Example of an actual use in mainline:

[language]
    range_melee= _ "melee"
[/language]

Example of an association of a string with the keyword for a very_long range in UMC:

[language]
    range_very_long= _ "very long"
[/language]

Examples and actual uses of type_$TYPE

Example of an actual use in mainline:

[language]
    type_arcane= _ "arcane"
[/language]

Example of an association of a string with the keyword for an electric type in UMC:

[language]
    type_electric= _ "electric"
[/language]

See Also

This page was last edited on 15 October 2021, at 22:23.