Taglate

Taglate is an esoteric programming language by User:BoundedBeans. It is based off of a tag system, but with a strange and hard-to-work-with method of expanding the queue. The name has absolutely nothing to do with a town in Saint Helena, and is instead a portmanteau of “tag” and “translate”.
==Storage==
It uses a queue of integers (from 0 to 65535, wrapping), however these integers are typically represented as UTF-16 text characters due to an aspect that is the main esoteric thing about this language.
==Syntax and instructions==
The first line should be the initial queue state. It can contain anything except newlines.
The next lines are filled with a bunch of commands, all lowercase letters.
a - add the front 2 numbers, push to the back
b - pop x, pop y, push x - y
c - multiply the front 2 numbers
d - pop x, pop y, push x / y
e - shift the front element to the back
f - discard the front element
gy - loop as long as the front element is not zero
gz - end loop
h - input a text character to the back of the queue
i - pop a character and output it
j - if not zero, subtract 1 from the front of the queue and push it to the back. if zero, change to 1 and push to the back. this command is here to make it actually possible to get any number out of the url stuff, by allowing a way to get 1.
t - the main esoteric command of this language.
Note: How to always get 1 from a number:
To make sure you're on the number each time you subtact, we can add a zero marker. A pretty easy way to to this is to take the 2 t's in "https" and subtract. This will put it at the back. Now you can run:
gyjgyegzegzjgyegze. That uses nested loops, basically we do the 1 thing, go to our zero marker by shifting everything to the back until we see a zero, shifting one more time, and restarting the loop. Then we subtract one more time to get the one, then shift to it again using the zero marker. Again, the "tt" in "https" works well for creating a zero marker, simply do ebgyegz and then we are on our zero marker.
==t Explained==
Google translate actually records what you type into the textbox in the URL. So that means we can encode any text string as a google translate URL, right? Wrong. Google translate has a 5000 character limit to the textbox, limiting the usefulness of our queue. An old version of this document suggested to cut up the text into 5000 character slices and concatenate the results together. It has been decided to simply ignore this restriction and encode more characters as if it worked on google translate, since this would be much easier for implementers and programmers.
So here is the procedure for t.
# Treat the queue as text.
# Encode as a Google Translate URL. This is pretty easy to do without any automated bots logging into google translate, as it's a pretty simple filter. Note that Google Translate also specifies the start and target language, and these should be included in the URL as if the translation would be going from English to Spanish. 
#* Exact specifications: Convert any non-url-safe characters or non-characters to %(hex number). Prefix with "https://translate.google.com/?sl=en&tl=es&text=". Suffix with "&op=translate".
# Replace the queue with the result.
Note that URLifying is the only way to expand the queue, other than input.
==Programs==
===Hello, world===
 Hello, world!
 iiiiiiiiiiiii
===Cat===
 
 gyhigz
===Encode initial state as Google Translate url===
 
 tgyigz
Category:Languages
Category:Queue-based
Category:Unimplemented