[Meta] Translation

💢 Update March '21: help wanted for maintaining the Polish, Czech and Danish translations.
Let me open this issue so that I can talk to all of you kind folks who agreed to translate the guidelines at once. If any of you have a question about anything, please feel free to ask!
Getting started

Read CONTRIBUTING.md to know more about Git and the branching system in use.
Read TRANSLATING.md to know more about how to actually translate the guidelines.

Note: if you are updating a translation rather than starting from scratch, help yourself with CHANGELOG.md.
Submitting your work

Make sure your version is up-to-date with the current master branch.
Submit a pull request against the master branch on GitHub.
This is over!

Translations

Status
Language
Version
Translators

:white_check_mark:
Chinese
1.3
Help wanted

:white_check_mark:
German
1.3
@morkro

:white_check_mark:
French
1.3
@pierrechoffe

:white_check_mark:
Italian
1.3
@MakhBeth, @mattcav

:white_check_mark:
Greek
1.3
@varemenos, @margaritis

:white_check_mark:
Spanish
1.3
@soniar4i, @davidkpiano

:white_check_mark:
Portuguese
1.3
@magalhini, @couto, @saravieira, @eduardoboucas, @hunkjazz

:white_check_mark:
Russian
1.3
@irene-97, @PavelDemyanenko, @nastiatikk, @arbaev

:white_check_mark:
Korean
1.3
@kimdhoe @woochul2

:white_check_mark:
Dutch
1.3
@noah-vdv

:exclamation:
Polish
1.2
@klapec, @matchabros

:exclamation:
Czech
1.1
@HoBi

:exclamation:
Danish
1.1
Help wanted

:white_check_mark: means up-to-date.
:exclamation: means not up-to-date.
:x: means in progress.

Ping @grawl, for the Russian translation.

Note to translators: headings' id are auto-generated by Jekyll based on the headings; basically it's a slugify. Anyway, since you translate the titles, you also have to translate the anchors.

Regarding the donate.html partial that is being included all over the place, here is how we will proceed. Please create _includes/donate/<language>.html (e.g. _includes/donate/de.html) and translate the content of current _includes/donate.html here.
I take care of everything else. ;)

Regarding Further readings links, I think they should not be translated so it's bright clear they are in another language than the current one. Please, do leave them in English (also there is one in French if I'm right). :)

Regarding Further readings links, I think they should not be translated so it's bright clear they are in another language than the current one. Please, do leave them in English (also there is one in French if I'm right). :)
Ping all: @varemenos, @kmargaritis, @PatrickKDK, @pierrechoffe, @ttomdewit, @klapec, @kaibrueckers, @magalhini, @soniar4i, @srescio, @pavelantolik, @grawl, @PavelDemyanenko.

Regarding the donate.html partial that is being included all over the place, here is how we will proceed.
Please create _includes/donate/<language>.html (e.g. _includes/donate/de.html) and translate the content of current _includes/donate.html here.
Do not update the {% include %} tags in your index.md, they should still be {% include donate.html %}.
I take care of everything else. ;)
Ping all: @varemenos, @kmargaritis, @PatrickKDK, @pierrechoffe, @ttomdewit, @klapec, @kaibrueckers, @magalhini, @soniar4i, @srescio, @pavelantolik, @grawl, @PavelDemyanenko.

:smirk:

Already working on mistakes with Russian translation, will PR my changes soon.

In order to translate Note — that is being added by CSS depending on the document language, I need you all to give me the translation for Note (either in this issue or the issue dealing with your translation). Thanks in advance! :)
Ping all: @varemenos, @kmargaritis, @PatrickKDK, @pierrechoffe, @ttomdewit, @klapec, @kaibrueckers, @magalhini, @soniar4i, @srescio, @pavelantolik, @grawl, @PavelDemyanenko.

Great, thanks for the guidelines!

Writing guidelines to translation guidelines. GUIDELINES-CEPTION!

Salut Hugo,
(1) Liens
Ok pour le lien vers les articles originaux en anglais (dommage, y’a de bonnes trad en français !! :))
Quid des liens vers wikipedia: idem, ou (lorsque c’est possible) lien vers wiki français?
(2) Traduction de Note
Vu que c’est le même mot (et si je comprends bien c’est la seule chose à traduire), ya rien de particulier à faire pour la trad fr ?
(3) Questions
Il y a des points sur lesquels j’ai des questions, donc je te propose d’en faire la liste une fois que j’aurai terminé, avant de te soumettre la trad, ok ?
@+, Pierre

Le 18 janv. 2015 à 13:33, Hugo Giraudel<EMAIL_ADDRESS>a écrit :
Regarding Further readings links, I think they should not be translated so it's bright clear they are in another language than the current one. Please, do leave them in English (also there is one in French if I'm right). :)
Ping all: @varemenos https://github.com/varemenos, @kmargaritis https://github.com/kmargaritis, @PatrickKDK https://github.com/PatrickKDK, @pierrechoffe https://github.com/pierrechoffe, @ttomdewit https://github.com/ttomdewit, @klapec https://github.com/klapec, @kaibrueckers https://github.com/kaibrueckers, @magalhini https://github.com/magalhini, @soniar4i https://github.com/soniar4i, @srescio https://github.com/srescio, @pavelantolik https://github.com/pavelantolik, @grawl https://github.com/grawl, @Pa velDemyanenko https://github.com/PavelDemyanenko.
—
Reply to this email directly or view it on GitHub https://github.com/HugoGiraudel/sass-guidelines/issues/96#issuecomment-70406652.

I just merged the new design changes that will allow your translations to be read. Because of this, you will have to synchronise your fork and rebase your branch folks.

I updated the initial post with a lot of guidelines and tips. I'll update it again frequently.

Also, make sure you don't make the same dumb mistake like me and don't request your commits to be merged into master. gh-pages is where they should go.

I'm experiencing some issue with headings titles and anchors generated by Jekyll, it seems to have issues handling accented vowels, as result i get [Cosa è Sass] (#cosa-%C3%A8-sass) which doesn't work as proper anchor and doesn't make page scroll to the related element, if there's no fix/workaround I'll just replace them rephrasing the headlines that have this issue (only one so far), even though it would feel less "natural" to me

Mmmh. I will have a look tomorrow.

@srescio I have not worked on it but already see this problem and I think that we have add some HTML into our Markdown like this:
Цвета

…

## Цвета

But I don't know how it would work with existing Sass Guidelines frontend.

Okay, so I just checked and "Cosa è Sass" leads to cosa--sass. So please don't refrain yourself using special characters. They are omitted in ids.

@HugoGiraudel please note that only latin characters remains. Russian language don't have any latin characters so remains only words like “Sass” or other terms that we don't translate.
So if we have Using Sass in your project it will be translated like Использование Sass в вашем проекте and will be converted to something like -sass---.

Mpf. That is an issue for Russian I suppose. Let me have a look, if I can find something.

We might be onto something with this: http://kramdown.gettalong.org/options.html#option-transliterated-header-ids.

Ping all: @varemenos, @kmargaritis, @PatrickKDK, @pierrechoffe, @ttomdewit, @bartveneman, @klapec, @kaibrueckers, @altembo, @magalhini, @saravieira, @eduardoboucas, @soniar4i, @davidkpiano, @srescio, @pavelantolik, @grawl, @PavelDemyanenko.
In order to avoid duplicating partials' HTML for each language, I slightly updated the way we work for the footer, the donate partial and the baseline.
Instead of copy/pasting the HTML from _includes/<partial>/en.html, you will end up including _includes/<partial>/template.html in _includes/<partial>/<language>.html, passing it parameters. For instance:

{% include baseline/template.html content="Un guide arrêté pour écrire du code Sass propre, soutenable et évolutif." %}

I updated the initial post with an example for each of the three partials working like this.

@HugoGiraudel: Wouldn't it be helpful to add a Gitter-Room for further communication?

Good idea. Done. If someone did not have an invitation, please ask.
https://gitter.im/HugoGiraudel/sass-guidelines

Slight change in the content: https://github.com/HugoGiraudel/sass-guidelines/commit/50317adbcfc7b3ad966ee77214a8933e24f1ba82.
Ping all: @varemenos, @kmargaritis, @PatrickKDK, @pierrechoffe, @ttomdewit, @bartveneman, @klapec, @kaibrueckers, @altembo, @magalhini, @saravieira, @eduardoboucas, @couto, @soniar4i, @davidkpiano, @srescio, @pavelantolik, @grawl, @PavelDemyanenko.

What would you folks think of having the content divided across multiple files? For instance, one file per major section? Would it help?
Ping all: @varemenos, @kmargaritis, @PatrickKDK, @pierrechoffe, @ttomdewit, @bartveneman, @klapec, @kaibrueckers, @altembo, @magalhini, @saravieira, @eduardoboucas, @couto, @soniar4i, @davidkpiano, @srescio, @pavelantolik, @grawl, @PavelDemyanenko.

I think so, as it would make detecting and managing changes easier

I will think of something then.

Main index would look like this:
---
layout: default
language: en
---

{% include_relative /{{ page.language }}/01_author.md %}
{% include_relative /{{ page.language }}/02_contributing.md %}

{% include_relative /{{ page.language }}/03_sass.md %}
{% include_relative /{{ page.language }}/04_introduction.md %}
{% include_relative /{{ page.language }}/05_syntax.md %}

{% include donate.html %}

{% include_relative /{{ page.language }}/06_naming.md %}
{% include_relative /{{ page.language }}/07_comments.md %}
{% include_relative /{{ page.language }}/08_architecture.md %}
{% include_relative /{{ page.language }}/09_rwd.md %}

{% include donate.html %}

{% include_relative /{{ page.language }}/10_variables.md %}
{% include_relative /{{ page.language }}/11_extend.md %}
{% include_relative /{{ page.language }}/12_mixins.md %}
{% include_relative /{{ page.language }}/13_conditions.md %}

{% include donate.html %}

{% include_relative /{{ page.language }}/14_loops.md %}
{% include_relative /{{ page.language }}/15_errors.md %}
{% include_relative /{{ page.language }}/16_tools.md %}
{% include_relative /{{ page.language }}/17_tldr.md %}

{% include donate.html %}

I opened a PR to split the English version: https://github.com/HugoGiraudel/sass-guidelines/pull/111. Comments and review welcome. If it's fine with you, we'll implement it for all translations.

I think it would be easier and will help a lot in the maintenance! :+1:  by me!

I just merged the multi-files architecture into gh-pages. The English version now lives in /en/, divided across 18 files (one per major section). Your translation should reflect the exact same architecture in your /<language>/ folder.
The only exception with the English version is that you should have a index.md file containing nothing but this:
---
layout: default
language: en
---

{% include chapters.html %}

Obviously replace en with your own language. That's it.
Ping all: @varemenos, @kmargaritis, @PatrickKDK, @pierrechoffe, @ttomdewit, @bartveneman, @klapec, @kaibrueckers, @altembo, @magalhini, @saravieira, @eduardoboucas, @couto, @soniar4i, @davidkpiano, @srescio, @pavelantolik, @grawl, @PavelDemyanenko.

There are probably some words and expressions that should not be translated. Here is a list:

TL;DR
Too Long; Didn't Read
front end / back end (noun)
front-end / back-end (adjective)
stylesheet(s)

I added to the initial comment a list of words and expressions that should not be translated.
Ping all: @varemenos, @kmargaritis, @PatrickKDK, @pierrechoffe, @ttomdewit, @bartveneman, @klapec, @kaibrueckers, @altembo, @magalhini, @saravieira, @eduardoboucas, @couto, @soniar4i, @davidkpiano, @srescio, @pavelantolik, @grawl, @PavelDemyanenko.
@klapec Could you please make sure that's okay with the Polish version please? :)

Ok, so I had already started (and commited) a few translations with the "old" way of doing it, ie, not with the split files. I'm having some trouble merging it all back together, so I reckon it should be safer for me to delete my "pt" branch remotely and branch of gh-pages again, fresh copy (and I'll manually paste the translations that I had done already).
Hopefully this should not cause any issues :)

it should be safer for me to delete my "pt" branch remotely and branch of gh-pages again, fresh copy (and I'll manually paste the translations that I had done already).

Probably yes.

@klapec Could you please make sure that's okay with the Polish version please? :)

Polish grammar is tricky, and I believe some of the abbreviations have to be declined (CSSie, CSSu, HTMLu, etc.)
I agree with your other points though. I wrote my translation with these in mind, except for few small things (like translating too long; didn't read). I'll fix it and do a PR.

I agree with your other points though. I wrote my translation with these in mind, except for few small things (like translating too long; didn't read). I'll fix it and do a PR.

You know the language better than I do.  The point is to make Sass Guidelines fluid and elegant in all languages. I trust you and any translator on this. :)

Could I have a rough overview of the current status on each translation? There is no rush whatsoever, it is only to get an estimation of which language might be ready when. Thanks in advance folks. :)
Ping all: @varemenos, @kmargaritis, @PatrickKDK, @pierrechoffe, @ttomdewit, @bartveneman, @klapec, @kaibrueckers, @altembo, @magalhini, @saravieira, @eduardoboucas, @couto, @soniar4i, @davidkpiano, @srescio, @pavelantolik, @grawl, @PavelDemyanenko.

German: 3/18 Chapters translated

Spanish: 5/18 chapters translated

French: 50% translated

Le 23 janv. 2015 à 18:22, Sonia C<EMAIL_ADDRESS>a écrit :
Spanish: 5/18 chapters translated
—
Reply to this email directly or view it on GitHub https://github.com/HugoGiraudel/sass-guidelines/issues/96#issuecomment-71229154.

At Russian we have successfully translated 5 full charapters and all other is translated as the base.

I've just committed the introduction, moving to _syntax.md

My part is almost done (Parts of Syntax, Introduction, Author, Contributing) and already living in my fork. All I need now is to finish off some details, review it and make it consistent with the other portuguese peers who are translating their bits :)

Alright. Glad to know things are moving forward. :)

Ping all: @varemenos, @kmargaritis, @ttomdewit, @bartveneman, @kaibrueckers, @altembo, @magalhini, @saravieira, @eduardoboucas, @srescio, @pavelantolik.
Out of curiosity, what is the current progress on your respective translation?

We've just started working on the Greek translation. There are like 2 .md files already translated and we will be pushing more soon. Hopefully, it will be ready in a week.

@varemenos No rush my friend, it was only to have an ETA. :)

I've slowed down a little due to business, I think 2 weeks at most and it should be ready for first release

I am kind of facing a dilemma here. I have version 1.0.1 ready to be merged (reviews welcome, if you are interested in contributing to the English version of course). Problem is, once I've merged 1.0.1, all translations become (slightly) outdated.
What is best at this point:

waiting for all translations to hit 1.0.0, even if it means postponing 1.0.1 for several weeks?
merging 1.0.1, then updating existing translations to 1.0.1 and releasing new translations straight to 1.0.1 as well?

Opinions needed.
Ping all: @varemenos, @kmargaritis, @pierrechoffe, @ttomdewit, @bartveneman, @klapec, @matchabros, @kaibrueckers, @altembo, @magalhini, @saravieira, @eduardoboucas, @couto, @soniar4i, @davidkpiano, @srescio, @pavelantolik, @grawl, @PavelDemyanenko, @kimdhoe, @pinggod, @airen.

I think I'd choose the second option, even though all the translations become outdated, people could update them without having to wait till all the versions are released.

I'd say go for option #2.

I think that second option with merging it today is a good approach, but additionally I suggest to add some banner with text like “this translation has outdated. see changelog to know what has changed in version 1.0.1”

but additionally I suggest to add some banner with text for outdated translations. like “this translation has outdated. see changelog to know what has changed in version 1.0.1”. also will be cool to add a word “(outdated)” to language name in a list to let users know about update before they are switched to their language version.

This is already in place actually.

It is in current deployed version or in 1.0.1?
I see only “This version is exclusively maintained by contributors without the review of the main author, therefore might not be completely up-to-date.”
I'm not about this. I'm about additional banner like about donation or mentioned above but red or something. Plus add a postfix to language select in sidebar.

Is it currently deployed. When viewing a translation (a.k.a not the English version), a message says:

This version is exclusively maintained by contributors without the review of the main author, therefore might not be completely up-to-date.

If the viewed version is lagging behind the English one (when comparing version key), the message says:

This version is exclusively maintained by contributors without the review of the main author, therefore might not be completely up-to-date, especially since it is currently in version 1.0.0 while the English version is in version 1.0.1.

Plus add a postfix to language select in sidebar.

Now this is interesting. I like it.

Plus add a postfix to language select in sidebar.

Done. Live in current version.

Please, when translating be sure to always translate alt attribute from images.

Okay this is what I am talking about. Like it.

The latter option seems better to me.

Hey kind folks! How are things going? :)
Ping: @varemenos, @kmargaritis, @ttomdewit, @bartveneman, @kaibrueckers, @altembo, @magalhini, @saravieira, @eduardoboucas, @srescio, @pavelantolik.

@kmargaritis and I have been buried in work lately so unfortunately things are progressing slowly.

Too much to do, too little time :(
But I reserved today for translating

@varemenos and I on the same line today.. Translating today!

Alright. I think I'll release 1.0.1 in two weeks or so. Probably around March 15th.

Hey! Do any of you managed to move forward with a translation? :)
Ping: @varemenos, @kmargaritis, @ttomdewit, @bartveneman, @kaibrueckers, @altembo, @magalhini, @saravieira, @eduardoboucas, @srescio, @pavelantolik.

Well, I'll try to avoid giving another excuse. We are slowly translating in our spare time and will eventually finish the translation. Hope that's not slowing down the progress of the project.

Well, I'll try to avoid giving another excuse.

Haha, there is no problem whatsoever. It is only to have an estimation of what's going on with unfinished translation.
On my side, I'll release next version next week I suppose.

having translated just 5 sections then paused due to heavy business I think it's better for me to wait for new version to be released, so I can spend less time re-aligning and work directly on the new one

Italian and Portuguese translations frozen until 1.1.0 gets out.

Sass Guidelines EN 1.1.0 has been released just now.

To those of you who already have translated version 1.0.0 successfully and want to add the additions from 1.1.0, the easiest way is described below.
Adding a remote
Before starting though, make sure you have set a remote. It should be the case already but just in case it is not, let's double check.
git remote -v

If it only shows something like:
# origin  https://github.com/YOUR_USERNAME/sass-guidelines.git (fetch)
# origin  https://github.com/YOUR_USERNAME/sass-guidelines.git (push)

Then you need to add a remote, else just skip that part.
git remote add upstream https://github.com/HugoGiraudel/sass-guidelines.git

Now, just to make sure everything works:
git remote -v
# origin  https://github.com/YOUR_USERNAME/sass-guidelines.git (fetch)
# origin  https://github.com/YOUR_USERNAME/sass-guidelines.git (push)
# upstream  https://github.com/HugoGiraudel/sass-guidelines.git (fetch)
# upstream  https://github.com/HugoGiraudel/sass-guidelines.git (push)

Syncing your fork
# Get changes from the original repository
git fetch upstream

# Go on the gh-pages branch
git checkout gh-pages

# Merge your local version with the one from the repository
git merge upstream/gh-pages

Translating Sass Guidelines 1.1
# Create a branch named after your language (e.g. `ru-1.1.0`)
git checkout -b <your_language>-1.1.0

Then, I suppose the easiest way to make sure you forgot nothing is to replicate the commits from the 1.1 pull request one by one. Open https://github.com/HugoGiraudel/sass-guidelines/pull/125 in a new tab, and apply commit one after the other.
For instance, the first one: https://github.com/HugoGiraudel/sass-guidelines/commit/4b400c50995bbda3d226725a871ccf98d552a28f. First, open the relevant files of your translation and apply changes. Then:
git add -A
git commit -m "Added extra further readings"

And then move on to the next one until you have applied them all. Once it is done, simply head into GitHub, and open a pull-request from your branch to the gh-pages one.
If you have any problem, please tell.
Ping @pierrechoffe, @klapec, @matchabros, @soniar4i, @davidkpiano, @grawl, @PavelDemyanenko, @airen, @pinggod, @kimdhoe.

No problem, I know how to use SourceTree 😄

@HugoGiraudel  what's the main changes?

@pinggod: https://github.com/HugoGiraudel/sass-guidelines/pull/125.

French version is now 1.1.0.

First draft of contributing guidelines pushed to the repository: https://github.com/HugoGiraudel/sass-guidelines/blob/gh-pages/CONTRIBUTING.md.

But where all the rules? For example, about what we should and what should not translate?

Hence the word draft. :)

Okay :) do you need our help? Maybe we should do some surveys?

Massive changes:

Table of contents is now automatically generated for each language; because of this, further reading-like headings are now level 6 (i.e. ###### Further reading) so they are not part of the ToC
Images now live in their own partial (_includes/images/); caption translations live in _data/translations.yml
Code snippets now live in their own partial for all versions in 1.1.0 (_includes/snippets/); versions still in 1.0.0 keep code as part of chapters

When zh version in 1.0.0, there are some error about ToC.
I pull request zh-1.1.0 just now, and wait for the result of changes.

@HugoGiraudel
When zh version in 1.0.0, there are some error about ToC.
I pull request zh-1.1.0 just now, and wait for the result of changes.

Chinese version successfully ported to 1.1.0 thanks to @pinggod.

The 7th translation of Sass Guidelines is released: this time in German by @morkro.

Can you change the czech translator guy to me? :)

Alright. :)

Current progress on v1.2.0: https://github.com/HugoGiraudel/sass-guidelines/pull/223.

:+1:
I have to finish the Czech version finally. :trollface:

That would be so great! :P

I have updated the existing CONTRIBUTING.md file at the root of the repository. It now contains enough information about how to deal with Git, especially regarding the existing branching system.
I also realised my translating guidelines emitted in the original description of this issue sucked. I have been bad at this, and I sincerely apology. To solve this problem, I created a TRANSLATING.md file at the root of the repository, containing a lot of information about what should be translated, what shouldn't, and how to get started.
Then each language folder should have its own README.md file containing language-specific notes. I created a template for this here: https://github.com/HugoGiraudel/sass-guidelines/blob/gh-pages/en/README.md. I would really appreciate if you all could copy this template in your own language folder, translate and fill it. Feel free to submit a small pull-request when it is done. Thank you. :)
PS: our kind Portuguese-speaking friends already started this on their side: https://github.com/HugoGiraudel/sass-guidelines/blob/gh-pages/pt/README.md.
Ping @pierrechoffe, @klapec, @matchabros, @morkro, @soniar4i, @davidkpiano, @grawl, @PavelDemyanenko, @airen, @pinggod, @kimdhoe, @AndersSchmidtHansen, @srescio, @HoBi, @ttomdewit, @bartveneman, @varemenos, @magalhini, @couto, @saravieira, @eduardoboucas.

Forgot to ping you two: @wood1y, @jhonnymoreira. :)

Sure, will add the README.md later :+1:

I've added a README.md to the Polish translation. It's not yet 100% complete, I'd like to have someone else's input first. Should I just go ahead and submit a PR for it now?
I've made a separate pl-1.2.0 repo and I'll use it in the future when 1.2.0 is released.

Should I just go ahead and submit a PR for it now?

Yes. Tag is [RFR], and ask for someone to review it. :)

I got a question regarding the two lists of either translated or untranslated words.
German is a bit of an exception here. We have this ability to turn any foreign word into a valid german one, by keeping the original word and just adding german stuff to it (like adding an article, postfixing it, ...), called Germanising. Where do I list them? It's not really translated in the classical way, but neither kept original. Should I ignore them in general?
I already asked some of my german colleagues and it's a difficult topic. It's still a technical term though, but made fit into proper german grammar.
For instance the term branch. The german term would be Zweig but in a technical context I would still refer to it as [...] der Branch [...]. It's english though, but the grammar changed to fit into proper german. It could now be used as a German term. :)
So, to sum this up. Is it okay if I may add a third list for "eingedeutschte" (germanised) terms?
Sorry for my little German lession here.

Maybe just explain this in the German README.md? :)

:+1: good point. I'll just add a little explanation regarding this then.

About 24 hours in, already 3 translations (on 9) have their own README.md. Let me tell that I am very proud to have contributors as you folks. Thank you so much.

Sass Guidelines 1.2.0 is live! :sparkles:
Dear friends, Sass Guidelines version 1.2.0 just got released with a lot of small additions (and a few bigger ones). A special thanks to @morkro for helping me proofreading everything.
What it means for you
Depending on the state of your translation, it can mean:

Updating it from 1.1.0 to 1.2.0 (in the best scenario)
Updating it from 1.0.0 to 1.2.0 (without forgetting changes from 1.1.0)
Translating it to 1.2.0 directly. It might be a bit tricky so what you can do I suppose is keep going until you're done with 1.1.0, and then apply the 1.2.0 changes. Your call.

In any case, please submit a pull-request when you are ready and we will work together to make sure the update is going seamlessly. :)
Changelog
Here is an informal changelog extracted from the commit messages from the 1.2.0 pull-request:

Updated the author section
Added something about argument-less mixins
Added something about extending the guidelines
Added a mention of SitePoint Sass Reference
Added a note about unitless zeros for durations
Reworked the extend section
Added a note about keyframes in 7-1 pattern
Removed section about debugging a Sass map
Clarified the postprocessors section
Removed a lot of irrelevant further reads
Changed the section about color formats
Fixed an invalid advice regarding import order in the main Sass file
Added something about the charset directive and single quotes
Slightly improved the “Utils folder” sub-section
Dramatically improved TL;DR section
Slightly improved the Contributing section

Ping @pierrechoffe, @klapec, @matchabros, @morkro, @soniar4i, @davidkpiano, @grawl, @PavelDemyanenko, @airen, @pinggod, @kimdhoe, @AndersSchmidtHansen, @srescio, @HoBi, @ttomdewit, @bartveneman, @varemenos, @margaritis, @magalhini, @couto, @saravieira, @eduardoboucas, @wood1y, @jhonnymoreira, @shadeed.

Awesome! Great work!
I'll do my best to squeeze in time for updating the Danish translations. We're swamped with todos right now, so I apologize beforehand if I don't get to updating it in the near future. :)

Important warning: Pay attention: the content of the commit https://github.com/HugoGiraudel/sass-guidelines/commit/4a4488864dd18888239290f8dc95b444e78b82e9 about reworking the @extend section has been changed as part of a later pull-request: https://github.com/HugoGiraudel/sass-guidelines/pull/259. Be sure to translate the content of that latter PR as well.
Ping @pierrechoffe, @klapec, @matchabros, @morkro, @soniar4i, @davidkpiano, @grawl, @PavelDemyanenko, @airen, @pinggod, @kimdhoe, @AndersSchmidtHansen, @srescio, @HoBi, @ttomdewit, @bartveneman, @varemenos, @margaritis, @magalhini, @couto, @saravieira, @eduardoboucas, @wood1y, @jhonnymoreira, @shadeed.

Will have a closer look at this sometime this week, @HugoGiraudel ! Thanks for the updates :)

Hey there,
It’s been a while since I haven’t checked up on you folks! It would be nice if you could give me the current status of your work (if any) for those of you who are moving from 1.1.0 (or even 1.0.0) to 1.2.0, and for those of you who are translating the guidelines in a new language for the first time.
Thank you for your understanding!
Ping @pierrechoffe, @klapec, @matchabros, @morkro, @soniar4i, @davidkpiano, @grawl, @PavelDemyanenko, @airen, @pinggod, @kimdhoe, @AndersSchmidtHansen, @srescio, @HoBi, @ttomdewit, @bartveneman, @varemenos, @margaritis, @magalhini, @couto, @saravieira, @eduardoboucas, @jhonnymoreira, @shadeed, @Mojtabarahimi8.

The Greek translation is almost done. It will be based on v1.2.0.
We are in the process of proof reading it.

Happy New Year dear contributors, and thank you for all the work you did on the guidelines in 2015. Needless to say I am super glad to have you onboard, and hope we can push this project even further in 2016. :)
Let me know if I can do anything to assist you!

À toi aussi mon cher Hugo, je te souhaite une très belle année et la réalisation de tes voeux les plus chers, tant personnels que professionnels. Continue de bien t’amuser chez ES, petit veinard !
Pierre

Le 3 janv. 2016 à 16:48, Hugo Giraudel<EMAIL_ADDRESS>a écrit :
Happy New Year dear contributors, and thank you for all the work you did on the guidelines in 2015. Needless to say I am super glad to have you onboard, and hope we can push this project even further in 2016. :)
Let me know if I can do anything to assist you!
—
Reply to this email directly or view it on GitHub https://github.com/HugoGiraudel/sass-guidelines/issues/96#issuecomment-168507900.

I am happy to be onboard! Also I'm planning to finally update russian translation up to latest version because I'm sharing it too much because this guideline is crazy good to start with.

Thank you so much @Grawl. I’m really looking forward to have the Russian translation up to date with the English one as it is the most needed and read translations of all. :)

In case you are interested, here are the numbers for the period 01.09.2015 — 01.01.2016.

Wow! Russian translation is very popular. It's a great reason for me to update it :)

Happy new year everyone! Damn those numbers are nice, didn't expect so much traffic for the translated versions. The greek translation was delayed once again but we are almost there like (99% done). I will be leaving for my 9 month mandatory military service in the 20th of this month so it will definitely be done by then.

Great traffic info, thanks :)
Would be great to see how many countries are visiting the english version though. For instance German is very low, is the rest browsing the English version or are Germans rare in general?

Hey there!
The Greek translation of Sass-Guidelines has finally been finished and released this morning, thanks to great work from our friends in Greece. :tada:
I also took this as an opportunity to remove the third component of version numbers as it turns out to be completely obsolete. We will now refer to version as 1.0, 1.1, 1.2, 1.3, etc.
Speaking of which, there currently is a pull request in progress for version 1.3 if you are curious: https://github.com/HugoGiraudel/sass-guidelines/pull/292.
Best! :)

Moving from semver? Better using it, or it will too hard to maintain?

The thing is we do not really need SemVer, and more than that: we cannot really use SemVer. As a reminder, for Sass-Guidelines the version number is used to keep translations in sync. If the document was only in English, it would not need to be versioned.
In theory, the third component of a SemVer version number is used for bug fixes. In this project, it would mean typos. Typos are not versioned; they are directly merged in the main branch.
Which leaves us with version bumps used for additions, updates and removals of content, such as those which happened in 1.1, 1.2 and soon 1.3. These need to be bundled in versions so that contributors like you can actually see what happened on the English version and update their translation accordingly.
Hope it makes it clearer. :)

Hey @soniar4i, @davidkpiano, @kimdhoe, @AndersSchmidtHansen, @magalhini, @couto, @saravieira, @eduardoboucas. Your translation is currently lagging behind the main one (1.1 against 1.2). Is there anything you need in order to update it? Can I do something to assist you? Or are you waiting for 1.3 to batch both versions into one go? Let me know. :)

Okay, sounds reasonable.

Korean 1.2 is almost there!

@kimdhoe Great news! Looking forward to it. :)

Hey there. I just merged PR #314 which introduces a relevant change for you contributors. The _data folder now contains one file per translation instead of a translations.yml and a languages.yml file. This will make diffs easier and generally makes more sense. :)

It does make more sense! :+1:

Sass Guidelines 1.3 is live! :sparkles:
Dear friends, Sass Guidelines (EN) version 1.3 just got released with a lot of small additions (and a few bigger ones).
What it means for you as a translator
Depending on the state of your translation, it can mean:

Updating it from 1.2 to 1.3 (in the best scenario)
Updating it from 1.0 or 1.1 to 1.3 (without forgetting changes from 1.1 and 1.2)

In any case, please submit a pull-request (e.g. [WIP] 1.3 French) when you are ready and we will work together to make sure the update is going seamlessly. :)
Changelog
Here it is.
Ping @pierrechoffe, @klapec, @matchabros, @morkro, @soniar4i, @davidkpiano, @grawl, @PavelDemyanenko, @airen, @pinggod, @kimdhoe, @AndersSchmidtHansen, @srescio, @HoBi, @ttomdewit, @bartveneman, @varemenos, @margaritis, @magalhini, @couto, @saravieira, @eduardoboucas, @wood1y, @jhonnymoreira, @shadeed.

Awesome :tada: Will update the German version this week.

Hey y’all beautiful people!
I would like to know if I can do anything to assist you in updating your translation to version 1.3. Do you feel confident upgrading it in the next few weeks? Else, shall I find you some support? Please, be sure to tell.
For instance, @nastiatikk is joining the Russian team to take over the current state of the Russian translation because @Grawl and @PavelDemyanenko do not have enough time. Welcome onboard!
Ping all: @pierrechoffe, @klapec, @matchabros, @morkro, @soniar4i, @davidkpiano, @grawl, @PavelDemyanenko, @airen, @pinggod, @kimdhoe, @AndersSchmidtHansen, @srescio, @HoBi, @ttomdewit, @bartveneman, @varemenos, @margaritis, @magalhini, @couto, @saravieira, @eduardoboucas, @jhonnymoreira, @shadeed, @nastiatikk.

I found git too hard to update translations. Maybe some crowdsource translating service (like ones noticed in this Quora page) will be better. Hunting for changes in commits for each file is terrible, but raw diff lurking is even harder.

I’d argue the difficulty to update the Russian translation partially comes from the fact that it is lagging behind by 3 versions. However I will definitely concede that content translation process could be improved, and I’m well willing to investigate any possibility.
On my end, I already made sure that no translation file has any HTML for instance, to make sure diffs are not polluted with irrelevant changes.

Rethinking the translation system
Hey there. I have been thinking a lot about the current translation “system” recently, only to come to the conclusion that it’s really not great even if it seems to work. It has certainly gotten much better over the past year (some of you might remember the early days when the whole guidelines were in a single file). However, it’s still far from ideal…
That being said, we have 12 different languages live, and 5 are currently in the pipes. That’s huge for such a small open-source project. We have to find a way to make it work for everybody, and in the simplest way possible.
What currently doesn’t work?
Translating the guidelines in a new language from scratch is actually not too hard. The main problem right now is updating a translation. Which is actually the most part of the translation work on Sass Guidelines. Let’s be honest, we don’t add a new language every day.
Their are two concurrent problems: it is hard to figure out what changed, and new versions are somewhat large (usually a dozen commits, involving a couple of hours of translation work). The current process for updating a translation is to check the changelog, and to reproduce commits one by one. Not ideal. Translators do not really care about why something changed. They just want to know what changed and what they have to do on their translation to make it up-to-date.
This also means that translators currently need a bit of Git knowledge and that really sucks. Translation work has nothing to do with versioning, and someone with little to no technical background should be able to join and help. GitHub interface is able to bridge the gap a little, but I am not sure it’s enough given the current state of things. Which leads me to the next point.
On top of that, translators currently have to have some knowledge about the project and its technical setup. It is not mandatory to be able to run the project locally, but knowing where to find what and how it generally works appears like a prerequisite right now. Still, it should not. A translator should not have to know anything about the project setup. They should only be presented with content to be translated. Ideally, this content should be decoupled from any technical consideration.
Last but not least, as of today translators join to maintain a full version. While it is very good for consistency, it also asks a lot of time from them, sometimes more time than they can actually afford. I don’t want to force anybody do anything, especially given that it’s a non-profit open-source project. That’s also why I think the current system is broken. Someone should be able to come and translate a few sentences then leave, the same way translations work on Wikipedia for instance. Then, everybody could participate as much as they want, little by little.
What can we do?
I will be entirely honest with you and admit that I am not sure. I have little to no experience with internationalisation, and Sass Guidelines is pretty much a playground for me here. Needless to say I am incredibly happy and lucky to have you all onboard and willing to help making this project available for the many. 12 languages is more than I ever wished for, and I sincerely hope we can onboard even more in the future.
But if we want to make this work on the long run, and be able to onboard new translators for existing or new languages, we need to simplify the way it works right now.
I suppose that the best way would be to move towards a dictionary based system. Basically, every single chunk of content should be mapped to a key, that would be shared between all translations. The Jekyll layer would get the correct content based on the current language and the key. This is how it works right now with the “UI translations” in the _locales folder (Twitter button, donate partial, site baseline, etc.). We would need this for the whole thing, not only the UI.
From there, there are a lot of options. We could either have a web interface to access these dictionaries (format to be defined: YAML, XLIFF, JSON, PO, etc.) such as Pootle. Or even a desktop application like Poedit, even if I think that makes it harder so probably not a good idea. There are more services allowing a similar workflow; I found Zanata, POEditor and Transifex (although too expensive). I need to benchmark them a bit because I have no clue how they work.
Then translating some content or updating a translation would be as simple as accessing the dictionary of the relevant language (via a web UI for instance), change the content and save it. On my side, I will have to sync and deploy the translations on a regular basis, but that is really the easy part at this point.
Any thought?
So here we are folks. I need your opinion on this.
What do you like in the current workflow?
What don’t you like?
What do you find annoying?
What would be ideal for you?
Do you have any hint?
Do you have any experience on translating content through a third-party service?
Please, speak your mind freely. I am really interested in anyone’s opinion.
Ping all: @pierrechoffe, @klapec, @matchabros, @morkro, @soniar4i, @davidkpiano, @grawl, @PavelDemyanenko, @airen, @pinggod, @kimdhoe, @AndersSchmidtHansen, @srescio, @HoBi, @ttomdewit, @bartveneman, @varemenos, @margaritis, @magalhini, @couto, @saravieira, @eduardoboucas, @jhonnymoreira, @shadeed, @nastiatikk.

I have an experience with Poedit and gettext and found it nice to work with. But I have nothing to say about updates. Nor I translated a content once, nor a few updates, but not versions.

In my opinion you should:

extract translations in dedicated files with a key / value pair. In some formats, it's possible to use complex keys so it should be possible to use the english version as a key (but keep the possibility to overload the english version)
extract translation files in a dedicated repository, used as a submodule: it will permit to send PR notifications to translators for changes in translations and not for changes in the source code. The better should be to trigger notifications only when the default version (english one) has some changes and not for every translation PR.

I worked recently on a translation project for a CMS (PresideCMS from the UK). The team used Zanata, which worked out very well. Very comfortable and easy to use. The output was managed by the project leader and the string ended in their repository as files with the extension ".properties." The problems i experienced are more on the human side:

People translated text without using the software, ending having translated strings without a context.
Not enough space in the UI: German strings are needing more space rather than english strings. French strings are consuming sometimes 50% more space rather than the english strings.
Sometimes technical strings where, let's say "overtranslated". E.G. a "Spool folder" can be translated to "Spool-Ordner" for the german language.
For a lot of CMS related translations, the world is using a kind of standardized strings. It might help to see how other products are looking in a foreign language.

In a other project (Pydio from France) i worked, we had to edit the i18n files directly. This worked out pretty good too. The benefit was, that a search and replace for some simple strings-types where possible, which saves time. The problem might be a merge in the repository, if several people are working on the same files. This can cost time for sure.
Independly, how the translation is organized, future updates can cause problems. E.g. The application gets new strings, which needs more translation.
I think, it is important, that the translated strings of an application are splitted to many smaller modules instead of having a big file.

Hello y’all!
What is the current status with the update of your translation to 1.3? Shall I try to find some help for you on Twitter maybe? Please keep me updated. :)
Cheers!
@klapec, @matchabros, @soniar4i, @davidkpiano, @grawl, @PavelDemyanenko, @airen, @AndersSchmidtHansen, @srescio, @HoBi, @ttomdewit, @bartveneman, @varemenos, @margaritis, @magalhini, @couto, @saravieira, @eduardoboucas, @jhonnymoreira, @shadeed, @nastiatikk.

I am super happy to introduce the Italian version (1.3) to the party: https://sass-guidelin.es/it/! :tada:

@HugoGiraudel  what is the story about the pt-br translate?

I think the main problem right now is that it’s not up to date. :)

@HugoGiraudel  I can try Help on this, but pt is related to Portuguese from Portugal, pt-br is related to  Portuguese from Brazil, Off course is very similar but exist few differences when you write a phrase or word. I could not see pt-br , I will fork the project create a branch and start from scratch , I will try translare a session everyday, I will create a new Issue topic related for that if you don't mind. what do you think?  thank you.

Sure. I’m fine with having a PT-BR translation if you feel like doing it. Keep me updated. :)

@HugoGiraudel I've been through some stuff the last few months and kept myself away from everything related to programming. I got back this month and I saw @douglasdeodato interest on help. I'll try to set things up with him to deliver the most recent translation since I'm available full time right now [=

@jhonnymoreira  Hi Jhonny , off course we can start do this together why not 👍

Hey y’all lovely contributors! I wish you a happy new year! ✨
Would you mind telling me if you plan on updating your translation (if not up-to-date) or if I should look up for some help from new translators? I’d like to have a rough idea of the team for the next few months. :)
Best!

Hi Hugo,
I won't be able to update the Danish translations for the time being due to
work. Sorry.
Hope you'll find someone to take over. :-)
Happy new year to you too!
Best,
Anders Schmidt Hansen
Co-Founder, Developer & Designer
Pitcherific
http://t.sidekickopen70.com/e1t/c/5/f18dQhb0SmZ58dDMPbW2n0x6l2B9nMJW7sM9dn7dK_MMdBzM2-04?t=https%3A%2F%2Fpitcherific.com%2F&si=5492243200999424&pi=c5756254-080b-4355-f8fe-da00a59a05c4
Prepare Better Pitches. In Record Time.
LinkedIn
http://t.sidekickopen70.com/e1t/c/5/f18dQhb0SmZ58dDMPbW2n0x6l2B9nMJW7sM9dn7dK_MMdBzM2-04?t=https%3A%2F%2Fdk.linkedin.com%2Fin%2Fandersschmidthansen&si=5492243200999424&pi=c5756254-080b-4355-f8fe-da00a59a05c4
| Articles
http://t.sidekickopen70.com/e1t/c/5/f18dQhb0SmZ58dDMPbW2n0x6l2B9nMJW7sM9dn7dK_MMdBzM2-04?t=http%3A%2F%2Fblog.pitcherific.com%2F&si=5492243200999424&pi=c5756254-080b-4355-f8fe-da00a59a05c4
| Twitter
http://t.sidekickopen70.com/e1t/c/5/f18dQhb0SmZ58dDMPbW2n0x6l2B9nMJW7sM9dn7dK_MMdBzM2-04?t=https%3A%2F%2Ftwitter.com%2FTryPitcherific%2F&si=5492243200999424&pi=c5756254-080b-4355-f8fe-da00a59a05c4
http://t.sidekickopen70.com/e1t/c/5/f18dQhb0SmZ58dDMPbW2n0x6l2B9nMJW7sM9dn7dK_MMdBzM2-04?t=https%3A%2F%2Fwww.linkedin.com%2Fin%2Fandersschmidthansen&si=5492243200999424&pi=c5756254-080b-4355-f8fe-da00a59a05c4
On 16 January 2017 at 12:05, Hugo Giraudel<EMAIL_ADDRESS>wrote:

Hey y’all lovely contributors! I wish you a happy new year! ✨
Would you mind telling me if you plan on updating your translation (if not
up-to-date) or if I should look up for some help from new translators? I’d
like to have a rough idea of the team for the next few months. :)
Best!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/HugoGiraudel/sass-guidelines/issues/96#issuecomment-272832759,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AC-TgifzLyhGRT5RtpQ8c7mmvl4Sm-YKks5rS07zgaJpZM4DTgX4
.

I will still maintain the German translation 🙋🏻

Hi everyone!
I hope I can update the spanish version soon :)
2017-01-16 12:06 GMT+01:00 Anders Schmidt Hansen<EMAIL_ADDRESS>
Hi Hugo,
I won't be able to update the Danish translations for the time being due to
work. Sorry.
Hope you'll find someone to take over. :-)
Happy new year to you too!
Best,
Anders Schmidt Hansen
Co-Founder, Developer & Designer
Pitcherific
<http://t.sidekickopen70.com/e1t/c/5/f18dQhb0SmZ58dDMPbW2n0x6l2B9nM
JW7sM9dn7dK_MMdBzM2-04?t=https%3A%2F%2Fpitcherific.com%
2F&si=5492243200999424&pi=c5756254-080b-4355-f8fe-da00a59a05c4>
Prepare Better Pitches. In Record Time.
LinkedIn
<http://t.sidekickopen70.com/e1t/c/5/f18dQhb0SmZ58dDMPbW2n0x6l2B9nM
JW7sM9dn7dK_MMdBzM2-04?t=https%3A%2F%2Fdk.linkedin.com%
2Fin%2Fandersschmidthansen&si=5492243200999424&pi=c5756254-
080b-4355-f8fe-da00a59a05c4>
| Articles
<http://t.sidekickopen70.com/e1t/c/5/f18dQhb0SmZ58dDMPbW2n0x6l2B9nM
JW7sM9dn7dK_MMdBzM2-04?t=http%3A%2F%2Fblog.pitcherific.com%
2F&si=5492243200999424&pi=c5756254-080b-4355-f8fe-da00a59a05c4>
| Twitter
<http://t.sidekickopen70.com/e1t/c/5/f18dQhb0SmZ58dDMPbW2n0x6l2B9nM
JW7sM9dn7dK_MMdBzM2-04?t=https%3A%2F%2Ftwitter.com%2FTryPitcherific%2F&si=
5492243200999424&pi=c5756254-080b-4355-f8fe-da00a59a05c4>
<http://t.sidekickopen70.com/e1t/c/5/f18dQhb0SmZ58dDMPbW2n0x6l2B9nM
JW7sM9dn7dK_MMdBzM2-04?t=https%3A%2F%2Fwww.linkedin.com%2Fin%
2Fandersschmidthansen&si=5492243200999424&pi=c5756254-
080b-4355-f8fe-da00a59a05c4>
On 16 January 2017 at 12:05, Hugo Giraudel<EMAIL_ADDRESS>wrote:

Hey y’all lovely contributors! I wish you a happy new year! ✨
Would you mind telling me if you plan on updating your translation (if
not
up-to-date) or if I should look up for some help from new translators?
I’d
like to have a rough idea of the team for the next few months. :)
Best!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<https://github.com/HugoGiraudel/sass-guidelines/issues/96#issuecomment-
272832759>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AC-
TgifzLyhGRT5RtpQ8c7mmvl4Sm-YKks5rS07zgaJpZM4DTgX4>
.

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/HugoGiraudel/sass-guidelines/issues/96#issuecomment-272833076,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACOpnRV57H-nzW6I-FRbP2YhpRmhxQkcks5rS09MgaJpZM4DTgX4
.

Ping @klapec, @matchabros, @davidkpiano, @grawl, @PavelDemyanenko, @airen, @srescio, @HoBi, @ttomdewit, @bartveneman, @varemenos, @margaritis, @magalhini, @couto, @saravieira, @eduardoboucas, @jhonnymoreira, @shadeed, @nastiatikk.
(Sorry for the spam, I just would like to make sure everyone can be notified on my last message. 😊)

@margaritis and I will continue to work on the Greek translation.

@HugoGiraudel I can take a look at PT-PT translation and see what is missing :)

@SaraVieira The Portuguese translation is currently in 1.1 (English in 1.3). If you would like to sync it, I’d be happy to let you get started. :)

@HugoGiraudel Already started by creating the branch and I am going commit by commit to see what is missing.
Should I add a pull request when I reach 1.2 or only on 1.3 ?

It depends on how you want to do it. It might be easier to move from 1.1 to 1.2, then 1.2 to 1.3 and therefore to send 2 PRs in total.
Commits from 1.2: https://github.com/HugoGiraudel/sass-guidelines/blob/master/CHANGELOG.md#120-september-1st-2015.
Commits from 1.3: https://github.com/HugoGiraudel/sass-guidelines/blob/master/CHANGELOG.md#130-march-1st-2016
If you have any doubt or question, please ask. :)

@HugoGiraudel I will continue supporting the French translation.

@HugoGiraudel can you please give me push access so I can send the modifications to the branch?

@SaraVieira You could also fork the repository on your own GitHub account and create a PR from here? If you cannot do that for any reason, please ask and I’ll give you write access. :)

@HugoGiraudel
@airen and I will no longer support the Chinese translation(its latest version is 1.3).

@HugoGiraudel Np, I forked the repository and I'm bumping it to 1.2

@SaraVieira Let me know if I can be of any help.
@pinggod @airen Thank you for all you’ve done. :)

@HugoGiraudel tomorrow I will have my last exam in a semester and then I wanna do a big update with translation.

@HoBi Awesome to hear. Let me know if I can help. :)

@HugoGiraudel I'll catch up slowly. 🏃

@kimdhoe Terrific. If I can help in any way, please ask.

@HugoGiraudel Do you need help to update portuguese translation?

@JLammeer Help is always welcome. The Portuguese translation is 2 versions behind (currently 1.1) so there is quite a bit of work to update it. If you feel like it though, I’ll be happy to merge a PR. :)

The Portuguese version has been successfully updated to v1.3 thanks to @JLammeer’s hard work! Thank you so much. :) ✨

I'm happy to help.

I’m very happy to announce that the Russian version is now up-to-date in 1.3 thanks to @arbaev fantastic work: https://sass-guidelin.es/ru/! ✨

Hello friends,
I realized it would be nice to have the translation disclaimer in the current page language instead of always in English. So I was wondering if you could help me translate these 2 sentences.

You are viewing the {language} translation from {translator A} and {translator B} of the original Sass Guidelines from Kitty Giraudel.
This version is exclusively maintained by contributors without the review of the main author, therefore might not be completely authentic.

Note:

{language} is the name of your language.
I will replace {translator A} and {translator B} (and more when needed) with your names. 😅
I will deal with the implementation, I just need your help with translations. :)

Thank you! 💖

U bekijkt de nederlandse vertaling van Noah van der Veer van de originele Sass-richtlijnen van Kitty Giraudel.
Deze versie wordt exclusief onderhouden door bijdragers zonder de beoordeling van de hoofdauteur en is daarom mogelijk niet volledig authentiek.

Thank you @KittyGiraudel! Here's the German version:

Du schaust dir gerade die deutsche Übersetzung von Moritz Kröger der originalen Sass Guidelines von Kitty Giraudel an.
Diese Version wird exklusiv durch die Übersetzer gepflegt, ohne zusätzliche Überprüfung des Hauptautors, und mag deshalb nicht vollständig authentisch sein.

Here is the Greek version, courtesy of @modkaffes
Βλέπετε την ελληνική μετάφραση των Μόδεστο Καφφέ, Σεμπαστιέν Νικολάου, Άδωνη Κακουλίδη και Κωνσταντίνου Μαργαρίτη για τις πρωτότυπες Οδηγίες για Sass των Kitty Giraudel.
Αυτή η έκδοση συντηρείται αποκλειστικά από συνεισφέροντες χωρίς τον έλεγχο του κύριου συντάκτη, επομένως μπορεί να μην είναι εντελώς αυθεντική.

@KittyGiraudel could you please include @modkaffes and @sebdesign in the list of Greek translators? They are included in the website but not in this issue (which is most likely my fault 😞).

💢 به روزرسانی مارس '21: برای حفظ ترجمه های لهستانی ، چکی و دانمارکی کمک می خواهید.
بگذارید این موضوع را باز کنم تا بتوانم با همه شما عزیزان که موافق ترجمه یکباره دستورالعمل ها هستند صحبت کنم. اگر هرکدام از شما در مورد چیزی س anythingال دارند ، لطفاً آزادانه بپرسید!
شروع شدن

برای کسب اطلاعات بیشتر در مورد Git و سیستم انشعاب مورد استفاده ، CONTRIBUTING.md را بخوانید .
برای کسب اطلاعات بیشتر در مورد نحوه ترجمه واقعی دستورالعمل ها ، TRANSLATING.md را بخوانید .

توجه: اگر به جای شروع کار از ابتدا ترجمه را به روز می کنید ، با CHANGELOG.md به خود کمک کنید .
ارسال کار خود

مطمئن شوید نسخه شما با masterشعبه فعلی به روز است .
ارسال درخواست کشش در برابر masterشاخه بر روی GitHub.
دیگه تموم شد

ترجمه ها
وضعیت	زبان	نسخه	مترجمان
✅	چینی ها	1.3	کمک خواست
✅	آلمانی	1.3	morkro
✅	فرانسوی	1.3	pierrechoffe
✅	ایتالیایی	1.3	MakhBeth ، mattcav
✅	یونانی	1.3	varemenos ، margaritis
✅	اسپانیایی	1.3	@ soniar4i ، davidkpiano
✅	پرتغالی	1.3	@magalhini, @Couto, @SaraVieira, @eduardoboucas, @hunkjazz
✅	Russian	1.3	@irene-97, @PavelDemyanenko, @nastiatikk, @Afsaneh

Stai leggendo la traduzione italiana di Davide Di Pumpo e Matteo Cavucci delle originali linee guida per Sass di Kitty Giraudel.
Questa versione è mantenuta esclusivamente dai collaboratori, senza la revisione dell'autore principale. Per questo potrebbe non essere completamente autentica.


Problem with windows version

Traceback (most recent call last):
File "C:\Python27\Scripts\anime-script.py", line 11, in
load_entry_point('anime-downloader==2.4.1', 'console_scripts', 'anime')()
File "C:\Python27\lib\site-packages\pkg_resources_init_.py", line 476, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "C:\Python27\lib\site-packages\pkg_resources_init_.py", line 2700, in load_entry_point
return ep.load()
File "C:\Python27\lib\site-packages\pkg_resources_init_.py", line 2318, in load
return self.resolve()
File "C:\Python27\lib\site-packages\pkg_resources_init_.py", line 2324, in resolve
module = import(self.module_name, fromlist=['name'], level=0)
File "build\bdist.win-amd64\egg\anime_downloader\cli.py", line 9, in
File "build\bdist.win-amd64\egg\anime_downloader\players\mpv.py", line 1, in
File "C:\Python27\lib\site-packages\anime_downloader-2.4.1-py2.7.egg\anime_downloader\players\baseplayer.py", line 8
class BasePlayer(metaclass=ABCMeta):
^
SyntaxError: invalid syntax

There are a few problems with your setup. Clear them and you're good to go.

You need python 3.
The latest version is 3.1.1. You seem to be using 2.4.1.

Thanks that worked.
OFF TOPIC
I am first year cs student studying in pune
just started learning programming what are some tips, advice, resources
since you are/were in IIT and this looks like a complex program and you know your stuff.

Hi, @joshua-612. I'm a first year student too.

this looks like a complex program

Trust me, it's not.

you know your stuff.

I'm still a beginner.
If you don't know any programming language, I'll suggest you learn a language first. Python, IMO, is the easiest language to learn.
If you already know the basics of python, you can contribute to open source projects or create your own (open source) project as a means to learn more.
I'm also closing this issue as it seems to be resolved. If you have questions, feel free to ask in this thread.

How and when did you first got started ? Should i make small games or solve challenges on code-chef for practice as a beginner.

Should i make small games or solve challenges on code-chef for practice as a beginner.

If you interested in competetive programming, you should challenges on code chef. I have never really made any games, so I can't comment on that.


Action subscription in components

Sometimes I want to subscribe my components on actions.
For example:

LoginFormContainer should redirect user to some page when LOGIN_FULFILLED action is dispatched
CommentFormContainer should show alertify.js popup when COMMENT_CREATE_FULFILLED

I understand that I can implement this with flags in store and componentWillReceiveProps lifecycle method. Also, this is achievable with store, which can be found in context or custom middleware. But I think both ways are not very convenient.
I propose adding one more wrapper to react-redux which will be called subscribe. Example usage:
export default subscribe(/* some configuration which should be discussed */)(SubscribedComponent)

/*Or, in combination with connect */

export default connect(/*...*/)(subscribe(/* some configuration which should be discussed */)(SubscribedComponent))

/*
I know, that combination with connect function seems not very beautiful, but decorators can save us (I hope, one day we will se them in ECMAScript standard)
*/

@connect(/*...*/)
@subscribe(/*...*/)
export default class SomeContainer extends Component{

}

I created a gist with subscribe pseudo-code implementation
P.S. The other way is adding one more argument to connect() and implementing action subscription there. As for me, I don't think that this is a good idea, but it should be discussed.
P.P.S If there will be a PR with such functionality, has it chance to be merged? Or action subscription contradicts with redux/flux philosophy?

This doesn't fit in with the React lifecycle model. Your component should be willing to change how it renders or does certain things depending on the props passed to it. If you need to handle a particular action, that's business logic that should be encapsulated in your reducer(s). This conflates two separate concerns too directly, leading to coupling and less scalable code.

This is also a good use case for redux-saga or other similar middleware.


remove set -x from setvariable tasks

following https://developercommunity.visualstudio.com/t/pipeline-variable-incorrectly-inserts-single-quote/375679#T-N394968
This should fix the release issue where a single quote is added to the parsed version

/azp run


[GLUEGEN] Fix some compile errors (needed for #344)

The gluegen does not build using GCC 6.2.0, I have fixed some compile errors.

Nice :) looks very good, thank you!


[SE-0160] [PrintAsObjC] Adopt Clang's new diagnose_if attribute.

When available, use Clang's new diagnose_if attribute to mark
Objective-C methods/properties that were generated based on the @objc
inference rules that have been removed from Swift 4. The diagnose_if
warnings aren't likely to be accidentally disabled or hidden by other
deprecated code.
Fixes rdar://problem/32370734.

@swift-ci please smoke test and merge


Jinja template is not updated when using an alert-specific alert_text

To reproduce, in rule.yml add the following parameters:
alert_text_type: alert_text_jinja
alert_text: "Test"
alert:
  - slack:
      alert_text_type: alert_text_jinja
      alert_text: |
        An abnormal number ({{spike_count}}) of events occurred.

This is done as described in the documentation
You will then notice that your alert on Slack will not use the relevant Jinja template when using the FileRulesLoader.
The most likely cause is that the Jinja template is not recompiled as in https://github.com/jertel/elastalert2/blob/master/elastalert/loaders.py#L469, and therefore a wrong template (the one using the alert_text at the root of the config) is used.

It looks like you could take lines 469-474 and and re-use them after line 522, preferably in a re-usable load_template() function. Feel free to submit a PR if you're interested in seeing this behavior changed for the next release.


Percentage of word files

This story adds metrics for the percentage of word files. I created a number of files similar to that for the Pdf metrics and done some refactoring. I wasn't sure how much I should refactor so would really value some feedback in that area especially.
Trello

 (3) Percentage of Word files


Metrics/GenevaActions for Clustersync

Which issue this PR addresses:

ARO-9545  and ARO-8659 both JIRA's have common code
What this PR does / why we need it:

Create new clustersync metrics under monitor package. Both syncSets and selectorSyncSets should be merged into the same Geneva metric.
Create a Geneva Action to show the clustersync resource of a cluster.

Test plan for issue:
Unit test cases added.
Need to create respective metrics dashboard in Geneva.
Is there any documentation that needs to be updated for this PR?
Will create TSGs for respective metrics.
How do you know this will function as expected in production?
Monitor from Geneva Dashboard.

/azp run

/azp run

/azp run ci


value validation

Hi,
I'm using this component to format/mask a phone number.
MASK: ['(', /[1-9]/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]

It works very nicely for input masking, but i'm wondering is there is a way to check is the input value conform with the mask expression, so that we can make the input "invalid" (ex: prevent form submission).
I was expecting something like the `conformToMask' to return false for a number that is incomplete/invalid.

My current solution for this is using the _ guide char and check for it in order to check it the input value is valid.
I think this is fragile.

@cguedes  I'm struck at same place could you add your code here ?

@sraveen123 I've used a simple check with text.indexOf('_') !== -1

Is there any other way ?
initial contact state = '(0  )    -    '
console.log(contact.length) // 15
!!(contact.indexOf('') !== -1)  works but i would like not to have '' in the form.
after adding 'placeholderChar={'\u2000'}' in the MaskedInput component,
!!(contact.indexOf(' ') !== -1)  // only returns true

this is lame,  absence of a such common and useful feature, a simple callback prop would to the trick or a filled flag e.g.


[NativeAOT] improve build logic, part 2

This is another set of changes to Android apps to run under NativeAOT:

Default to $(TrimMode)=Full for NativeAOT, this enables trimmer warnings and should be the default mode for NativeAOT.

Ensure _PrepareLinking MSBuild target runs at the appropriate time. This was causing Android.App.Activity's GetOnCreate_Landroid_os_Bundle_Handler() to get trimmed away.

Default to $(LinkerFlavor)=lld to avoid a java.lang.UnsatisfiedLinkError at runtime.

Include libc++_shared.so to avoid a java.lang.UnsatisfiedLinkError at runtime.

Emit JavaPeerStyle.JavaInterop1 java stubs for NativeAOT, as it is easier to get working in place of JavaPeerStyle.XAJavaInterop1.

I updated our existing NativeAOT() to assert for these changes where possible.

/azp run

There is one failure, that is probably network-related:
Mono.Android.NET_Tests, Xamarin.Android.NetTests.AndroidMessageHandlerTests.ServerCertificateCustomValidationCallback_Redirects / Release
Expected: 2
But was:  1

I think we can ignore, as these changes shouldn't affect it.

Draft commit message:
Context: 8d7713071c40766651664de25b53eb15225785d0
Context: https://github.com/dotnet/android/pull/9630

We're exploring how to get .NET for Android apps to build and run
using [Native AOT][0].

Default to `$(TrimMode)=Full` for NativeAOT, this enables trimmer
warnings and should be the default mode for NativeAOT.

Ensure the `_PrepareLinking` MSBuild target runs at the appropriate
time.  Failure to do so was causing
`Android.App.Activity.GetOnCreate_Landroid_os_Bundle_Handler()` to be
trimmed away.

Various fixes to avoid `java.lang.UnsatisfiedLinkError` errors:

  * Set `$(LinkerFlavor)=lld` by default to avoid:

        E AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__start___modules" referenced by
          "/data/app/~~_ggpMC4foLk_jUUycm0CfA==/net.dot.hellonativeaot-fvszIWroqgweLHYgULxVoQ==/split_config.arm64_v8a.apk!/lib/arm64-v8a/libNativeAOT.so"...

  * Include `libc++_shared.so` within the app, as Native AOT output
    requires C++:

        E AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: library "libc++_shared.so" not found: needed by
          /data/app/~~_W0B9EE3hhajnFvCHyUKSg==/net.dot.hellonativeaot-zlXemqHdkbHaLu60oYPVQQ==/lib/arm64/libNativeAOT.so in namespace clns-6

Emit `JavaPeerStyle.JavaInterop1` java stubs for NativeAOT, as it is
easier to get working in place of `JavaPeerStyle.XAJavaInterop1`.
Specifically, we need to be able to avoid P/Invokes related to
typemaps/etc.  XAJavaInterop1 hits `JNIEnvInit.RegisterJniNatives()`,
which is full of P/Invokes such as `TypeManager.GetClassName()`,
while `JavaInterop1` hits `ManagedPeer.RegisterNativeMembers()` which
goes through `JniRuntime` abstractions, allowing for a P/Invoke-free
code path.

I updated `BuildTest2.NativeAOT()` to assert for these changes where
possible.

[0]: https://learn.microsoft.com/dotnet/core/deploying/native-aot/


Resample is only at a constant frequency

At the moment we just pass in a fixed resample_frequency to run_pipeline.
The Anthropic paper resamples after 200M activations - but only for the first 1B tokens, after which they no longer resamplel
Options:

More flexible frequency - could pass in a list of intervals?
Just use multiple calls to run_pipeline.

also, if we're going down the route of multiple calls to run_pipeline, resample_frequency should have a None/falsy option.
Happy to implement either, do you have a preference @alan-cooney?

my preference would probably be to keep it simple internally and just do multiple calls but i feel like the library is designed around max flexibility so perhaps it should be configurable?

I'm wondering if we need to delegate all of this to the resample class, so it's removed from the already bloated pipeline?
Maybe we call the resampler with the neuron activity for every batch, and most of the time it can just update aggregate metrics but sometimes it will do a full resample? The only thing we'd want to keep in the pipeline is then calling it and updating the model and optimizer state if it responds with anything (as we don't want to couple the class state updates).
What do you think?

(deleted previous version of my comment as i hadn't read yours properly)
Yeah I think that makes sense, I was thinking of just passing a function to the resampler class on init which takes an int (i suppose total_steps but could be steps_since_resampled) and returns a binary on whether or not to resample.
Could definitely go your route - concretely I guess you'd retain the update section of resample_neurons as a parameter_update function, and the resampler class gets a more general function that decides whether to run the main resample_dead_neurons and returns either None or a structured tuple of parameter updates. That sound right?

Tried to fix this with PR #105


alternative login/register from another OAuth i.e.

Actually it is quite cool to use this as an auth service that handles different apps or resource servers. I want to use it as an central auth instance. So the only point that is missing actually for it is that I can login/register alternatively with Facebook or Google or something like this at the Auth Service.
I did this quite easy with my own rest app. But here it is more difficult because the login does not have an email or password. So providing an alternative route for the login with another Auth service seems logical and I could generate the key and death counter by my own.
But this seems messy.
Do you have any better thought how to integrate it in your existing flow, so that this ecosystem is able to be connected by other ecosystems like FB or Twitter or what else?

My first thoughts is:

Create controller like AuthController inherit it from filsh's DefaultController to replace current flow to get token
Take a look at this solution and try to use it: attach auth (or, maybe, fbauth) action and implement you own onAuthSuccess method.
This method should prepare \OAuth2\Request object with new grant_type and needed data (token from FB etc.) and run $server->handleTokenRequest($request). The result will be accees_token
But before it you need to create handler for your new grant_type (as filsh\yii2\oauth2server\grants\UserAuthCredentials).

I don't know if all described will be worked, I've implemented such functionality (but I plan to do it later). But you can try :)

Okay 1 and to 2 are clear to handle the http call correct?
But when I want to get in 3 I struggle a bit. The \OAuth2\Request provides me what is sent with \OAuth2\Request::createFromGlobals(). The handler is clear to check if everything is fine and give a response about it.
But I don't understand how to prepare the object and how filsh attached the handler to the method.
From the flow it would be within the method:
get data
check if necessary data is given
validate data
run $server->handleTokenRequest($request) for the user
Am I right?

sorry closed it accidently

Attach new grant type handler you can in configurations (look here lines 23-33 - attached client_credentials, user_credentials, refresh_token)
The main idea of "prepare request" is to set right grant_type (= yours grant type handler id) and token to external service. I think, you can do like this:
"""
$request = new \OAuth2\Request([], ["grant_type" => "external_service_credentials", "token" => ]);
$server->handleTokenRequest($request)
"""
About flow - yes, I think it's right!

My actual try was to add an extra grant_type federation_credentials e.g:
'grantTypes' => [
				'client_credentials' => [
					'class' => 'OAuth2\GrantType\ClientCredentials',
					'allow_public_clients' => false
				],
				'user_credentials' => [
					'class' => 'OAuth2\GrantType\UserCredentials'
				],
				'refresh_token' => [
					'class' => 'OAuth2\GrantType\RefreshToken',
					'always_issue_new_refresh_token' => true
				],
                'federation_credentials' => [
					'class' => 'components\auth\ExternalCredentials'
                ]
			],

ExternalCredentials as class should be similar to bshaffer GrantType ?
So this is the response from facebook e.g after the login there:
accessToken: "TOKENCODE"
expiresIn: 6029
signedRequest: "FANCYCODE"
userID: "123456789"

I post this information to a custom URL v1/auth/token or something like this and validate this data via my new credential in components\auth\ExternalCredentials.
Afterwards I can do some fancy stuff in the controller for that URL that I inherited from  filsh's one.
Actually I stuck at the new credential type for the reason that it returns an 500 error with:
{
  "name": "Invalid Configuration",
  "message": "Invalid grant types configuration.",
  "code": 0,
  "type": "yii\base\InvalidConfigException",
  "file": "/var/www/api/vendor/filsh/yii2-oauth2-server/Module.php",
  "line": 79,
  "stack-trace": [
    "#0 /var/www/api/vendor/filsh/yii2-oauth2-server/filters/ErrorToExceptionFilter.php(22): filsh\yii2\oauth2server\Module->getServer()",
    "#1 (): filsh\yii2\oauth2server\filters\ErrorToExceptionFilter->afterAction()",
    "#2 /var/www/api/vendor/yiisoft/yii2/base/Component.php(541): call_user_func()",
    "#3 /var/www/api/vendor/yiisoft/yii2/base/Controller.php(292): yii\base\Component->trigger()",
    "#4 /var/www/api/vendor/yiisoft/yii2/rest/Controller.php(74): yii\base\Controller->afterAction()",
    "#5 /var/www/api/vendor/yiisoft/yii2/base/Controller.php(153): yii\rest\Controller->afterAction()",
    "#6 /var/www/api/vendor/yiisoft/yii2/base/Module.php(455): yii\base\Controller->runAction()",
    "#7 /var/www/api/vendor/yiisoft/yii2/web/Application.php(84): yii\base\Module->runAction()",
    "#8 /var/www/api/vendor/yiisoft/yii2/base/Application.php(375): yii\web\Application->handleRequest()",
    "#9 /var/www/api/application/api/www/index.php(15): yii\base\Application->run()",
    "#10 {main}"
  ]
}

Do I have to extend filsh's Module too? On line 134 to 143 in the Module.php he defines the defaults:
        $defaults = [
            'access_token',
            'authorization_code',
            'client_credentials',
            'client',
            'refresh_token',
            'user_credentials',
            'public_key',
            'jwt_bearer',
            'scope',
        ];

When adding it here I end up adding it to bshaffer's Server.php after that I end up with:
{
  "name": "Exception",
  "message": "storage of type \"federation_credentials\" must implement interface \"api\components\aut\ExternalCredentialsInterface\"",
  "code": 0,
  "type": "InvalidArgumentException",
  "file": "/var/www/api/vendor/bshaffer/oauth2-server-php/src/OAuth2/Server.php",
  "line": 323,
  "stack-trace": [
    "#0 /var/www/api/vendor/bshaffer/oauth2-server-php/src/OAuth2/Server.php(98): OAuth2\Server->addStorage()",
    "#1 /var/www/api/vendor/filsh/yii2-oauth2-server/Module.php(75): OAuth2\Server->__construct()",
    "#2 /var/www/api/vendor/filsh/yii2-oauth2-server/filters/ErrorToExceptionFilter.php(22): filsh\yii2\oauth2server\Module->getServer()",
    "#3 (): filsh\yii2\oauth2server\filters\ErrorToExceptionFilter->afterAction()",
    "#4 /var/www/api/vendor/yiisoft/yii2/base/Component.php(541): call_user_func()",
    "#5 /var/www/api/vendor/yiisoft/yii2/base/Controller.php(292): yii\base\Component->trigger()",
    "#6 /var/www/api/vendor/yiisoft/yii2/rest/Controller.php(74): yii\base\Controller->afterAction()",
    "#7 /var/www/api/vendor/yiisoft/yii2/base/Controller.php(153): yii\rest\Controller->afterAction()",
    "#8 /var/www/api/vendor/yiisoft/yii2/base/Module.php(455): yii\base\Controller->runAction()",
    "#9 /var/www/api/vendor/yiisoft/yii2/web/Application.php(84): yii\base\Module->runAction()",
    "#10 /var/www/api/vendor/yiisoft/yii2/base/Application.php(375): yii\web\Application->handleRequest()",
    "#11 /var/www/api/application/api/www/index.php(15): yii\base\Application->run()",
    "#12 {main}"
  ]
}

Am I on the right track or do I tweak the wrong things?

Hi, @bdart
Little code investigation gives me part of solution :)
If you define new grant type you need to create storage (read "model") for it to manage. So, your configs can be:
		'oauth2' => [
			'class' => 'filsh\yii2\oauth2server\Module',
			'options' => [
				'token_param_name' => 'access_token',
				'access_lifetime' => 3600 * 24
			],
			'storageMap' => [
				'user_credentials' => 'api\models\User',
/* ====> */		'federation_credentials' => 'api\models\FacebookAuthModel',
			],
			'grantTypes' => [
                                 'client_credentials' => [
                                        'class' => 'OAuth2\GrantType\ClientCredentials',
                                        'allow_public_clients' => false
                                    ],
                                    'user_credentials' => [
                                        'class' => 'OAuth2\GrantType\UserCredentials'
                                    ],
                                    'refresh_token' => [
                                        'class' => 'OAuth2\GrantType\RefreshToken',
                                        'always_issue_new_refresh_token' => true
                                    ],
                                    'federation_credentials' => [
                                        'class' => 'components\auth\ExternalCredentials'
                	            ]
 			],
		],

So, FacebookAuthModel can be ActiveRecord and your ExternalCredentials should manipulate with it. Not sure, but, maybe, you need implements from some interfaces for model, don't know, you will see errors

Okay finally I ended up with nearly no errors. But how do I bind the $server variable with the function getServer from filsh's module?
        $server = // how to access the module;
        $request = new \OAuth2\Request([], ["grant_type" => "federation_credentials", "token" => $token]);
        $response = $server->handleTokenRequest($request);

Em, in what file do you want to get access to the server?

I thought in the AuthController that extends the DefaultController? Am I wrong on that?

No, it's good. So, Filsh's DefaultController works with $this->module - to keep it, you may do this:
	public function init()
	{
		$this->module = \Yii::$app->getModule('oauth2');
	}

And than you may use $this->module too.
Or, in needed place use $server = \Yii::$app->getModule('oauth2'); directly

I don't know why but:
    public function init()
    {
        $this->module = \Yii::$app->getModule('oauth2');
    }

with $server = \Yii::$app->getModule('oauth2'); the script does not find the handleTokenRequest method.
Now it is up to to the Request:
$request = new Request([], ["grant_type" => "federation_credentials", 'token' => \Yii::$app->getRequest()->getBodyParams()['signed_request']]);

It returns even it is a POST otherwise it wouldn't fire up - maybe something with the request or?:
{
  "name": "Method Not Allowed",
  "message": "The request method must be POST when requesting an access token",
  "code": 0,
  "status": 405,
  "type": "yii\web\HttpException"
}

Don't afraid to read source code!
Try create request object on this way:
$request = new \OAuth2\Request(
      [],
     ["grant_type" => "federation_credentials", 'token' => \Yii::$app->getRequest()->getBodyParams(['signed_request']],
    [],
    [],
    [],
    ['REQUEST_METHOD' => "post"],
)

Well it works with $request = $this->module->getRequest(); too but my fault was that I tried to focus on the key federation_credentials but my object used signed_request :)
This was the impeding file:
<?php
/**
 * Created by PhpStorm.
 * User: pqart
 * Date: 28/09/15
 * Time: 18:10
 */

namespace api\components\auth;

use OAuth2\GrantType\GrantTypeInterface;
use OAuth2\RequestInterface;
use OAuth2\ResponseInterface;
use OAuth2\ResponseType\AccessTokenInterface;

class ExternalCredentials implements GrantTypeInterface
{
    private $userInfo;

    protected $storage;

    public function __construct(ExternalCredentialsInterface $storage)
    {
        $this->storage = $storage;
    }

    public function getQuerystringIdentifier()
    {
        return 'signed_request';
    }

    public function validateRequest(RequestInterface $request, ResponseInterface $response)
    {
        if (!$request->request("signed_request")) {
            $response->setError(400, 'invalid_request', 'Missing parameters: "username" and "password" required');

            return null;
        }

        if (!$this->storage->checkUserCredentials($request->request("signed_request"))) {
            $response->setError(401, 'invalid_grant', 'Invalid signed request');

            return null;
        }

        $userInfo = $this->storage->getUserDetails($request->request("signed_request"));

        if (empty($userInfo)) {
            $response->setError(400, 'invalid_grant', 'Unable to retrieve user information');

            return null;
        }

        if (!isset($userInfo['user_id'])) {
            throw new \LogicException("you must set the user_id on the array returned by getUserDetails");
        }

        $this->userInfo = $userInfo;

        return true;
    }

    public function getClientId()
    {
        return null;
    }

    public function getUserId()
    {
        return $this->userInfo['user_id'];
    }

    public function getScope()
    {
        return isset($this->userInfo['scope']) ? $this->userInfo['scope'] : null;
    }

    public function createAccessToken(AccessTokenInterface $accessToken, $client_id, $user_id, $scope)
    {
        return $accessToken->createAccessToken($client_id, $user_id, $scope);
    }
}

Great!


Question about game map on Windows/Linux.

Hello.
I run the same bot under the same game map on both Windows and Linux system. But only on Windows can I get the correct results. I found that on Linux, enemy units haven't been observed, which had caused self units to wander aimlessly.
So I want to know what might be the cause of this problem.

Hi @BaiChunhui-9803.
Usually there are no difference between windows and linux from the api pespective.
The only thing I can guess now is that you compiled your bot with latest SC2 Version value. Currently, we have different unit types constants for windows and linux as on windows typically the latest game version is used while on linux we are stick with much older 4.10.2 (or 4.10.0).
Thus first please verify what version was used in both cases. More details about version are here:
https://github.com/cpp-sc2/cpp-sc2/blob/master/docs/building.md#compilation-options
It is hard to tell what exactly happend without source code. So, if the version values are correct, please, provide some sample code to reproduce the problem.

I think I've found the reason. I used DebugKillUnit() and DebugCreateUnit() to reset the game state based on the game state I've observed before by using Observation(). Now I observed the previous game state once the game started. On Windows, enemy units can be fully observed at 0 gameloop. However, on Linux, it seems to take extra time.

There was a bug in the game client which I asked to fix several years ago. It caused similar problem (empty units on first frame). It was definitely fixed on Windows, but could be left unfixed on Linux.

Thanks a lot!


Cursor hide/show

❯ echo -en "\x1b[?25l" # hide cursor
❯ echo -en "\x1b[?25h" # show cursor

This should ideally be part of the same block of cursor commands that changes their shape

Closed in #21


Bug: Auth tokens file not found

On latest master, perform the following:

init
render credentials with any CA
render stack

On 3, this receives
Error: Failed to initialize cluster driver: failed to read/create auth token assets: auth tokens file not found: credentials/tokens.csv

To fix this, please run the following command to create it: kube-aws render token-file

Which is ok apart from the output also says:
3. (Optional) Add more authentication tokens in ./credentials/tokens.csv

I think it's a little bit confusing. The output stating what can be done next probably needs to be improved. Perhaps on render credentials it should be saying render token-file is next, or it should be optional.

@c-knowles Thanks for the report :bow:
@danielfm I've missed in my last review that it does generate an empty token file when kube-aws render is executed but not kube-aws render credentials.
I'm not quite sure what's the best option here but how about making a token file to be optional like @c-knowles suggested?

Thanks for the report.
I'll try a few things and come back here to ask for your feedback.


request_path not working in examples

Using the examples, for example echo.py, request_path does not function and hangs indefinitely. Manually announcing when client is open does allow expected communication, but attempting to find a route with only the client and server running does not function.
Which is also confusing as there's no callback for announces in the client, meaning the announces must be silently handled in the background, something unexpected if working from the example code.

I don't think that's request_path that hangs, although it might look that way. What happens is that the path is requested and the control returns back to while loop and then the client hangs on the input() call.
This patch can better visualize this:
diff --git a/Examples/Echo.py b/Examples/Echo.py
index 529dcec..b1499d9 100644
--- a/Examples/Echo.py
+++ b/Examples/Echo.py
@@ -152,6 +152,7 @@ def client(destination_hexhash, configpath, timeout=None):
     # echo request to the destination specified on the
     # command line.
     while True:
+        RNS.log("Entered the while loop!")
         input()

         # Let's first check if RNS knows a path to the destination.
@@ -211,6 +212,7 @@ def client(destination_hexhash, configpath, timeout=None):
             # user to wait for an announce to arrive.
             RNS.log("Destination is not yet known. Requesting path...")
             RNS.Transport.request_path(destination_hash)
+            RNS.log("Request path has returned")

 # This function is called when our reply destination
 # receives a proof packet.

With the output now clearly showing the fact that we're waiting on the input() call:
python Echo.py 3671bf40132814df485a9ae38744f72b
[2023-02-28 00:01:34] [Notice] Echo client ready, hit enter to send echo request to 3671bf40132814df485a9ae38744f72b (Ctrl-C to quit)
[2023-02-28 00:01:34] [Notice] Entered the while loop!

[2023-02-28 00:01:35] [Notice] Destination is not yet known. Requesting path...
[2023-02-28 00:01:35] [Notice] Request path has returned
[2023-02-28 00:01:35] [Notice] Entered the while loop!

Thank you, the patch helped track down my issue. Since the system doesn't provide any feedback on request_path and the echo request is not resent, it simply seems that there's no response from the request. It seems to still cause issues in my program, but if it works in the example and fails in my program, that's my problem, not the bug tracker's.

I added a bit of log output to make this less confusing.


UnsupportedOperationException with SimpleStorageNetwork 1.7.0 (1.18.2 Forge)

When running my pack with that version of SSN, I get a crash with UnsupportedOperationException: "A mod tried to access the state neighbor table directly."
Reporting here as that's what the log suggested.
MC version: 1.18.2 Forge
Forge version: 40.2.18
FerriteCore version: 4.2.2
Simple Storage Network version: 1.7.0
Log: https://mclo.gs/YQs06Rd
(Note: the issue does not appear with Simple Storage Network version 1.6.2)

You need to update JEI. The problem is this: Simple Storage Network wants a newer JEI version than you have. This causes Forge to stop loading mods, but not completely (in a certain sense). Canary has some code that is incompatible with FerriteCore, that they disable when FerriteCore is detected. BUT the detection does not work if there has been a dependency issue, even though the code still runs. So the code runs, thinks FerriteCore is not present (even though it is in the sense that is relevant here), and crashes because it is incompatible with FC.


Interpretation of 'nearest synthetic neighbor distance' metric

Question
The 'common rows proportion' metric is a measure of leakage of real rows into the synthetic dataset, whereas the 'nearest synthetic neighbor distance' seems to imply that it is the distance between real rows and its closest neighboring rows (or most similar rows) in the synthetic dataset.
But, the word 'leakage' also appears in the 'Values' column of the 'nearest synthetic neighbor distance' metric, making it's meaning difficult to interpret, i.e., is a lower score better or worse ?
Would love to have some clarification on this.

Thank you for reporting this.
Indeed, the docs for "nearest_syn_nigh_distance" are confusing.
The  'common rows proportion' metric is a sanity check, and it tests if any of the training items are identical in the sampled data.
The nearest_syn_nigh_distance trains a KNeighbors model in the synthetic data and reports the closest distance for the training data. These distances are further normalized and then averaged, resulting in the score. If the mean is 0, then all the training data are replicated in the synthetic data. At the same time, if the distances are 1(normalized), it means all the synthetic samples are very far away from the training data. This is not good either.
We will try to clarify this metric and improve the docs.
Thanks!


Duplicate ids for elements referenced with ARIA

Error in spec/features/accessibility_spec.rb

accessibility when visiting bulk actions page complies with WCAG
duplicate-id-aria: IDs used in ARIA and labels must be unique (critical)
https://dequeuniversity.com/rules/axe/4.3/duplicate-id-aria?application=axeAPI
The following 1 node violate this rule:

        Selector: form[action="\/slug-3\/bulk_actions\/add_tags"] > .modal-content > .modal-body > .form-group > input[data-autocomplete-fetched="true"]
        HTML: <input type="text" name="tags" id="tags" value="" class="form-control" data-autocomplete-tag="true" data-autocomplete-url="/slug-3/tags.json" style="display: none;" data-autocomplete-fetched="true">
        Fix any of the following:
        - Document has multiple elements referenced with ARIA with the same id attribute: tags

accessibility when visiting catalog page with search exhibit catalog path complies with WCAG
duplicate-id-aria: IDs used in ARIA and labels must be unique (critical)
https://dequeuniversity.com/rules/axe/4.3/duplicate-id-aria?application=axeAPI
The following 1 node violate this rule:

        Selector: form[action="\/slug-4\/bulk_actions\/add_tags"] > .modal-content > .modal-body > .form-group > input[data-autocomplete-fetched="true"]
        HTML: <input type="text" name="tags" id="tags" value="" class="form-control" data-autocomplete-tag="true" data-autocomplete-url="/slug-4/tags.json" style="display: none;" data-autocomplete-fetched="true">
        Fix any of the following:
        - Document has multiple elements referenced with ARIA with the same id attribute: tags

Blocked pending https://github.com/projectblacklight/spotlight/issues/2788


NER example JSON does not work

I am figuring out how to  import my own annotations. Using this example linked from the import window ("See the UDT JSON format"), I am getting an error:

I see that the issue is probably because of // comments. After fixing that I am running into an issue with question marks, and then with the fact that text, label and other tags are not quoted.
It would be great to have a minimal working example that one can plug-and-play.
After massaging it to make it swallow it, I am not able to find where that example went. When I go to the "Label" page, there still 0 documents there. How can I find the imported sample now?

Also it is not clear what is the difference between "samples" and "examples". Providing annotations with either of them seems to have no effect -- only plain text remains if imported with "samples". But "examples" seem to  be not imported at all.
Is it expected behaviour? Would it be a good idea to document it?

Hey @DSLituiev, sorry for the slow response. The JSON samples were a bit hastily written, they're not valid "JSON" but they are valid javascript.

The "examples" array is also no longer used. These will be updated.

I've made the updates to make this easier to read and copy and paste into the UDT tool.


tcp: switching to the new pool by default

Risk Level: High (roll back first, ask questions later)
Testing:  cloned all unit tests and all integration tests.
Docs Changes: n/a
Release Notes:  inline
Runtime guard: envoy.reloadable_features.new_tcp_connection_pool

Not that I know of, but I defaulted it off because of proximity to the release rather than smoke testing.


updating Verge repo

Description

Related Issue

Motivation and Context

How Has This Been Tested?

Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

updated master to 19-05-19


RFC: Add cached geocoding example & docs

Example Function App w/ Caching
This PR adds an example geocoding function app (using the Census endpoint) while caching the lookups in redis for a week.
Questions

Is a function app always going to be the best way to do this?
Can we think of a way to better integrate this with the notebooks?

Azure Setup Screenshots
The README has more detailed instructions to set up an Azure environment - these screenshots are the not-super-obvious parts involving the config.
Grabbing connection values from Redis

Adding them to the function app

Following on to your arch question: I'm curious about serverless alternatives to Azure Cache for Redis; this bills by the hour, rather than on-demand. We're obviously up against two paradigms - persisted + stateless - but I am curious if there might be a way to access a cache on demand?
I know global objects can potentially persist between function invocations; there are also durable entities which do this. This might be an avenue at least worth comparing, so as to avoid an always-on server?

Durable entities sound like they could be worth a shot - I also ran across Cosmos (https://azure.microsoft.com/en-us/pricing/details/cosmos-db/) which has a 'serverless' option where they price per request rather than instance hours

I looked into Cosmos and durable entities a bit:
Cosmos DB
Cosmos has a serverless option where we'd pay by the 'request unit' - something like $0.30 / million smallish requests. They've got Cassandra and MongoDB drivers and a TTL option to expire keys.
Durable Entities
It looks like we could hack something together, but I ran into a few issues with needing a storage account. Beyond that, it's not obvious how you can expire keys, so it looks like something we'd have to do manually. Also, I'd suspect that it's probably fine, but I haven't been able to find a ton about performance (we'd be using it as a cache layer after all).
All of that said, do we have enough information to work towards an actual implementation?

FYI - the github actions failure is trying to test the DSTP function app from #18

FYI - the github actions failure is trying to test the DSTP function app from #18

Do we think that will get merged soon?  If so, I'd say just let this fail until it gets merged.
However.... green check marks are nice.  We could just disable the java/kotlin checks for now.  An easy way to do that would be:
diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
index d03a693..6f001b5 100644
--- a/.github/workflows/test.yaml
+++ b/.github/workflows/test.yaml
@@ -40,6 +40,7 @@ jobs:
           python -m pytest

   unit-test-java:
+    if: ${{false}}  # disable until at least 1 kotlin function app is available to test
     runs-on: ubuntu-latest
     strategy:
       matrix:

Agreed - I'm fine letting it fail for now (just wanted to let other reviewers know why there's a big red x). I think the big question remaining is using redis vs cosmos and how far we want to go for the initial spike

Yeah my thoughts here are that we should merge this current ticket and create a separate spike on the tradeoffs of the other potential options; meanwhile once we decide we can have another to handle adding this to terraform?


Multiple end point support

Hi Team,
Does DAF 5 support multiple service end point support or if I had registered a service end point by mistake then what all the option for me to correct it?

Hi Team,
Did I miss anything in my above issue to provide?

You did not miss anything.
I think the current functionality is to pick the first matching endpoint from the DID document.
The same is generally true when using keys from the DID document.
This is not meant to be a complete solution, but an MVP.
Feel free to propose a better solution if one is at hand.
Please reopen if this is still an issue.

2+5
....-
0
++++++++++++++++++
-.
300112


Update trace exporter examples to use new classes

Since the exporters classes were renamed (not released), we should update the examples to use the new one after 0.12.0 is released.

Should be fixed in https://github.com/census-instrumentation/opencensus-java/pull/1008.


Fixed an issue where git.getCommitsThatAddFiles is undefined

Fixes #532

I've taken another look at the changesets that lead to that broken release - I'm not entirely sure why this has happened as there was a minor bump targeting @changesets/cli. This might be expected as per the current logic but I'd like to investigate this - gonna handle your PR after that (should take me a couple of days max).


Explicitly enable std feature for indexmap

In some environments, indexmap's detection of the std crate fails, causing sycamore builds to fail (IndexSet has a variable number of type arguments depending on this detection).
This pull request sets indexmap's std feature flag explicitly, negating the need for automatic detection.
See also:

indexmap issue
similar issue in google/cargo-raze
indexmap's has_std causing issues with intellij

Thanks for contributing!