selectize.js
selectize.js copied to clipboard
i18n
Suport for multiple languages.
Text to create new item is hardcoded english.
I think this would be an easy thing to address... might as well. In the meantime, you can always provide a render.option_create function in the settings to custom-render that dropdown item.
+1
+1
+1
+1
+1
If anyone is wondering how to change it as @brianreavis suggested, just do something like this:
$('.my-select').selectize({
create: true,
render: {
option_create: function(data, escape) {
var addString = 'Adicionar';
return '<div class="create">' + addString + ' <strong>' + escape(data.input) + '</strong>…</div>';
}
}
});
As someone who's native tongue is French, I'd be inclined to accept a PR making this simpler. We could add an option allowing you to spectify a string (eg. addString: "Add %{name}") or a function addString: function(word){ I18n.t("selectize.add", word)}.
+1
I'll go even further in this, the function would be called with two params, function(word, key), allowing one to do:
addString: I18n.t
instead of:
addString: function(word, key){ I18n.t(word, key) }
Default: I18n.t if exists (or whatever is the JS convention for translation), or "Add %{name}".
or something automagic like that.
- [x] Figure out strings that can be translated
- [x] Figure out I18n conventions in JS and sensible defaults
- [x] Begin writing tests
- [ ] Finish writing tests
- [ ] Write the code
Here's what I see:
describe("I18n", function(){
describe("dictionary syntax", function(){
var s = Selectize.init({
dictionary: {
addThis: "Ajouter %{elem}"
}
})
expect(s.i18n('addThis', {elem: 'ceci'}).to.equal("Ajouter ceci")
})
describe("delegate to i18n library", function(){
var I18n = {
t: function(key, params) {
return "Ajouter " + params.elem;
}
}
var s = Selectize.init({
i18n: I18n.t
});
expect(s.i18n('addThis', {elem: 'ceci'})).to.equal("Ajouter ceci")
})
describe("default i18n library", function(){
var I18n = {
t: function(key, params) {
return "Ajouter " + params.elem;
}
}
var s = Selectize.init({
// i18n: default
});
expect(s.i18n('addThis', {elem: 'ceci'})).to.equal("Ajouter ceci")
})
})
Libraries i18next, I18n-js and Polyglot all use syntax .t()
closing stale issues older than one year. If this issue was closed in error please message the maintainers. All issues must include a proper title, description, and examples.
Is it possible to translate things meanwhile?
For example, remove-single has "remove" in the title. This would have to be translated for my use case.

It's been a while I haven't touched this project, but I would imagine a PR that makes it possible to specify the language string in the options would be a great start.
– Oops, actually that's what #902 proposed and I closed the PR in favor of this one. (harsh.) Funny how I don't agree with my past self anymore, I think something along the lines of #902 is a good idea, maybe a bit more fleshed out. But again, I'm not the one who puts much work in this project anymore so that's only my own personal opinion!
always welcome a PR, my time is stretched these days too, and I fully admit that my i18n skills are underdeveloped. I agree that #902 at least feels more simple to implement, but I would need to do some research before jumping in myself