| Bytes | Lang | Time | Link |
|---|---|---|---|
| 071 | Python | 250506T095924Z | SevC_10 |
| 068 | Google Sheets | 250429T131612Z | doubleun |
| 041 | 05AB1E | 250430T071539Z | Kevin Cr |
| 043 | Charcoal | 250430T001341Z | Neil |
| 039 | Jelly | 250429T200333Z | Jonathan |
| 046 | Japt P | 250429T172116Z | Shaggy |
| 075 | APL+WIN | 250429T123601Z | Graham |
| 064 | JavaScript Node.js | 250429T121311Z | l4m2 |
Python, 71 bytes
Simple lambda function that takes an integer as input and uses it as index to select the correct prefix.
lambda i:'0 1 Ni San Yon Go Roku Nana Hachi Kyū Jū'.split()[i]+'tama'
Google Sheets, 68 bytes
=index(split("0Ni0San0Yon0Go0Roku0Nana0Hachi0Kyū0Jū",0,,),A1)&"tama"

I don't think googletranslate() is of much help here, because 6 gets 6, and six gets 六. You'd need bahttext() to spell out the number and Apps Script to romanize and transliterate the result, so you could as well use LanguageApp or the Cloud Translation service from the get-go. Also, googletranslate(roman(6), "en", "ja") gets VI.
05AB1E, 41 bytes
.•6Γvékm4¦^˜«’Λ³Î$+θƶÖˆÁP<½•#ć«™'b₆ûç:I<è
Try it online or verify all test cases.
Explanation:
.•6Γvékm4¦^˜«’Λ³Î$+θƶÖˆÁP<½•
# Push compressed string "tama jb ni san yon go roku nana hachi kyb"
# # Split it on spaces to a list
ć # Extract head; push remainder-list and first item separately
« # Append this head ("tama") to each item in the list
™ # Titlecase each string
'b '# Push "b"
₆ # Push 36
û # Palindromize it to 363
ç # Convert that to a character with that codepoint: "ū"
: # Replace all "b"s with "ū"s
I # Push the input
< # Decrease it by 1
è # Leave the string at that (0-based) index
# (which is output implicitly as result)
See this 05AB1E tip of mine (section How to compress strings not part of the dictionary?) to understand why .•6Γvékm4¦^˜«’Λ³Î$+θƶÖˆÁP<½• is "tama jb ni san yon go roku nana hachi kyb".
PS: The titlecasing ™ is done before replacing the bs with ūs, because otherwise it would titlecase the Tama after the ūs as well for some reason.. try it online.
Charcoal, 43 bytes
§⁺⁺⪪KyJ²ū⪪”(1¶S″№wΠT⊙⁹✳R?▷^Rσ⎚ujDπ” Ntama
Try it online! Link is to verbose version of code. Explanation:
KyJ Literal string `KyJ`
⪪ Split into substrings of length
² Literal integer `2`
⁺ Vectorised concatenated with
ū Literal string `ū` (3 bytes)
⁺ Concatenated with
”...” Compressed string of prefixes for `2`-`8`
⪪ Split on spaces
§ Cyclically indexed by
N Input as a number
Implicitly print
tama Print literal string `tama`
Jelly, 40 39 bytes
“}“dƲȦ⁵ȤƝė½ṗ€Ċọḣṡ©ȷ8h1Ẉ³“»j363ỌḲ⁸ị“tama
A full program that accepts an integer argument from \$[2,10]\$ and prints the successor's name.
How?
“...»j363ỌḲ⁸ị“tama - Main Link: integer, N
“...» - compressed list of strings
-> ["J", " Ni San Yon Go Roku Nana Hachi Ky", ""]
j363 - join with 363
Ọ - cast to ordinals (replacing the 363s with 'ū's)
-> "Jū Ni San Yon Go Roku Nana Hachi Kyū"
Ḳ - split at space characters
⁸ị - {N} 1-index, cyclically, into {that}
- implicit print
“tama - "tama"
- implicit print
APL+WIN, 75 bytes.
Simple lookup. Prompts for integer between 2 and 10 included
(∊('Ni' 'San' 'Yon' 'Go' 'Roku' 'Nana' 'Hachi' 'Kyu' 'Ju')[⎕-1],'tama')~' '
JavaScript (Node.js), 64 bytes
n=>'00Ni0San0Yon0Go0Roku0Nana0Hachi0Kyū0Jū'.split(0)[n]+'tama'
Not fun