Git Product home page Git Product logo

l10n.js's Issues

Russian l10n for demo

Please, use:
"ru": {
"%title": "Русский - l10n.js demo",
"%info": "Вы просматриваете Русскую версию этой страницы."
},

ReferenceErrors in browserless environment

An issue occurs when L10N is being used in a browserless environment, such as being run directly using Node.

The issues largely come from the assumption that certain objects will exist, such as self, XMLHttpRequest and document, with the former two causing ReferenceErrors when they are reached in the code. This is particularly a problem when it comes to running Unit Tests on localization code inside environments like Mocha.

The errors in question are as follows:

ReferenceError: self is not defined at l10n.js:20:9

and

ReferenceError: XMLHttpRequest is not defined at l10n.js:196:11

I have a proposed set of changes to fix this issue for Node that I can create a PR for, if it is considered something that is in scope for the library to handle.

Use different locale than the selected one

Hi all!

First of all, tthis is not an issue, but rather a question.
But since I couldn't find an answer, here goes:
Is it possible to programatically translate a resource?

In the current app I am developing, we give the user the option to change the current locale.
However it seems easy at first, we need to warn the user about the language being changed (not in its current locale, but rather in the option's locale).

Something like <locale>: <locale_warning>

English: Warning, the application will be set to english.
Português: Aviso, o idioma da aplicação mudará para português.

Best regards,
tbragaf

Problem and a possible fix for Chrome 39

Hi,

Using the 2-year old Chrome 39 (2014-11), I've got a "use const in strict mode" syntax error in l10n.js:

        return Function.prototype[$to_locale_string].apply(String_ctr, arguments);
    }
    , loadFromDisk = String_ctr[$to_locale_string] = function (uri) {
            const fs = require('fs');
            ^^^^^

By removing the strict mode or changing const to var, it was possible to fix the problem, for example:

diff -u node_modules/l10n-for-node.old/l10n.js node_modules/l10n-for-node/l10n.js
--- node_modules/l10n-for-node.old/l10n.js	2016-12-01 13:41:50.301318129 +0100
+++ node_modules/l10n-for-node/l10n.js	2016-12-01 13:43:31.765314513 +0100
@@ -130,7 +130,7 @@
 	return Function.prototype[$to_locale_string].apply(String_ctr, arguments);
 }
 , loadFromDisk = String_ctr[$to_locale_string] = function (uri) {
-        const fs = require('fs');
+        var fs = require('fs');
         var read = fs.readFileSync(uri, 'utf8');
         return JSON.parse(read);

Thanks for your work,
Laszlo

Bower

Hi,

In order for Bower to work, you need to add tags for each version (this is equivalent to npm's publish functionality).

In case you haven't done this:

  1. Add a version property to your bower.json like "0.1.0".
  2. Add a tag to your local repo: git tag -a v0.1.0 -m 'my version 0.1.0'
  3. Push tags to Github: git push origin --tags

(Note that in Windows command line, double quotes are needed for step 2.)

IOS Translation

Hey man, I am having trouble getting this to work when running in an IOS app. It seems like the string prototype is not getting the new method. Has this been tested in that env?

Cannot get this to work...

Ok since my other questions I have been testing this out and I cannot seem to get it to work in any manner using a .json file included as per the instructions under the Usage section, it seems to take no notice of it whatsoever.

I then tried the way it was done in the Demo section and I got it to work, however it doesn't seem to honor country code locales, eg:

With that in mind I'm unsure you even set the Language/locale you wish to use if you aren't using the link tag such as:

<link rel="localization" hreflang="en-US" href="american-english.json" type="application/vnd.oftn.l10n+json"/>

Does the script look at the value of the lang attribute of the html tag?

Anyway, I have it set as such:

<html lang="en-GB">

...and then I have included the main library followed by a .js file with this inside it:

String.toLocaleString({
    "en": {
        "Hello!": "Hello!!!!!!!!"
    },
    "en-GB": {
        "Hello!": "Hola!"
    },
    "en-AU": {
        "Hello!": "Hola!!!!!!!!!!!"
    }
});

When I do any translations this will output: Hello!!!!!!!! when it should output Hola!

If I only include the en-GB locale such as:

String.toLocaleString({
    "en-GB": {
        "Hello!": "Hola!"
    }
});

Then it doesn't do anything and just outputs the same text as I passed in.

Can you please advise?

Thanks!

Loading language files fails on some browsers due to inconsistent status codes

In some browsers/environments the request seems to finish with a status code of 0 even though the request was successful. I've experienced this in the iOS web view (using Cordova) but I'm sore there are other environments where this happens. I suggest basing success/failure on a successful parsing of the response text instead of relying on possibly inconsistent status codes.

Support format {"property":{"lang1":"localized message in lang1"}}

I am working in a project in which we want to process a json such as:
{ "id":0, "name":"monopoly","description":
{"en":"Monopoly is a board game that originated in the United States in 1903"
,"es":"Monopoly es un juego de mesa de intercambio y de bienes raíces"
}}

I like the easiness of this library and would like to contribute a patch to allow processing this kind of formats. I imagine it like this:

String.toLocaleString(retrievedObjectWithLocalizedData,"reverseFormat");
"description".toLocaleString();

We want to opt for this format because the localized data is editable and stored in the database.
As such, it makes a lot of sense to return localization values together with queried data.

Do you find it worth the extra complexity and effort as to accept a PR?
Do you have some feedback, syntactic preferences, or any concerns?

Synchronous XMLHttpRequest

Hi! i'm getting this error:

Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.

from

req.open("GET", uri, FALSE);

i know the line above that one says:

// sadly, this has to be blocking to allow for a graceful degrading API

but is there a solution to fix this warning?

Cannot call method 'valueOf' error

I am getting an error when calling some jQuery ajax functions that have strings in the data object eg:

$.ajax({
data: { ..strings... }
...

Here is the top of the trace:

Uncaught TypeError: Cannot call method 'valueOf' of undefined l10n.js:148
String_ctr.(anonymous function) l10n.js:148
add jquery-1.10.2.js:7499
buildParams jquery-1.10.2.js:7551
buildParams jquery-1.10.2.js:7546
jQuery.param jquery-1.10.2.js:7519
jQuery.extend.ajax ...

When I print my data object that I am sending into the above ajax function it looks something like:

f: "..."
limit: 4
page: 0
o: Object
{ 
    0: "1"
    toLocaleString: function () {
    __proto__: Object

}

On these strings I do not want to do translation, so I make a small change into l10n.js at line 143:

if(this === undefined) return false;

This stops the error, and translation seems to be fine for everything else, but is there a better way?

Do you need to include a translation when one isn't needed?

Just starting to use this library and wondering for like the default language or similar ones do you need to provide the translation if one is not needed?

For example, say your translation is l("my message") then you would normally have to do something like this:

{
  "en-US": {
      "my message": "my message",
      "color": "color"
  },
  "en-GB": {
      "my message": "my message",
      "color": "colour"
  },
}

Whereas, if not already an acceptable way to do it, something like this would save a lot of repeated data and code bloat:

{
  "en-US": {

  },
  "en-GB": {
      "color": "colour"
  },
}

So basically if it didn't find the translation then the text would remain the same; in this instance we would be using en-US as our default (writing) language and hence no translations are needed and en-GB is very similar so the file should only need to contain the translations that actually need to be translated.

Is this an acceptable way of doing it or does all translations have to be put in the files whether they need translating or not?

Can you do translations with numbers?

Just wondering what if you wanted to do translation on a string that has a number in it?

For example:

There (is,are) {n} cat(s)

So what it would do is find the translation string to translate the words, choose the correct term between is and are, show the locale specific number based on what number you passed in (somehow) and also display either the non-plural or plural version of the word cat.

...or is this outside this library's scope?

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.