1
0
mirror of https://github.com/minetest-mods/intllib.git synced 2024-11-14 06:20:31 +01:00

Updated readme, in an attempt to make it more readable

This commit is contained in:
Ryan 2016-05-03 23:11:01 -07:00 committed by Auke Kok
parent 475711f7f7
commit 0c7b30464c

View File

@ -1,30 +1,31 @@
Internationalization Lib for Minetest
#Internationalization Lib for Minetest
By Diego Martínez (a.k.a. "Kaeza").
Released as WTFPL.
This mod is an attempt at providing internationalization support for mods
(something Minetest currently lacks).
How do I use it?
##How do I use it?
In order to enable it for your mod, copy the following code snippet and paste
it at the beginning of your source file(s):
-- Boilerplate to support localized strings if intllib mod is installed.
local S
if minetest.get_modpath("intllib") then
S = intllib.Getter()
else
-- If you don't use insertions (@1, @2, etc) you can use this:
S = function(s) return s end
```lua
-- Boilerplate to support localized strings if intllib mod is installed.
local S
if minetest.get_modpath("intllib") then
S = intllib.Getter()
else
-- If you don't use insertions (@1, @2, etc) you can use this:
S = function(s) return s end
-- If you use insertions, but not insertion escapes this will work:
S = function(s,a,...)a={a,...}return s:gsub("@(%d+)",function(n)return a[tonumber(n)]end)end
-- Use this if you require full functionality
S = function(s,a,...)if a==nil then return s end a={a,...}return s:gsub("(@?)@(%(?)(%d+)(%)?)",function(e,o,n,c)if e==""then return a[tonumber(n)]..(o==""and c or"")else return"@"..o..n..c end end) end
end
-- If you use insertions, but not insertion escapes this will work:
S = function(s,a,...)a={a,...}return s:gsub("@(%d+)",function(n)return a[tonumber(n)]end)end
-- Use this if you require full functionality
S = function(s,a,...)if a==nil then return s end a={a,...}return s:gsub("(@?)@(%(?)(%d+)(%)?)",function(e,o,n,c)if e==""then return a[tonumber(n)]..(o==""and c or"")else return"@"..o..n..c end end) end
end
```
You will also need to optionally depend on intllib, to do so add "intllib?" to
a empty line in your depends.txt. Also note that if intllib is not installed,
the S() function is defined so it returns the string unchanged. This is done
@ -34,30 +35,34 @@ if the lib is actually installed.
Next, for each "translatable" string in your sources, use the S() function
(defined in the snippet) to return the translated string. For example:
minetest.register_node("mymod:mynode", {
description = S("My Fabulous Node"),
<...>
})
```lua
minetest.register_node("mymod:mynode", {
description = S("My Fabulous Node"),
<...>
})
```
Then, you create a `locale' directory inside your mod directory, with files
Then, you create a 'locale' directory inside your mod directory, with files
named after the two-letter ISO Language Code of the languages you want to
support. Here's an example for a Spanish locale file (`es.txt'):
support. Here's an example for a Spanish locale file ('es.txt'):
# Lines beginning with a pound sign are comments and are effectively ignored
# by the reader. Note that comments only span until the end of the line;
# there's no support for multiline comments.
Hello, World! = Hola, Mundo!
String with\nnewlines = Cadena con\nsaltos de linea
String with an \= equals sign = Cadena con un signo de \= igualdad
```cfg
# Lines beginning with a pound sign are comments and are effectively ignored
# by the reader. Note that comments only span until the end of the line;
# there's no support for multiline comments.
Hello, World! = Hola, Mundo!
String with\nnewlines = Cadena con\nsaltos de linea
String with an \= equals sign = Cadena con un signo de \= igualdad
```
Since there's currently no portable way to detect the language, this library
tries several alternatives, and uses the first one found:
- `language' setting in `minetest.conf'
- `LANG' environment variable (this is always set on Unix-like OSes).
- Default of "en".
- `language` setting in `minetest.conf`
- `LANG` environment variable (this is always set on Unix-like OSes).
- Default of `"en"`.
Note that in any case only up to the first two characters are used, so for
example, the settings "de_DE.UTF-8", "de_DE", and "de" are all equal.
Windows users have no `LANG' environment variable by default. To add it, do
example, the settings `"de_DE.UTF-8"`, `"de_DE"`, and `"de"` are all equal.
Windows users have no `LANG` environment variable by default. To add it, do
the following:
- Click Start->Settings->Control Panel.
- Start the "System" applet.
@ -67,7 +72,7 @@ the following:
- Type "LANG" (without quotes) as name and the language code as value.
- Click OK until all dialogs are closed.
Alternatively for all platforms, if you don't want to modify system settings,
you may add the following line to your `minetest.conf' file:
you may add the following line to your 'minetest.conf' file:
language = <language code>
Also note that there are some problems with using accented, and in general
@ -78,6 +83,8 @@ Thanks for reading up to this point.
Should you have any comments/suggestions, please post them in the forum topic.
Let there be translated texts! :P
--
\--
Yours Truly,
Kaeza